
Excel makro
Dobrý den,
potřeboval bych trochu pomoci s makrem do Excelu, které poměrně rychle potřebuji, bohužel jsem však nikdy makra netvořil.
Co potřebuji: mám 2 listy s nějakými daty, což je celkem jedno, důležité je, že v každém je jeden sloupec s emaily. Já oba sloupce pořebuji porovnat, a pokud tam bude nějaká shoda v emailu, tak v takovém případě vymazat celý řádek z listu2.
Naznačím malým algoritmem, který mě napadl, bohužel nevím, jak ho zapsat do excelu.
Sub nahrada()
For I = 0 To "počet řádků listu1"
For J = 0 To "počet řádků list2"
IF (F[I] == List2.C[I+1]) // buňka sloupec F řádek I = buňka sloupec C řádek I+1
smaž celý řádek List2.C[I+1]
Next J
Next I
End Sub
I+1 je tam jen z toho důvodu, že v druhém listu začíná seznam o řádek níže.
Díky moc, snad jste mě pochopili
Doporučuji použít nahrávání makra, je to bezva pomůcka.
Nahrál bych tím zhruba tento postup :
- zapnout relativní odkaz
- posunout o jendu buňku níž
- vypnout relativní odkaz
- přepnout na List2
- označit sloupec s e-maily
- stiknout F3 a nastavit hledání jen v tom sloupci
- do hledání napsat cokoliv a vyhledat
- zapnout relativní odkaz
- ozačit celý řádek nalezeného výrazu
- smazat řádek
- vypnout relativní odkaz
- skočit na List1
po ukončneí nahrávání uvidíte tento postup ve VBA,
pak už stačí přidat podmínky, proměnné pro vyhledávání a je to
mám pocit že bude stačit jeden cyklus, to kolik je položek na listu 2 nás vlastně nezajímá, prohledávání bude hledat v celém sloupci a shodu vymaže
možná pokud bude v Listu2 víc duplicit tak bych výsledné makro spustil víckrát
Na to nepotřebuješ makro, stačí použít funkci POZVYHLEDAT. Ta vrátí relativní pozici hledaného prvku v požadované matici.
Předpokládejme, že máš:
- "List1" sloupec "F" obsahuje emaily
- "List2" sloupec "C" obsahuje emaily a ty chceš smazat z tohoto seznamu duplicitní, které se vyskytují na Listu1.
Takže na List2 do buňky D2 (nebo do jiného sloupce, který máš volný) napiš vzorec:
Tento vzorec zkopíruj do dalších buněk tohoto sloupce. Emaily, které jsou obsaženy na Listu1, budou mít v tomto sloupci pořadové číslo řádku. Emaily, které v Listu1 neexistují, tam budou mít výsledek "#N/A". Tak snadno odlišíš duplicitní emaily a můžeš je z Listu2 odstranit.
A na závěr rada - samotné vzorce zvládnou v Excelu obrovské množství práce (a navíc hodně rychle), nepotřebuješ hned vše řešit přes makro (které je navíc řádově pomalejší).