PDA

View Full Version : [VBA Excel] Intersect contrario


Luka894
07-10-2011, 12:37
Salve a tutti, è da due giorni che cerco in giro per la rete un comando simile all' Intersect(range1,range2), ma che invece di selezionarmi le celle in comune tra i range, voglio che mi selezioni le celle NON in comune.

Andrebbe bene anche un comando per togliere un determinato range da una variabile range (esempio di seguito):

range1 = Cells 'tutte le celle del foglio
range2 = Range ("AD4:AF5") 'range da togliere
range3= range1-range2 'tolgo da tutte le celle del foglio il range2
range3.select 'seleziono il select "filtrato"

Ovviamente il metodo sopra citato non si può fare, ma conoscete qualcosa di simile?

Grazie in anticipo!

Floris
08-10-2011, 01:47
(not intersect) = (union - intersect) non va bene?

Luka894
08-10-2011, 17:03
(not intersect) = (union - intersect) non va bene?

Umh ... puoi spiegarmi con un esempio fatto di codice per favore?

banryu79
10-10-2011, 10:57
Umh ... puoi spiegarmi con un esempio fatto di codice per favore?
Ma il concetto è chiaro?
In VBA esiste una funzione Intersect, e ho visto che esiste anche una funzione Union. Per ottenere ciò che ti serve basta usarle entrambe.

Per ottenere la "non-intersezione" di due Range, r1 e r2 puoi fare così:
- calcoli il range rU dato dalla union di r1 e r2
- calcoli il range rI dato dall'intersection di r1 e r2
- calcoli il range rNotIntersection passando rU e rI ad una tua funzione che elimina da rU tutte le entry presenti in rI

rNotIntersection è ciò che cercavi. La parte in corsivo la devi (forse) implementare tu.

Luka894
10-10-2011, 18:06
Ma il concetto è chiaro?
In VBA esiste una funzione Intersect, e ho visto che esiste anche una funzione Union. Per ottenere ciò che ti serve basta usarle entrambe.

Per ottenere la "non-intersezione" di due Range, r1 e r2 puoi fare così:
- calcoli il range rU dato dalla union di r1 e r2
- calcoli il range rI dato dall'intersection di r1 e r2
- calcoli il range rNotIntersection passando rU e rI ad una tua funzione che elimina da rU tutte le entry presenti in rI

rNotIntersection è ciò che cercavi. La parte in corsivo la devi (forse) implementare tu.

Sì , il concetto è chiarissimo, l'unico mio problema è appunto creare la riga di codice contenente la funzione di cui parli (in corsivo).
Non riesco proprio a venirne fuori, come si toglie un range da una variabile range? Ho provato a ciclarlo con ciclo for ma niente da fare.

banryu79
11-10-2011, 08:50
Sì , il concetto è chiarissimo, l'unico mio problema è appunto creare la riga di codice contenente la funzione di cui parli (in corsivo).
Non riesco proprio a venirne fuori, come si toglie un range da una variabile range? Ho provato a ciclarlo con ciclo for ma niente da fare.
Non saprei aiutarti, dato che non conosco VBA.

Luka894
18-10-2011, 21:40
Qualcun altro? :)