Confronto Intervalli in Excel VBA
Di seguito vedremo un programma in Excel VBA che mette a confronto intervalli selezionati in modo casuale e mette in evidenza le cellule che sono unici. Se non si ha familiarità con link: / VBA-esempi-aree-raccolta [aree]
ancora, ti consigliamo di leggere questo esempio prima.
Situazione:
Nota: il valore solamente unico in questo esempio è il 3 in quanto tutti gli altri valori si verificano in almeno un’altra zona. Per selezionare Range ( “B2: B7, D3: E6, D8: E9”), tenere premuto CTRL e selezionare ogni area.
Posizionare un pulsante di comando nel foglio di lavoro e aggiungere le righe di codice che segue:
-
In primo luogo, si dichiara quattro oggetti Gamma e due variabili di tipo Integer.
Dim rangeToUse As Range, singleArea As Range, cell1 As Range, cell2 As Range, i As Integer, j As Integer
-
inizializzare l’rangeToUse oggetto Range con l’intervallo selezionato.
Set rangeToUse = Selection
-
Aggiungere la linea che cambia il colore di tutte le cellule sfondo a ‘Nessun riempimento’. Anche aggiungere la riga che rimuove i confini di tutte le cellule.
Cells.Interior.ColorIndex = 0 Cells.Borders.LineStyle = xlNone
-
Informare l’utente quando lui o lei sceglie una sola area.
If Selection.Areas.Count <= 1 Then MsgBox "Please select more than one area." Else End If
Le righe di codice seguenti (a 5, 6 e 7) devono essere aggiunti tra Else e End If.
-
Colore le cellule delle aree selezionate.
rangeToUse.Interior.ColorIndex = 38
-
Border ogni area.
For Each singleArea In rangeToUse.Areas singleArea.BorderAround ColorIndex:=1, Weight:=xlThin Next singleArea
-
Il resto di questo programma appare come segue.
For i = 1 To rangeToUse.Areas.Count For j = i + 1 To rangeToUse.Areas.Count For Each cell1 In rangeToUse.Areas(i) For Each cell2 In rangeToUse.Areas(j) If cell1.Value = cell2.Value Then cell1.Interior.ColorIndex = 0 cell2.Interior.ColorIndex = 0 End If Next cell2 Next cell1 Next j Next i
Spiegazione: questo può sembrare un po ‘opprimente, ma non è poi così difficile. rangeToUse.Areas.Count uguale a 3, in modo che le prime due righe di codice riducono a for i = 1 a 3 e per j = i + 1 a 3. Per i = 1, j = 2, Excel VBA confronta tutti i valori della prima area con tutti i valori della seconda area. Per i = 1, j = 3, Excel VBA confronta tutti i valori della prima zona con tutti i valori della terza area. Per i = 2, j = 3, Excel VBA confronta tutti i valori della seconda zona con tutti i valori della terza area. Se i valori sono gli stessi, si imposta il colore di entrambe le cellule sfondo a ‘Nessun riempimento’, perché non sono unici.
Risultato quando si fa clic sul pulsante di comando sul foglio: