Porovnajte rozsahy v programe Excel VBA - ľahké makrá programu Excel

Obsah

Nižšie sa pozrieme na program v Excel VBA že porovnáva náhodne vybrané rozsahy a zvýrazňuje bunky, ktoré sú jedinečné. Ak sa v oblastiach ešte nevyznáte, dôrazne vám odporúčame, aby ste si najskôr prečítali tento príklad.

Situácia:

Poznámka: jedinou jedinečnou hodnotou v tomto prípade je 3, pretože všetky ostatné hodnoty sa nachádzajú v najmenej jednej ďalšej oblasti. Ak chcete vybrať rozsah („B2: B7, D3: E6, D8: E9“), podržte kláves Ctrl a vyberte každú oblasť.

Na pracovný hárok umiestnite príkazové tlačidlo a pridajte nasledujúce riadky kódu:

1. Najprv deklarujeme štyri objekty Range a dve premenné 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 vybratým rozsahom.

Nastaviť rangeToUse = výber

3. Pridajte riadok, ktorým sa zmení farba pozadia všetkých buniek, na hodnotu „Bez výplne“. Pridajte tiež riadok, ktorý odstráni orámovanie všetkých buniek.

Cells.Interior.ColorIndex = 0
Cells.Borders.LineStyle = xlŽiadne

4. Informujte používateľa, keď si vyberie iba jednu oblasť.

Ak Selection.Areas.Count <= 1 Potom
MsgBox "Vyberte viac ako jednu oblasť."
Inak
Koniec Ak

Nasledujúce riadky kódu (na 5, 6 a 7) je potrebné pridať medzi Else a End If.

5. Vyfarbite bunky vybraných oblastí.

rangeToUse.Interior.ColorIndex = 38

6. Ohraničte každú oblasť.

Pre každú jednotlivú oblasť v rozsahuToUse.Areas
singleArea.BorderAround ColorIndex: = 1, hmotnosť: = xlThin
Nasledujúca singleArea

7. Zvyšok tohto programu vyzerá nasledovne.

Pre i = 1 To rangeToUse.Areas.Count
Pre j = i + 1 do rangeToUse.Areas.Count
Pre každú bunku1 v rozsahuToUse.Areas (i)
Pre každú bunku2 v rozsahuToUse.Areas (j)
Ak cell1.Value = cell2.Value Then
cell1.Interior.ColorIndex = 0
cell2.Interior.ColorIndex = 0
Koniec Ak
Ďalšia bunka 2
Ďalšia bunka 1
Ďalej j
Ďalej i

Vysvetlenie: Možno to vyzerá trochu zdrvujúco, ale nie je to také ťažké. rangeToUse.Areas.Count sa rovná 3, takže prvé dva riadky kódu sa zmenšia na Pre i = 1 až 3 a Pre j = i + 1 až 3. Pre i = 1, j = 2, Excel VBA porovnáva všetky hodnoty prvej oblasti so všetkými hodnotami druhej oblasti. Pre i = 1, j = 3, Excel VBA porovnáva všetky hodnoty prvej oblasti so všetkými hodnotami tretej oblasti. Pre i = 2, j = 3, Excel VBA porovnáva všetky hodnoty druhej oblasti so všetkými hodnotami tretej oblasti. Ak sú hodnoty rovnaké, nastaví farbu pozadia oboch buniek na hodnotu „Bez výplne“, pretože nie sú jedinečné.

Výsledok po kliknutí na príkazové tlačidlo na hárku:

Vám pomôže rozvoju miesta, zdieľať stránku s priateľmi

wave wave wave wave wave