buona domenica a tutti.
sto cercando di realizzare questo nuovo progetto non alla mia portata, più semplice a farsi che a spiegarsi.
mediante una macro trova, già realizzata, ho trovato alcuni valori, 101,102,103,...110 nel range "G3:L" di foglio1;
per ciascuno di questi valori ho determinato il numero di riga di foglio1 in cui tale valore si trova.
tali numeri di riga sono inseriti in 10 colonne del foglioX, dalla B alla J, a partire dalla riga 3;
quindi la colonna B contiene i numeri di riga in cui si trova il numero 101 nel foglio1;
la colonna C contiene i numeri di riga in cui si trova il numero 102 nel foglio1;
e cosi via.
La lunghezza, cioè le righe, di ogni colonna non è nota e varia da colonna a colonna.
ogni colonna, non contiene valori nulli o celle vuote e neanche numeri ripetuti.
Fin qui è stato fatto tutto.
Ora dovrei fare questo sviluppo.
nel foglio1 ho un range "G3:L" la cui ultima riga non è nota, dal momento che il range aumenta nel numero di righe.
supponiamo di considerare la colonna B di foglioX, (colonna che contiene i numeri di riga del numero 101), i cui valori sono:
B3 = 5 ' <<<<< prima riga-cella utile di colonna B
B4 = 10
B5 = 18
...
B19 = 29
B20 = 30 ' <<<< ultima riga-cella utila di colonna B
consideriamo ora B3 = 5 e B4 = 10;
dati questi 2 valori devo ora contare tutti i numeri del foglio1 che si trovano nel range ("G & PR :L & UR")
dove PR ed UR sono determinati come segue:
PR = PRIMARIGA = B3 +1 = 5 + 1 = 6
UR = ULTIMARIGA = B4 = 10
cioè PR è il primo valore di colonna B del foglioX, aumentato di una unità;
mentre UR è il secondo valore di colonna B del foglioX.
quindi il range di foglio1 in cui contare è "G6:L10";
dal conteggio devo escludere il numero 101 che si trova solo in riga 10, precisamente in una cella del range "G10:L10".
Il risultato di questo conteggio deve essere riportato nel foglioB, in quanto riferito alla colonna B,
che per una migliore visualizzazione, onde evitare di scorrere il foglio, ho impostato come in fig.
(se per la struttura della macro l'impostazione di foglioB crea complicazioni si può modificare il foglioB.)
successivamente ripeto il ciclo "conta" di tutti i numeri nel foglio1,
considerando come riga iniziale un nuovo PR, uguale al secondo valore di colonna B (di foglioX) + 1,
quindi ora PR = B4 + 1 = 10 +1=11
mentre UR sarà uguale al terzo valore di colonna B di foglioX,
quindi UR = B5 = 18;
in pratica nel secondo ciclo "conta" il range di foglio1 in cui contare è diventato "G11:L18".
dal conteggio escludo il numero 101 che si trova solo in riga 18, precisamente in una cella del range "G18:L18".
anche il risultato di questo secondo conteggio sarà inserito in foglioB.
ripetiamo il ciclo "conta" modificando i valori di PR ed UR fino alla fine della colonnaB;
in questo esempio alla fine avremo PR = B19 + 1 = 29 + 1 = 30, ed UR = B20 = 30, per cui il ciclo "conta"
interesserà solo la riga 30 del foglio1, essendo il range di ricerca ora uguale a "G30:L30".
quando UR è uguale all'ultimo valore della colonna B di foglioX,
il conteggio relativo alla colonna B di foglioX è terminato.
passo a considerare la colonna C di foglioX, che contiene i numeri di riga del foglio1 in cui si trova il numero 102,
e ripeto come in precedenza il ciclo conta nei range "G & PR :L & UR" di foglio1
considerando come PR ed UR i valori di colonna C, riportando i risultati di ciascun conteggio nel foglioC.
ripeto lo stesso tipo di calcolo fino a considerare la colonna J del foglioX che contiene i numeri di riga del foglio1 in cui si trova
il numero 110 e riporto il conteggio nel foglioJ.
nella macro devo prevedere una elevata velocità di esecuzione dato il numero crescente di valori da contare;
inoltre devo considerare che se attualmente il conteggio avviene ad esempio su 100 righe del foglio1,
quando le righe saranno 150 sarà sufficiente aggiungere il conteggio dalla 101 alla 150 al risultato ottenuto in precedenza.
mi rendo conto della apparente complessità del calcolo, ma vedrete che una volta compresa questa mia fantasia risulterà banale tanto che chiunque, tranne me, potrebbe realizzare una macro per tale calcolo.
grazie, anche per la lettura del topic.
saluti