Condividi:        

Popolare range discontinuo

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Popolare range discontinuo

Postdi miko » 26/03/24 05:20

Buongiorno, salute a tutti
Chiedo il vostro aiuto per risolvere il seguente problema
Inizialmente ho il range A, formato da un certo numero di colonne discontinue

Immagine

Tutte le colonne hanno lo stesso numero di righe
Le colonne interessate sono sempre le stesse, in fig., per motivi di spazio, colonne “B”, “E”, “H”, “k”,
ma in realtà sono altre
il range A può iniziare da una qualunque colonna e terminare con una qualsiasi colonna di quelle citate
quello che cambia ogni volta che si popola il range A è la riga iniziale della prima ed ultima colonna del range A
Una macro contiene una matrice stringa con le prime celle di ogni colonna del tipo “B4”, “E4”, …, “E10”,
questa stessa macro popola un'altra matrice con quale poi si trasferiscono i valori nelle colonne.
Come posso in un ciclo usando Set Range = Application.union(Range1, Range2,…, RangeN),
o qualcosa di simile, trasformare il range A nel range B, in modo che quest’ultimo sia costituito da colonne continue senza necessariamente popolare il foglio poco interessante allo scopo?
La finalità di questa trasformazione del range è quella di applicare ad ogni riga del range B la funzione
COUNTIF con un altro ciclo, che mi sembra più semplice che applicarla al range A.
Ciao, grazie
windows 10 - office 2013
miko
Utente Senior
 
Post: 521
Iscritto il: 29/12/09 10:44

Sponsor
 

Re: Popolare range discontinuo

Postdi Anthony47 » 26/03/24 11:59

Il tuo quesito si presta a diverse interpretazioni; la mia intepretazione favorita
-data una matrice che contiene le celle di partenza dell'intervallo A
-come posso efficacemente assemblare i dati come in intervallo B?

In questo caso, supponendo che la matrice si chiami sPos e sia in base 0:
Codice: Seleziona tutto
Dim dPos As String, I As Long, Alt As Long
'
dPos = "N4"                     '<<< Posizione di scrittura
Alt = 5                         '<<< N° di celle per colonna
'
For I = 0 To UBound(sPos)
    Range(sPos(I)).Resize(Alt, 1).Copy Range(dPos).Offset(0, I)
Next I


Se invece questa interpretazione "non c'azzecca" allora descrivi nuovamente con altre parole
Avatar utente
Anthony47
Moderatore
 
Post: 19425
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Popolare range discontinuo

Postdi miko » 26/03/24 15:09

salve,
la tua interpretazione favorita e' quella che "c'azzecca" e funziona, grazie
mi chiedevo però:

1) è possibile popolare direttamente il range B nella macro, alla stregua di una matrice, senza dover riempire il foglio?

2) se è nota in partenza la matrice che contiene tutte le intere colonne del range A, così come disposte in fig.,
si potrebbe applicare a questa matrice la funzione COUNTIF per ogni sua riga?
ed in tal caso sarebbe più veloce del copy range da te proposto?

saluti grazie
windows 10 - office 2013
miko
Utente Senior
 
Post: 521
Iscritto il: 29/12/09 10:44

Re: Popolare range discontinuo

Postdi Anthony47 » 26/03/24 21:34

La funzione COUNTIF usata nel vba non accetta come parametro una matrice ma solo un intervallo su foglio.

Puoi creare una copia in memoria dell'intervallo A, ma per quello dovrai leggere una cella alla volta e la carichi nell'array (oppure carichi ogni blocco verticale in un array monodimensionale e poi ne copi il contenuto nell'array bidimensionale, ma mi sembra una complicazione sproporzionata); poi invece che COUNTIF userai il vba per contare quanti rispettano il criterio
Avatar utente
Anthony47
Moderatore
 
Post: 19425
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Popolare range discontinuo

Postdi miko » 30/03/24 03:53

Buongiorno,
grazie per spiegazioni esaustive e codice funzionante.
colgo l'occasione per augurare a tutti voi una serena Pasqua.
saluti.
windows 10 - office 2013
miko
Utente Senior
 
Post: 521
Iscritto il: 29/12/09 10:44


Torna a Applicazioni Office Windows


Topic correlati a "Popolare range discontinuo":


Chi c’è in linea

Visitano il forum: Nessuno e 13 ospiti