nel foglio2 ho inserito in 20 celle, su una stessa riga, altrettante formule, come questa:
=CONTA.VALORI(foglio1'!M:M)
che conta le celle piene di 20 colonne del foglio1.
le formule funzionano perfettamente, ma ho notato che eseguendo la macro che calcola i valori nelle colonne del foglio 1, il tempo di elaborazione aumenta con la presenza delle formule.
eliminando le formule, a parità di dati inseriti, l'elaborazione è velocissima.
allora ho pensato di sostituire le formule con una macro-conta valori,del tipo:
- Codice: Seleziona tutto
sub conta()
Range("M1").FormulaLocal = "=conta.valori(B:B)"
---
end sub"
ma il listato non è sintetico perchè devo reiterare la stessa linea di codice per 20 volte, e comunque alla fine del calcolo mi ritrovo ancora le formule nelle celle e non i valori.
quindi e come se avessi inserito le formule direttamente nelle celle fin dall'inizio.
ho provato a sintetizzare con questa sub:
- Codice: Seleziona tutto
Sub conta()
For J = 2 To 11
For Y = 13 To 23
X = WorksheetFunction.CountA(Columns(J))
Cells(3, Y).Value = X
Next Y
Next J
End Sub
in questo modo nelle celle ci sono i valori e non più le formule, ma non riesco a risolvere altri problemi:
1) ottenere il conteggio per 20 colonne, che tra l'altro non sono contigue;
i dati infatti sono inclusi in due range distinti e separati, ma nei due range le colonne sono contigue;
2) la sub fornisce un valore uguale per ogni colonna, senza distinguere il numero maggiore o minore di dati che ogni colonna può contenere;
la sub fornisce sempre il valore della colonna che contiene più dati;
invece le colonne in cui si devono contare i valori contengono una quantità di dati differente.
in definitiva vorrei calcolare le celle piene di 20 colonne, contenute in due range distinti, tenendo conto che ogni colonna contiene un numero diverso di valori.
come devo modificare nella macro?
ciao grazie