Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem 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 :-)

Předmět Autor Datum
Doporučuji použít nahrávání makra, je to bezva pomůcka. Nahrál bych tím zhruba tento postup : - zapn…
Palevel 30.08.2012 12:18
Palevel
Na to nepotřebuješ makro, stačí použít funkci POZVYHLEDAT. Ta vrátí relativní pozici hledaného prvku… poslední
MachR55 30.08.2012 12:50
MachR55

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:

=POZVYHLEDAT(C2;List1!$F:$F;0)

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ší).

Zpět do poradny Odpovědět na původní otázku Nahoru