Porovnat rozsahy v aplikaci Excel VBA - snadná makra aplikace Excel

Obsah

Níže se podíváme na program v Excel VBA že srovnává náhodně vybráno rozsahy a zvýrazňuje buňky, které jsou jedinečné. Pokud se v oblastech ještě nevyznáte, vřele vám doporučujeme přečíst si nejprve tento příklad.

Situace:

Poznámka: jedinou jedinečnou hodnotou v tomto příkladu jsou 3, protože všechny ostatní hodnoty se vyskytují alespoň v jedné další oblasti. Chcete -li vybrat rozsah („B2: B7, D3: E6, D8: E9“), podržte Ctrl a vyberte každou oblast.

Umístěte na list příkazové tlačítko a přidejte následující řádky kódu:

1. Nejprve deklarujeme čtyři objekty Range a dvě proměnné typu Integer.

Dim rangeToUse As Range, singleArea As Range, cell1 As Range, cell2 As Range, i As Integer, j As Integer

2. Inicializujeme objekt Range rangeToUse s vybraným rozsahem.

Nastavit rangeToUse = výběr

3. Přidejte řádek, který mění barvu pozadí všech buněk, na „Bez výplně“. Přidejte také řádek, který odstraní ohraničení všech buněk.

Cells.Interior.ColorIndex = 0
Cells.Borders.LineStyle = xlŽádné

4. Informujte uživatele, když si vybere pouze jednu oblast.

Pokud Selection.Areas.Count <= 1 Potom
MsgBox "Vyberte více než jednu oblast."
Jiný
Konec If

Mezi řádky Else a End If je nutné přidat další řádky kódu (na 5, 6 a 7).

5. Vybarvěte buňky vybraných oblastí.

rangeToUse.Interior.ColorIndex = 38

6. Ohraničte každou oblast.

Pro každou jednotlivou oblast v dosahuToUse.Areas
singleArea.BorderAround ColorIndex: = 1, hmotnost: = xlThin
Další singlArea

7. Zbytek tohoto programu vypadá následovně.

Pro i = 1 To rangeToUse.Areas.Count
Pro j = i + 1 To rangeToUse.Areas.Count
Pro každou buňku1 v dosahuToUse.Areas (i)
Pro každou buňku2 v rangeToUse.Areas (j)
Pokud cell1.Value = cell2.Value Then
cell1.Interior.ColorIndex = 0
cell2.Interior.ColorIndex = 0
Konec If
Další buňka 2
Další buňka 1
Další j
Příště já

Vysvětlení: Může to vypadat trochu zdrcující, ale není to tak obtížné. rangeToUse.Areas.Count se rovná 3, takže první dva řádky kódu se zmenší na Pro i = 1 až 3 a Pro j = i + 1 až 3. Pro i = 1, j = 2, Excel VBA porovnává všechny hodnoty první oblasti se všemi hodnotami druhé oblasti. Pro i = 1, j = 3, Excel VBA porovnává všechny hodnoty první oblasti se všemi hodnotami třetí oblasti. Pro i = 2, j = 3, Excel VBA porovnává všechny hodnoty druhé oblasti se všemi hodnotami třetí oblasti. Pokud jsou hodnoty stejné, nastaví barvu pozadí obou buněk na „Bez výplně“, protože nejsou jedinečné.

Výsledek po kliknutí na příkazové tlačítko na listu:

Vám pomůže rozvoji místa, sdílet stránku s přáteli

wave wave wave wave wave