Comparați intervalele în Excel VBA - Macro Excel ușor

Cuprins

Mai jos vom analiza un program în Excel VBA acea compară ales la intamplare intervale și evidențiază celulele care sunt unice. Dacă încă nu sunteți familiarizați cu domeniile, vă recomandăm să citiți mai întâi acest exemplu.

Situatie:

Notă: singura valoare unică din acest exemplu este 3, deoarece toate celelalte valori apar în cel puțin încă o zonă. Pentru a selecta Range („B2: B7, D3: E6, D8: E9”), țineți apăsat Ctrl și selectați fiecare zonă.

Plasați un buton de comandă pe foaia de lucru și adăugați următoarele linii de cod:

1. În primul rând, declarăm patru obiecte Range și două variabile de tip Integer.

Dim range To Use as Range, singleArea As Range, cell1 As Range, cell2 As Range, i As Integer, j As Integer

2. Inițializăm obiectul Range rangeToUse cu intervalul selectat.

Set rangeToUse = Selecție

3. Adăugați linia care schimbă culoarea de fundal a tuturor celulelor la „Fără umplere”. Adăugați, de asemenea, linia care elimină marginile tuturor celulelor.

Cells.Interior.ColorIndex = 0
Cells.Borders.LineStyle = xlNone

4. Informați utilizatorul când selectează o singură zonă.

Dacă Selection.Areas.Count <= 1 Atunci
MsgBox "Vă rugăm să selectați mai multe zone."
Altfel
End If

Următoarele linii de cod (la 5, 6 și 7) trebuie adăugate între Else și End If.

5. Colorează celulele zonelor selectate.

rangeToUse.Interior.ColorIndex = 38

6. Învecinează fiecare zonă.

Pentru fiecare singleArea În rangeToUse.Areas
singleArea.BorderAround ColorIndex: = 1, Greutate: = xlThin
Următorul single Zone

7. Restul acestui program arată după cum urmează.

Pentru i = 1 To rangeToUse.Areas.Count
Pentru j = i + 1 To rangeToUse.Areas.Count
Pentru fiecare celulă 1 În domeniul de utilizare.Arii (i)
Pentru fiecare celulă2 În rangeToUse.Areas (j)
Dacă celula1.Value = celula2.Valoare Atunci
cell1.Interior.ColorIndex = 0
cell2.Interior.ColorIndex = 0
End If
Următoarea celulă2
Următoarea celulă1
Următorul j
Apoi eu

Explicație: acest lucru poate părea puțin copleșitor, dar nu este atât de dificil. rangeToUse.Areas.Count este egal cu 3, astfel încât primele două linii de cod se reduc la Pentru i = 1 la 3 și Pentru j = i + 1 la 3. Pentru i = 1, j = 2, Excel VBA compară toate valorile primei zone cu toate valorile zonei a doua. Pentru i = 1, j = 3, Excel VBA compară toate valorile primei zone cu toate valorile celei de-a treia zone. Pentru i = 2, j = 3, Excel VBA compară toate valorile celei de-a doua zone cu toate valorile celei de-a treia zone. Dacă valorile sunt aceleași, setează culoarea de fundal a ambelor celule la „Fără umplere”, deoarece acestea nu sunt unice.

Rezultatul când faceți clic pe butonul de comandă de pe foaie:

Vei ajuta la dezvoltarea site-ului, partajarea pagina cu prietenii

wave wave wave wave wave