Excel 2007-uprava kodu pro vyhledani a kopirovani duplicit

Programy pro práci v kanceláři (Word, Excel, Access…=>Office)

Moderátor: Mods_senior

David7
nováček
Příspěvky: 9
Registrován: duben 11
Pohlaví: Muž
Stav:
Offline

Excel 2007-uprava kodu pro vyhledani a kopirovani duplicit

Příspěvekod David7 » 06 dub 2011 11:51

Zdravim,
ve VBA jsem uplny zacatecnik a kod jsem skladal podle jinych uverejnenych kodu.

Makro mi funguje, ale pri velkem mnozsti radku je zdlouhave. Jakym zpusobem je mozno zminene makro upravit nebo zmenit tak, aby se zrychlilo?

Ve sloupci B a C vyhledavam duplicitni hodnoty (hodnoty jsou jedinecne) a tyto hodnoty vkladam do prislusnych radku sloupce D podle radku B - vysledkem ve sloupci D jsou duplicitni hodnoty a prazdne bunky. Sloupec D je pomocny, protoze jsem nevedel, jak jinak to udelat. Tento sloupec vubec nepotrebuji.
Pote provedu kopii hodnot ze sloupce D do sloupce H za sebe s vynechanim prazdnych bunek.

Dekuji za pripadne rady ci upravy.

Kód: Vybrat vše

Option Explicit

Sub kopie_dupl_hodnot2()

  'promenne pro vyhledani duplicitnich hodnot
  Dim data1 As Variant, data2 As Variant, x As Variant, y As Variant

  'promenne pro zjisteni polohy posledni bunky duplicitnich hodnot
  Dim WS As Worksheet
  Dim LastCell As Range
  Dim LastCellRowNumber As Long

  'promenne pro kopii a serazeni duplicitnich hodnot
  Dim i, j
  Dim kopirovat_co As Range, kopirovat_kam As Range
 
  Application.ScreenUpdating = False
 
  Sheets("list1").Activate
 
  Set WS = ActiveSheet
 
  With WS
    .Columns("D:D").ClearContents
    .Columns("H:H").ClearContents
    .Cells(3, 4) = "duplicita"
    .Cells(3, 8) = "datum"
  End With
 
    ' Nastavavení hodnoty data2 na rozsah pro porovnávání výběru.
    Set data2 = ActiveSheet.Range("C4", [C50000].End(xlUp))

    ' Projít všechny buňky data1 a porovnat s každou
    ' buňkou v data2.
    Set data1 = ActiveSheet.Range("B4", [B50000].End(xlUp))
   
    'zapsani duplicitnich hodnot do sloupce D
    'duplicitni hodnoty jsou vkladany do prislusneho radku do sloupce D podle sloupce B
    'pokud ve sloupci B neni duplicitni hodnota, do prislusneho radku ve sloupci D se vlozi prazdna bunka
    For Each x In data1
        For Each y In data2
            If x = y Then x.Offset(0, 2) = x
        Next y
    Next x
 
  'nastaveni kopirovani duplicitnich hodnot s vynechanim prazdnych bunek
  Set kopirovat_co = ActiveSheet.Range("D4")
  Set kopirovat_kam = ActiveSheet.Range("H4")
   
  'cislo posledniho radku ve sloupci D
  With WS
    Set LastCell = .Cells(.Rows.Count, "D").End(xlUp)
    LastCellRowNumber = LastCell.Row
  End With
 
  'kopie duplicitnich hodnot za sebe
  'ze sloupce D do sloupce H kopiruji jen bunky, ktere nejsou prazdne
  For i = 1 To LastCellRowNumber - 3
    If kopirovat_co.Offset(i - 1, 0).Value <> Empty Then
    kopirovat_kam.Offset(j, 0) = kopirovat_co.Offset(i - 1, 0).Value
    j = j + 1
    End If
  Next i
   
  Application.ScreenUpdating = True
 
End Sub

Přílohy
srovnani datumy_2.xlsm
(105.07 KiB) Staženo 35 x

Reklama
  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • ComboBox v Excelu kopírování Příloha(y)
    od LukM » 19 říj 2024 14:03 » v Kancelářské balíky
    0
    3030
    od LukM Zobrazit poslední příspěvek
    19 říj 2024 14:03
  • Úprava pc pro Kingdome Come Deliverance 2
    od barryk10cz » 07 led 2025 17:00 » v Rady s výběrem hw a sestavením PC
    13
    4274
    od Hangli Zobrazit poslední příspěvek
    09 led 2025 22:42
  • bitmapová grafika - úprava fotografií, retuše, filtry.
    od zuzana3 » 10 kvě 2025 11:32 » v Design a grafické editory
    2
    5631
    od zuzana3 Zobrazit poslední příspěvek
    10 kvě 2025 17:31
  • Přechod z Excel 21 na Excel 24
    od Snekment » 29 led 2025 13:46 » v Kancelářské balíky
    2
    12867
    od Snekment Zobrazit poslední příspěvek
    29 led 2025 15:05
  • Pohoda a excel Příloha(y)
    od brownwld » 06 kvě 2025 17:28 » v Kancelářské balíky
    1
    6130
    od atari Zobrazit poslední příspěvek
    07 kvě 2025 09:41

Zpět na “Kancelářské balíky”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 2 hosti