Condividi:        

macro conta valori per più colonne

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

macro conta valori per più colonne

Postdi miko » 14/04/10 18:38

salve,
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
windows 10 - office 2013
miko
Utente Senior
 
Post: 521
Iscritto il: 29/12/09 10:44

Sponsor
 

Re: macro conta valori per più colonne

Postdi Flash30005 » 14/04/10 22:26

Non so cosa fa la tua macro ma se devi sapere quante celle sono in un'area stabilita (o da stabilire) contengono dei valori puioi usare questa macro
Codice: Seleziona tutto
Testata = 2
righe = Range("A3").CurrentRegion.Rows.Count + Testata
Col = Range("A3").CurrentRegion.Columns.Count
'Col = 24
contaC = 0
For RR = Testata + 1 To righe
    For CC = 2 To Col
    If Cells(RR, CC).Value > 0 Then contaC = contaC + 1
    Next CC
Next RR
MsgBox contaC
End Sub

Inutile dire che se l'area non è variabile metterai il il numero fisso sia a Righe che a Colonne (Col)

ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: macro conta valori per più colonne

Postdi miko » 15/04/10 22:53

ciao
la macro, che ovviamente funziona, non risolve il mio problema.
nel foglio 1 ho due range, colonne da M a W e colonne da Y ad AI(i);
tra i due range c'è quindi la colonna X vuota;
il numero di righe è variabile;
la macro dovrebbe contare, distintamente, per ciascuna colonna dei due range le celle piene, e riportare il risultato in 10 celle differenti, per il primo range, ed in altre 10 celle differenti per il secondo range;
esempio:
foglio 1, colonna M - celle piene 12 (anche non consecutive)
risultato conteggio per la colonna M: foglio 2, cella E6 - valore 12
foglio 1, colonna N - celle piene 25 (anche non consecutive)
risultato conteggio per la colonna N: foglio 2, cella F6 - valore 25
così fino a considerare l'ultima colonna del range M-W;
poi considerare la prima colonna del range Y-AI:
foglio 1, colonna Y - celle piene 0
risultato conteggio per la colonna Y: foglio 2, cella E16 - valore 0
foglio 1, colonna Z - celle piene 35 (anche non consecutive)
risultato conteggio per la colonna Z: foglio 2, cella F16 - valore 35
così fino a considerare l'ultima colonna del range Y-AI
dall'esempio si evince che le colonne non contengono la stessa quantità di celle piene, non sono consecutive, ed il risultato del conteggio, valore e non formula, viene inserito in 10 differenti celle di due distinte righe.
ciao grazie
windows 10 - office 2013
miko
Utente Senior
 
Post: 521
Iscritto il: 29/12/09 10:44

Re: macro conta valori per più colonne

Postdi Flash30005 » 16/04/10 02:06

Cioè?
Una cosa così?
Codice: Seleziona tutto
Sub ContacelleP()
IncR = 0
DecCol = 0
For Col = 13 To 35
If Col = 24 Then
IncR = 10
DecCol = 12
GoTo salta
End If
righe = Sheets("Foglio1").Cells(Rows.Count, Col).End(xlUp).Row
ContaC = 0
For RR = 2 To righe  '<<<< da riga 2 per la testata
        If Sheets("Foglio1").Cells(RR, Col).Value > 0 Then ContaC = ContaC + 1
Next RR
Sheets("Foglio2").Cells(6 + IncR, Col - 8 - DecCol).Value = ContaC
salta:
Next Col
End Sub



Ho considerato solo la riga 1 come testata quindi non conteggiata

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-


Torna a Applicazioni Office Windows


Topic correlati a "macro conta valori per più colonne":


Chi c’è in linea

Visitano il forum: Nessuno e 83 ospiti