Condividi:        

problema con funzione somma.più.se

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

problema con funzione somma.più.se

Postdi libraio » 02/11/23 13:12

S.o. Windows 7 Professionale + Office 2003

Ciao a tutti e ben ritrovati...
Pongo un problema di cui non trovo la soluzione:
è possibile applicare la funzione "conta.più.se" a due criteri nella stessa colonna?
Io ho tentato con la seguente funzione:
Codice: Seleziona tutto
=CONTA.PIù.SE(G:G;F:F;"bianco";F:F;"nero")

ma non ottengo il risultato voluto (risultato: #NOME?).
Se sbaglio io nella formulazione, dov è l'errore?
Grazie per l'aiuto
libraio
Utente Senior
 
Post: 329
Iscritto il: 04/01/10 20:31

Sponsor
 

Re: problema con funzione somma.più.se

Postdi Anthony47 » 02/11/23 15:30

è possibile applicare la funzione "conta.più.se" a due criteri nella stessa colonna?
Il problema non dovrebbe porsi perche’ Conta.Più.Se non e’ disponibile nella versione 2003 in tuo possesso; infatti la formua ti risponde ?NOME?

Comunque CONTA.PIù.Se conta quanti valori rispecchiano sia la prima condizione che la seconda; mi vien da pensare che se la condizione è "nero" allora non puo' essere anche "bianco"; ma probabilmente tu volevi calcolare nell'ipotesi O una condizione OPPURE l'altra.
E' anche possibile che tu volessi far riferimento alla funzione SOMMA.PIÙ.SE (vista la sintassi della formula che hai usato), ma anche lei fu introdotta in XL2007, quindi non disponibile su XL2003

Scordandoci SOMMA.PIÙ.SE e CONTA.PIÙ.SE perche' non disponibili, e pensando che tu voglia "sommare" e non "contare", e che l'ipotesi sia O una condizione OPPURE l'altra, allora puoi ripiegare su Matr.Somma.Prodotto; tipo
Codice: Seleziona tutto
=MATR.SOMMA.PRODOTTO(B1:B200;(A1:A200="mele")+(A1:A200="pere"))


Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19228
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: problema con funzione somma.più.se

Postdi libraio » 02/11/23 16:19

Buongiorno Anthony, e grazie della risposta, come sempre chiara e tempestiva.
Risolto l'errore dell'inapplicabilità di Conta.Più.Se in excel 2003, ho tentato di utilizzare la tua soluzione, ma non ho ottenuto il risultato sperato.
Bando al problema "dati sensibili"... giustamente tu obbietti su bianco e nero (opposti, perchè sommarli?)
Pubblico quindi un estratto dei dati per i quali cerco la funzione idonea:
https://wetransfer.com/downloads/99ba51 ... 053/a1d225

Io vorrei ottenere la somma degli importi (colonna B) relativi ai fornitori "AMAZON" + "Amazon" + "AMZN" (colonna A), tenuto anche conto il criterio di ricerca è parte del testo nelle righe...
Ovviamente la funzione potrebbe essere applicata anche ad altri criteri di ricerca ((Hoepli + ELI, ecc.)
Per la somma di un unico criterio di ricerca utilizzo già "SOMMA.SE".

Posso confidare sul tuo prezioso aiuto?...
Grazie
libraio
Utente Senior
 
Post: 329
Iscritto il: 04/01/10 20:31

Re: problema con funzione somma.più.se

Postdi Anthony47 » 02/11/23 18:25

Con la versione 2003 tanto vale andare subito con una macro.
Ad esempio, con riferimento alla immagine
Immagine

1) Creati una lista di "alias"; io l'ho fatto partendo da F7, andando verso l'alto per alias dello stesso fornitore e verso destra per alias di altri fornitori
2) inserisci in un modulo standard del vba la seguente macro:
Codice: Seleziona tutto
Sub Riass()
Dim iDati As Range, oDati As Range
Dim wArr, oArr(), I As Long, J As Long, K As Long
Dim eCnt As Long, eFound As Boolean, dBg As Boolean

Set iDati = Sheets("Foglio1").Range("A1")   '<<< La posizione iniziale dei dati di partenza
Set oDati = Sheets("Foglio1").Range("F8")   '<<< La posizione iniziale dei dati di riepilogo
'
dBg = True
Debug.Print ">>>"
wArr = Range(iDati, iDati.End(xlDown).Resize(, 2)).Value
eCnt = Range(oDati.Cells(0, 1), oDati.Cells(0, 100).End(xlToLeft)).Columns.Count
oDati.Resize(2, eCnt + 2).ClearContents     'Azzera area di destinazione
For I = 1 To UBound(wArr)                   'Scan Dati di input
    For J = 0 To eCnt - 1                   'Scan elenco orizzontale
        For K = 1 To oDati.Row              'Scan per Alias
            If oDati.Offset(-K, J) = "" Then Exit For
            If InStr(1, wArr(I, 1), oDati.Offset(-K, J), vbTextCompare) > 0 Then
                If dBg Then Debug.Print I, J, K
                oDati.Offset(0, J).Value = oDati.Offset(0, J).Value + wArr(I, 2)
                eFound = True
                Exit For
            End If
        Next K
        If eFound Then Exit For
    Next J
    If eFound Then
        eFound = False
    Else
        Debug.Print "Unallocated: ", I, wArr(I, 1)
        On Error Resume Next
        oDati.Offset(0, eCnt + 1).Value = oDati.Offset(0, eCnt + 1).Value + CSng(wArr(I, 2))
        On Error GoTo 0
    End If
Next I
MsgBox ("Completato...")
End Sub

Le righe marcate <<< vanno adattate alla tua situazione; in particolare con Set oDati = etc etc definisci in quale posizione i dati di riepilogo saranno scritti (e' la cella Gialla, nell'Immagine), ma definisci automaticamente la posizione della tabella degli "alias".

Poi lanci la Sub Riass

Con i dati che hai condiviso e la tabella che mi sono inventato io ho ottenuto i risultati che vedi in Immagine.

Eventuali righe che non sono state allocate con la tabella di Alias impostata saranno sommate nella seconda cella senza Alias (I8, nel caso del mio esempio)
Gli alias sono insensibili al Maiuscolo/minuscolo, quindi Amazon "prende" sia AMAZON che amazon.
Attenzione che potrebbero sorgere problemi con sigle dove una "ne implica" un'altra; es "Modadori" e' implicitamente riconosciuta in "Giorgio Mondadori". Per evitare errori sara' necessario inserire nella tabella degli Alias prima quelli che potrebbero essere "impliciti" in altri. Esempio:
Codice: Seleziona tutto
AMAZON  - Höpli
AMZN    - Hoepli - Giorgio Mondadori – Mondadori
(il trattino separa le colonne)

Prova e fai sapere...
Avatar utente
Anthony47
Moderatore
 
Post: 19228
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: problema con funzione somma.più.se

Postdi libraio » 02/11/23 21:20

Wow!
Del codice ho capito poco :oops: , ma funziona alla grande.
Di mio ho aggiunto l'applicazione della macro su altro foglio, perchè quello con i dati interessati ha le colonne già occupate da altri dati.
A meraviglia!
Grazie Anthony
libraio
Utente Senior
 
Post: 329
Iscritto il: 04/01/10 20:31


Torna a Applicazioni Office Windows


Topic correlati a "problema con funzione somma.più.se":


Chi c’è in linea

Visitano il forum: Nessuno e 59 ospiti