Sammenlign områder i Excel VBA - Enkle Excel -makroer

Innholdsfortegnelse

Nedenfor ser vi på et program i Excel VBA at sammenligner tilfeldig valgt områder og fremhever celler som er unike. Hvis du ikke er kjent med områder ennå, anbefaler vi deg å lese dette eksemplet først.

Situasjon:

Merk: den eneste unike verdien i dette eksemplet er 3 siden alle andre verdier forekommer i minst ett område til. For å velge Range ("B2: B7, D3: E6, D8: E9"), hold nede Ctrl og velg hvert område.

Plasser en kommandoknapp på regnearket og legg til følgende kodelinjer:

1. Først erklærer vi fire Range -objekter og to variabler av typen Heltall.

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

2. Vi initialiserer Range -objektet rangeToUse med det valgte området.

Angi rangeToUse = Valg

3. Legg til linjen som endrer bakgrunnsfargen på alle cellene til "Ingen fylling". Legg også til linjen som fjerner kantene til alle cellene.

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

4. Informer brukeren når han eller hun bare velger ett område.

Hvis Selection.Areas.Count <= 1 Da
MsgBox "Velg mer enn ett område."
Ellers
Slutt om

De neste kodelinjene (ved 5, 6 og 7) må legges til mellom Else og End If.

5. Farg cellene i de valgte områdene.

rangeToUse.Interior.ColorIndex = 38

6. Grense hvert område.

For hver enkelt Area In rangeToUse.Areas
singleArea.BorderAround ColorIndex: = 1, Vekt: = xlThin
Neste singelområde

7. Resten av dette programmet ser slik ut.

For i = 1 Til rangeToUse.Areas.Count
For j = i + 1 Til rangeToUse.Areas.Count
For hver celle1 In rangeToUse.Areas (i)
For hver celle2 In rangeToUse.Areas (j)
Hvis cell1.Value = cell2.Value Da
cell1.Interior.ColorIndex = 0
cell2.Interior.ColorIndex = 0
Slutt om
Neste celle2
Neste celle 1
Neste j
Neste jeg

Forklaring: Dette kan se litt overveldende ut, men det er ikke så vanskelig. rangeToUse.Areas.Count er lik 3, så de to første kodelinjene reduseres til For i = 1 til 3 og For j = i + 1 til 3. For i = 1, j = 2, sammenligner Excel VBA alle verdier i det første området med alle verdier for det andre området. For i = 1, j = 3, Excel VBA sammenligner alle verdier for det første området med alle verdier for det tredje området. For i = 2, j = 3, Excel VBA sammenligner alle verdier i det andre området med alle verdier i det tredje området. Hvis verdiene er de samme, setter den bakgrunnsfargen til begge cellene til "Ingen fylling", fordi de ikke er unike.

Resultat når du klikker på kommandoknappen på arket:

Du vil bidra til utvikling av området, dele siden med vennene dine

wave wave wave wave wave