jak porovnat dva řádky v Excelu pomocí VBA
porovnání dat řádek po řádku ručně může být zdlouhavý proces, pokud se provádí ručně. Ukážeme vám, jak porovnat dva řádky v Excelu pomocí VBA a automatizovat tento proces.
VBA má vestavěnou funkci zvanou StrComp, která může porovnávat dva řetězce. Tato funkce vrací celé číslo na základě výsledku srovnání. Nula ” 0 ” znamená perfektní shodu a níže uvedený příklad kódu zvýrazní buňku, pokud výsledek není roven “0”.
funkce StrComp získá 3 argumenty: první 2 argumenty jsou řetězce, které mají být porovnány, a poslední je typ srovnání (volitelné). Je-li vynechán, volba porovnat nastavení určuje typ srovnání. Níže jsou uvedeny všechny Dostupné možnosti:
- vbUseCompareOption: provede srovnání pomocí nastavení příkazu volby porovnat.
- vbBinaryCompare: provede binární srovnání. Malá a velká písmena.
- vbTextCompare: provede textové srovnání. Není velká a malá písmena.
- vbDatabaseCompare: Provede srovnání na základě informací ve vaší databázi. Pouze Microsoft Access.
kód vyžaduje, aby uživatel vybral řádky v jednom rozsahu. Vybraný rozsah je přiřazen proměnné rozsahu bothrows a každá buňka v tomto rozsahu je porovnána sloupec po sloupci. Pomocí příkazu s nemusíme opakovat obě řádky pro každý řádek, a pro … další smyčka je, jak můžeme zkontrolovat každou buňku.
zvýraznění
po získání rozsahu můžete použít vlastnost ColorIndex k nastavení tohoto rozsahu barvy. Zde jsou některá čísla indexů pro barvy:
- 3: Červená
- 5: Modrá
- 6: Žlutá
- 0: Bez Výplně
za Prvé, budete muset přidat modul do sešitu nebo add-in file. Zkopírujte a vložte kód do modulu a spusťte jej. Hlavní výhodou metody modulu je, že umožňuje uložit kód do souboru, takže jej lze později znovu použít. Podprogramy v modulech lze navíc použít pomocí ikon v menu nebo klávesových zkratek. Nezapomeňte uložit soubor ve formátu XLSM nebo XLAM pro uložení kódu VBA.
ukázkový kód pro zvýraznění
Sub HighlightRowDifferences() Dim bothrows As Range, i As Integer Set bothrows = Selection With bothrows For i = 1 To .Columns.Count If Not StrComp(.Cells(1, i), .Cells(2, i), vbBinaryCompare) = 0 Then Range(.Cells(1, i), .Cells(2, i)).Interior.ColorIndex = 6 End If Next i End WithEnd Sub