Confronta intervalli in Excel VBA - Macro semplici di Excel

Sommario

Di seguito vedremo un programma in Excel VBA Quello confronta Selezionato casualmente intervalli ed evidenzia le celle che sono uniche. Se non hai ancora familiarità con le aree, ti consigliamo vivamente di leggere prima questo esempio.

Situazione:

Nota: l'unico valore univoco in questo esempio è il 3 poiché tutti gli altri valori si verificano in almeno un'altra area. Per selezionare Range ("B2: B7, D3: E6, D8: E9"), tieni premuto Ctrl e seleziona ciascuna area.

Posiziona un pulsante di comando sul foglio di lavoro e aggiungi le seguenti righe di codice:

1. Innanzitutto, dichiariamo quattro oggetti Range 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

2. Inizializziamo l'oggetto Range rangeToUse con l'intervallo selezionato.

Imposta rangeToUse = Selection

3. Aggiungi la linea che cambia il colore di sfondo di tutte le celle in "Nessun riempimento". Aggiungi anche la linea che rimuove i bordi di tutte le celle.

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

4. Informare l'utente quando seleziona solo un'area.

Se Selection.Areas.Count <= 1 Allora
MsgBox "Selezionare più di un'area."
Altro
Finisci se

Le righe di codice successive (a 5, 6 e 7) devono essere aggiunte tra Else e End If.

5. Colora le celle delle aree selezionate.

rangeToUse.Interior.ColorIndex = 38

6. Confina con ogni area.

Per ogni singola Area In rangeToUse.Areas
singleArea.BorderAround ColorIndex:=1, Weight:=xlThin
Prossimo singoloArea

7. Il resto di questo programma si presenta come segue.

Per i = 1 Per rangeToUse.Areas.Count
Per j = i + 1 Per rangeToUse.Areas.Count
Per ogni cella1 In rangeToUse.Areas(i)
Per ogni cella2 In rangeToUse.Areas(j)
Se cella1.Valore = cella2.Valore Allora
cell1.Interior.ColorIndex = 0
cell2.Interior.ColorIndex = 0
Finisci se
Cella successiva2
Cella successiva1
Avanti j
Avanti io

Spiegazione: può sembrare un po' opprimente, ma non è così difficile. rangeToUse.Areas.Count è uguale a 3, quindi le prime due righe di codice si riducono a For i = da 1 a 3 e For 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 area con tutti i valori della terza area. Per i = 2, j = 3, Excel VBA confronta tutti i valori della seconda area con tutti i valori della terza area. Se i valori sono gli stessi, imposta il colore di sfondo di entrambe le celle su "Nessun riempimento", perché non sono univoci.

Risultato quando si fa clic sul pulsante di comando sul foglio:

Aiuterete lo sviluppo del sito, condividere la pagina con i tuoi amici

wave wave wave wave wave