Jämför intervall i Excel VBA - Enkla Excel -makron

Innehållsförteckning

Nedan kommer vi att titta på ett program i Excel VBA det där jämför slumpmässigt utvald intervall och markerar celler som är unika. Om du inte är bekant med områden ännu rekommenderar vi starkt att du läser detta exempel först.

Situation:

Obs! Det enda unika värdet i detta exempel är 3 eftersom alla andra värden förekommer i minst ett område till. Om du vill välja intervall ("B2: B7, D3: E6, D8: E9") håller du ned Ctrl och väljer varje område.

Placera en kommandoknapp på ditt kalkylblad och lägg till följande kodrader:

1. Först deklarerar vi fyra Range -objekt och två variabler av typen Integer.

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

2. Vi initierar Range -objektet rangeToUse med det valda intervallet.

Ange rangeToUse = Selection

3. Lägg till raden som ändrar bakgrundsfärgen för alla celler till "Ingen fyllning". Lägg också till raden som tar bort alla celler.

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

4. Informera användaren när han eller hon bara väljer ett område.

Om Selection.Areas.Count <= 1 Då
MsgBox "Välj mer än ett område."
Annan
Avsluta om

Nästa kodrad (vid 5, 6 och 7) måste läggas till mellan Else och End If.

5. Färg cellerna i de valda områdena.

rangeToUse.Interior.ColorIndex = 38

6. Gränsa till varje område.

För varje enskilt område In rangeToUse.Areas
singleArea.BorderAround ColorIndex: = 1, Vikt: = xlThin
Nästa singelområde

7. Resten av detta program ser ut så här.

För i = 1 Till rangeToUse.Areas.Count
För j = i + 1 Till rangeToUse.Areas.Count
För varje cell1 In rangeToUse.Areas (i)
För varje cell2 In rangeToUse.Areas (j)
Om cell1.Value = cell2.Value Då
cell1.Interior.ColorIndex = 0
cell2.Interior.ColorIndex = 0
Avsluta om
Nästa cell2
Nästa cell1
Nästa j
Nästa i

Förklaring: det här kan se lite överväldigande ut, men det är inte så svårt. rangeToUse.Areas.Count är lika med 3, så de två första kodraderna reduceras till For i = 1 till 3 och För j = i + 1 till 3. För i = 1, j = 2 jämför Excel VBA alla värden för det första området med alla värden för det andra området. För i = 1, j = 3 jämför Excel VBA alla värden för det första området med alla värden för det tredje området. För i = 2, j = 3 jämför Excel VBA alla värden för det andra området med alla värden för det tredje området. Om värdena är desamma sätter det bakgrundsfärgen för båda cellerna till "Ingen fyllning", eftersom de inte är unika.

Resultat när du klickar på kommandoknappen på arket:

Du kommer att bidra till utvecklingen av webbplatsen, dela sidan med dina vänner

wave wave wave wave wave