Excel - Duplicita dat

Kostlivec11.08.2011 19:40 Nahlásit
Hezký večer,

nezná prosím vás někdo z vás způsob, jak rychle najít duplicitní data v buňkách v Excelu 2000?

Docela to spěchá =) Nerad bych nad tím strávil celou noc =)

Děkuji velice

Odpovědi

Přidat odpověď ▾

Diskuze

Anonym25439011.08.2011 21:57 Nahlásit
Viděl bych několik možností, záleží na konkrétních podmínkách. Co třeba filtrace v kombinaci s funkcí Četnosti nebo CountIf, nebo podmíněné formátování?
Anonym27793011.08.2011 22:39 Nahlásit
Podmíněné formátování mi asi moc nepomůže... Mám seznam lidí, jméno (sloupec A), příjmení (B), e-mail (C) a potřebuji vyřadit duplicitní e-maily...
Anonym27797612.08.2011 09:37 Nahlásit
Kolik jich máte? Nestačilo by setřídit řádky abecedně podle mailu a projet to očima?
Anonym26258112.08.2011 10:07 Nahlásit
CTRL+F - vyhledávání. Po vyplnění prvního e-mailu postupně ukáže duplicitní. Pokud e-mail duplicitu nemá, neukáže nic. Není to žádná rychlost, ale pomůže.
Mezek12.08.2011 12:49 Nahlásit
Dalo by se napsat makro. Celá tabulka by se označila jako pole. Makro by načetlo první řádek a prohledalo by zbytek tabulky a shodné položky by vymazalo. Pokračovalo by dalším řádkem a tak dál až do konce tabulky.
Mezek12.08.2011 13:43 Nahlásit
Makro by mohlo vypadat třeba takhle:
Sub A()
Set Pole = Range("A1").Resize(220, 3)
For Z = 1 To 220
XX = "C" & Z
Y = Range(XX).Value
For x = Z + 1 To 220
YY = "C" & x
If Range(YY).Value <> "" Then
If Y = Range(YY).Value Then
YX = "A" & x
Range(YX).Resize(1, 3).Select
Selection.Clear
End If
End If
Next x
Next Z
End Sub
V tabulce budou potom prázdné řádky. Makro zpracovává 220 řádků počínaje řádkem 1. Nastavuje se pomocí For Z = 1 To 220.
Kostlivec12.08.2011 19:12 Nahlásit
Děkuji, Mezku, ale s makry nemám žádnou zkušenost, a než bych to makro napsal, bude tabulka zkontrolovaná. Je tam cca 2000 e-mailů.
Nicméně to vyzkouším doma a dám vědět =)
Mezek13.08.2011 04:38 Nahlásit
Včera jsem to psal v časové tísní, takže upřesnění:

Sub A()
For Z = 1 To 1000
XX = "C" & Z
Y = Range(XX).Value
If Y <> "" Then
For x = Z + 1 To 1000
YY = "C" & x
If Range(YY).Value <> "" Then
If Y = Range(YY).Value Then
YX = "A" & x
Range(YX).Resize(1, 3).Select
Selection.Clear
End If
End If
Next x
End If
Next Z
Range("A1:C828").Select
Range("C828").Activate
ActiveWorkbook.Worksheets("List1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("List1").Sort.SortFields.Add Key:=Range("C1:C1000") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("List1").Sort
.SetRange Range("A1:C1000")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub

Takhle je to komplet. Stačí zkopírovat do editoru VBA. Ten se spustí stiskem Alt+F11. Po vybrání List1 v levém sloupci se vpravo otevře okno, kam se vloží zkopírovaný text. Pokud poslední řádek tabulky nebude 1000, nahradí se všude v textu makra číslo 1000 číslem posledního řádku. Kurzor se nastaví před Sub A() a makro se spustí klávesou F5 přímo v editoru. Doporučuju ještě před spuštěním makra sešit uložit. V případě problémů ve výsledku je pak možné sešit zavřít bez uložení.
Mezek13.08.2011 08:38 Nahlásit
Ještě se vloudila chybička:
Range("A1:C828").Select
Range("C828").Activate má být
Range("A1:C1000").Select
Range("C1000").Activate
Kostlivec13.08.2011 12:53 Nahlásit
Děkuji, Mezku. Tvůj kód jsem zkopíroval do VBA, ale po spuštění mi to píše Compiled Error: Expected End Sub...
Mezek13.08.2011 13:33 Nahlásit
Chybí mu na konci end sub. Buď vypadlo na konci, nebo se do makra vloudilo někde další Sub.
Mezek13.08.2011 16:23 Nahlásit
Navrhnul bych ti dvě možnosti: V profilu mám mail. Buď mi pošli celý soubor, nebo mailovou adresu. Když mi mailem pošleš soubor, tak ti tam dám makro a zpracuju. Když mi pošleš mailovou adresu a číslo posledního řádku, pošlu ti prázdný sešit s odladěným makrem. Na list 1 si přes schránku nakopiíruješ data a makro ti to zpracuje.
Přidat komentář do diskuze ▾