Stránka 1 z 1
Excel-Odstranění duplicitních hodnot Vyřešeno
Napsal: 19 dub 2009 00:18
od Dieesels
Dobrý den,
jsem tady opět z dotazem. Jakým způsobem (viz. obrázek), lze vymazat automaticky data, které jsou stejná(zeleně označeno). Konkrétně na příkladu, když bunky ve sloupcích "A","B","C" což je Jmeno, Pořadí, Hodnota jsou stejné, dojde automaticky k vymazání stejných hodnot (bunka A7:C7), hodnoty A4:C4 zůstanou.Následně posunutí následující hodnoty na místo té stejné. Ale pokud jsou stejné hodnoty pouze ve dvou bunkách (červeně označeno), tak k vymazání nedojde.
Zkoušel jsem to pomocí tohoto makra:
Kód: Vybrat vše
Sub del_obsah()
Sheets("List1").Select 'vyber List1
Range("A2:C1000").ClearContents
End Sub
plus funkce if, ale nějak se mi to nepodařilo zprovoznit.
Re: Excel-Odstranění stejných hodnot
Napsal: 19 dub 2009 09:40
od mike007
Pro vyhledání duplicit můžeš použít i vzorec : =SOUČIN.SKALÁRNÍ(($A$2:A2=A2)*($B$2:B2=B2))*($C$2:C2=C2). Ten zadej do druhého řádku a roztáhni až dolu. Poté stačí vyfiltrovat hodnotu větší jak 1 a ty řádky smazat - jedná se o duplicity. Viz příloha.
Duplicit se též můžeš zbavit pomocí rozšířeného filtru.
Re: Excel-Odstranění stejných hodnot
Napsal: 19 dub 2009 12:56
od Dieesels
Nakonec jsem to udělal pomocí vba, které sice funguje, jen to má jednu malou vadu na kráse a to, že při stisknutí tlačítka se sice vymažou duplicitní hodnoty, ale posune se také jmeno, pořadí, hodnota o jednu bunku. Jak na to?..viz příloha
Re: Excel-Odstranění stejných hodnot
Napsal: 19 dub 2009 13:15
od mike007
Namísto .delete dej Columns(1).Delete
Re: Excel-Odstranění stejných hodnot
Napsal: 19 dub 2009 13:25
od Dieesels
Paráda, děkuji...

Re: Excel-Odstranění duplicitních hodnot
Napsal: 19 dub 2009 15:33
od Dieesels
Ještě poslední dotaz, jak to udělat, aby se vymazali duplicitní hodnoty na listu2 a ne na listu1.
Re: Excel-Odstranění duplicitních hodnot
Napsal: 19 dub 2009 17:30
od navstevnik
takto:
Kód: Vybrat vše
Sub DelDups()
Dim rng As Range
Application.ScreenUpdating = False
With Worksheets("list2") ' jmeno listu
.Columns(1).Insert
Set rng = Intersect(.UsedRange, .Range("b:b")).Offset(0, -1)
With rng
.FormulaR1C1 = "=IF(SUMPRODUCT((R2C2:RC[1]=RC[1])*(R2C3:RC[2]=RC[2])*(R2C4:RC[3]=RC[3])*(R2C5:RC[4]=RC[4])*(R2C6:RC[5]=RC[5]))>1,"""",1)"
On Error Resume Next
.SpecialCells(xlCellTypeFormulas, 2).EntireRow.Delete
On Error GoTo 0
Columns(1).Delete
End With
End With
End Sub
Re: Excel-Odstranění duplicitních hodnot
Napsal: 19 dub 2009 20:50
od Dieesels
Díky, ale když použiji to upravené makro, sice to vymaže duplicitní řádky, ale data se posunou o jeden sloupec, na místo volného místa se zobrazí jedničky (skalární součin), což patří k makru, ale nemělo by to zobrazovat. Viz obrázek
Ps: Když jsem krokoval upravené vba, tak se 1 také ukázaly, ale pak zmizely a bylo vše jak má.
Shrnutí: Na listu1 jsem vložil ovládací prvek tlačítko, přiřadil jsem mu vba, na listu2 se nachází data. Když jsem to krokoval, vše proběhlo správně, ale když jsem použil tlačítko umístěné na listu1, seklo se to, viz obrázek.
Re: Excel-Odstranění duplicitních hodnot
Napsal: 19 dub 2009 22:37
od navstevnik
Pri kopirovani procedury do odpovedi (odstranoval jsem zbytecnosti) doslo ke ztrate "." pred prikazem Columns(1).Delete, v dusledku pak byl odstranen sloupec na aktivnim listu, tedy listu s tlacitkem.
Oprav si v procedure:
Kód: Vybrat vše
....
On Error GoTo 0
.Columns(1).Delete
End With
End With
End Sub
PS: Nepouzivej ovladaci prvky z panelu nastroju Formulare, jsou pouze z duvodu kompatibility se starsimi verzemi Excelu. Pouzivel ovladaci prvky z panelu nastroju Ovladaci prvky, lze programove ovladat jejich vlastnosti a je k dispozici sada udalostnich procedur zefektivnujicich procedury.
Re: Excel-Odstranění duplicitních hodnot
Napsal: 19 dub 2009 22:56
od Dieesels
Paráda, opravdu díky. Také jsem zkoušel porovnávat původní vzorec z novým, ale ta tečka mi unikla. Děkuji...