Excel VBA - Unione e intersezione

Excel VBA ha due metodi, appartenenti all'oggetto Application, per manipolare due o più intervalli: Union e Intersect.

Unione

Il metodo Union restituisce tutte le celle in due o più intervalli passati come argomento.

Il seguente comando selezionerà l'intervallo mostrato nell'immagine qui sotto:

1 Unione(Intervallo("A1:B4"),Intervallo("B3:C6")).Seleziona

Puoi assegnare qualsiasi valore o formula all'intervallo restituito dal metodo Union:

1 Unione(Intervallo("A1:B4"), Intervallo("B3:C6")) = 10

Questo inserirà il valore 10 in ogni cella nell'Unione.

Puoi avvolgere qualsiasi funzione che riepiloga un intervallo attorno a un metodo di unione. L'esempio seguente restituirà la somma dei valori negli intervalli A1:B4 e B3:C6:

1 Risultato = Application.WorksheetFunction.Sum(union(Range("A1:B4"), Range("B3:C6")))

Potresti essere sorpreso di ottenere il valore in Risultato come 160! Sebbene ci siano solo 14 celle nell'Unione (8 in ogni intervallo con 2 comuni) quando guardi Selezione, l'Unione restituisce in realtà 16 celle, quindi il Risultato come 160.

intersecare

Il metodo Intersect restituisce solo le celle comuni in due o più intervalli passati come argomento.

Il seguente comando selezionerà l'intervallo mostrato (area grigia) nell'immagine qui sotto:

1 Intersezione(Intervallo("A1:B4"),Intervallo("B3:C6")).Seleziona

Uso di Intersect

L'utilizzo più comune di Intersect è negli eventi associati a un foglio di lavoro oa una cartella di lavoro. Viene utilizzato per verificare se le celle modificate appartengono a un intervallo di interesse. Segue l'esempio con il controllo se le celle sono state modificate (identificate da Target) e l'intervallo A1: A10 sono comuni e, se lo sono, intraprendere l'azione appropriata.

L'oggetto Intersect non restituisce nulla se non ci sono celle comuni, quindi Intersect(Target, Range(“A1:A10”)) Is Nothing sarà True se non ci sono celle comuni. Aggiungere Not alla condizione lo rende True solo se il risultato del test Intersect(Target, Range(“A1:A10”)) Is Nothing è False, in altre parole Target e Range A1:A10 hanno alcune celle in comune.

12345 Private Sub Worksheet_Change (ByVal Target As Range)If Not Intersect(Target, Range("A1:A10")) non è niente allora'Esegui l'azione desiderataFinisci seFine sottotitolo

Scritto da: Vinamra Chandra

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

wave wave wave wave wave