PDA

View Full Version : [Excel] Mi aiutate a "rimpicciolire" una sommatoria di countif?


shenlong7777
06-02-2010, 18:14
Ciao a tutti, vi spiego il mio problema, spero sappiate aiutarmi.
Ho una tabella di questo tipo:

A 1 2 3 4 5 6

B 1 2 3 0 0 0
C 0 0 3 4 5 6
Mi serve che in una cella compaia, come valore, il numero totale di celle in B il cui valore corrisponde a quello della corrispondente cella in A, e così via per C e le righre successive. Nell'esempio sopra, il risultato dovrebbe essere questo qui.

A 1 2 3 4 5 6

B 1 2 3 0 0 0 3
C 0 0 3 4 5 6 4

Sono riuscito a risolvere usando tanti conta.se ripetuti (i valori in ogni riga sono 24, e la riga di controllo è D3:AA3), ed è venuta fuori una roba di questo tipo:
=CONTA.SE(D$3;D6) + CONTA.SE(E$3;E6) + CONTA.SE(F$3;F6) + CONTA.SE(G$3;G6) + CONTA.SE(H$3;H6) + CONTA.SE(I$3;I6) + CONTA.SE(J$3;J6) + CONTA.SE(K$3;K6) + CONTA.SE(L$3;L6) + CONTA.SE(M$3;M6) + CONTA.SE(N$3;N6) + CONTA.SE(O$3;O6) + CONTA.SE(P$3;P6) + CONTA.SE(Q$3;Q6) + CONTA.SE(R$3;R6) + CONTA.SE(S$3;S6) + CONTA.SE(T$3;T6) + CONTA.SE(U$3;U6) + CONTA.SE(V$3;V6) + CONTA.SE(W$3;W6) + CONTA.SE(X$3;X6) + CONTA.SE(Y$3;Y6) + CONTA.SE(Z$3;Z6) + CONTA.SE(AA$3;AA6)
che funziona perfettamente, ma non è proprio elegante da vedere. :D
Il problema è che non riesco a fare una sommatoria di conta.se, che sia anche trascinabile. Qualcuno mi dà una mano? Non riesco a venirne a capo.
Grazie a tutti. :sofico:

MarcoGG
07-02-2010, 10:34
A 1 2 3 4 5 6

B 1 2 3 0 0 0
C 0 0 3 4 5 6


Supponendo che le serie di valori siano messi per Riga, e quindi, relativamente a questo esempio, la prima riga di valori sta sulla Riga 1, quindi in A1 c'è scritto "A", in B1 "1", in B2 "2", ecc., fino a G1, e così via per le altre righe, in VBA si risolve con poco codice, tra l'altro estremamente più chiaro e riadattabile di quella Fx lunga un Km :

Dim i As Integer
Dim j As Integer
Dim cnt As Integer

For i = 2 To 3 'Indice Riga
cnt = 0
For j = 2 To 7 'Indice Colonna
If Cells(i, j).Text = Cells(1, j).Text Then cnt = cnt + 1
Next j
Cells(i, 8).FormulaR1C1 = cnt
Next i
Le somme in questo caso vengono scritte sulla colonna H.
;)

shenlong7777
07-02-2010, 14:49
Ok, quindi bisogna per forza agire con VBA, pensavo ci fosse un modo più rapido direttamente su excel. Grazie mille, comunque. Ora provo.

EDIT: Non funzionava in quanto faceva variare anche la riga di controllo, ho risolto modificando l'istruzione principale così:
If Cells(i, j).Text = Cells(4, j).Text Then cnt = cnt + 1
Dove la riga 4 è appunto la mia riga di controllo (A nell'esempio). Grazie di tutto, sono a posto :D

MarcoGG
08-02-2010, 10:00
Ok, quindi bisogna per forza agire con VBA, pensavo ci fosse un modo più rapido direttamente su excel. Grazie mille, comunque.
...
Grazie di tutto, sono a posto :D


Probabilmente è anche possibile con una Formula più compatta. Resta comunque il fatto che una Fx è sempre un'istruzione su una riga sola. Quando supera N caratteri inizia a diventare poco leggibile, e spesso, dopo una settimana o due, anche incomprensibile per lo stesso che l'ha scritta... :asd: