somma.se variante

ciao a tutti

vorrei usare un somma.se con piu' criteri al posto di uno solo, una sorta di somma.se iterata

allora ho fatto un funzione (prendendo spunti qua e la)

e funziona !!!

Function sommase(intervallo As Range, criteri As Range, sommare As Range)

    Dim temp
    Dim Criterio As Range
    Dim Rig, Col As Integer
    Dim somm As Double
    somm = 0
    Rig = intervallo.Rows.Count
    Col = intervallo.Columns.Count
    
    For i = 1 To Rig
        For j = 1 To Col
            For Each Criterio In criteri
                If Criterio.Value = intervallo(i, j).Value And _
                Criterio.Value <> 0 And Criterio.Value <> "" Then
                    somm = somm + sommare(i, j).Value
                End If
            Next Criterio
        Next j
    Next i
    sommase = somm
End Function

ma .... il computer grida vendetta e ad ogni tasto che premo su questo foglio di excel, la ventola va a 1.000 e il calcolo automatico mi fa perdere la pazienza

cosa succede ?

c'e' qualcosa che non va ?

e' possibile usare una funzione propria di excel, senza una funzione personalizzata ?

grazie

mauro


 

Informazioni domanda


Ultimo aggiornamento febbraio 27, 2018 Visualizzazioni 259 Si applica a:
Risposta

Ciao Mauro,

Prova qualcosa del genere:

'=========>>
Option Explicit

'--------->>
Function SommaSe(rngDati As Range, rngCriteri As Range, rngSommare As Range)
    Dim Criterio As Range
    Dim Rng As Range
    Dim arrIn As Variant, arrCrit As Variant
    Dim i As Long
    Dim mySum As Double
    Dim Res As Variant

    Set Rng = Union(rngDati, rngSommare)
    arrIn = Rng.Value
    arrCrit = rngCriteri.Value

    For i = 1 To UBound(arrIn, 1)
        Res = Application.Match(arrIn(i, 1), arrCrit, 0)
        If Not IsError(Res) Then
            If IsNumeric(arrIn(i, 2)) Then
                mySum = mySum + arrIn(i, 2)
            End If
        End If
    Next i

    SommaSe = mySum
End Function
'<<=========

===

Regards,

Norman

Il problema è stato risolto?

Siamo spiacenti che questo non sia stato d'aiuto.

Fantastico! Grazie per aver scelto questa risposta.

Sei soddisfatto di questa risposta?

Grazie per il tuo commento, ci aiuta a migliorare il sito.

Sei soddisfatto di questa risposta?

Grazie per il tuo commento.

Risposta

bene, anzi benino

io vorrei escludere lo zero e il vuoto

vedi allegato

https://www.dropbox.com/s/c4dvdhiapda2rct/sommase%20norman.xlsm

se c'e' un vuoto e basta, la somma è esatta

se c'e' uno zero, prima o dopo, allora somma anche lo spazio

ciao

Chissà se una delle tre ti andrà bene. 

Somma i criteri, lo zero, ma anche le celle vuote che, in questo caso, sono considerate zero:

=MATR.SOMMA.PRODOTTO(--VAL.NUMERO(CONFRONTA(D5:D11;E15:J15;0));E5:E11)

Somma i criteri e lo zero, considerato anch'esso un criterio valido, ma non le celle vuote:

=MATR.SOMMA.PRODOTTO(--VAL.NUMERO(CONFRONTA(D5:D11;E15:J15;0));--NON(VAL.VUOTO(D5:D11));E5:E11)

Somma solo i criteri, ignorando lo zero e le celle vuote:

=MATR.SOMMA.PRODOTTO(--VAL.NUMERO(CONFRONTA(D5:D11;E15:J15;0));--(D5:D11>0);E5:E11)

Andrea

Il problema è stato risolto?

Siamo spiacenti che questo non sia stato d'aiuto.

Fantastico! Grazie per aver scelto questa risposta.

Sei soddisfatto di questa risposta?

Grazie per il tuo commento, ci aiuta a migliorare il sito.

Sei soddisfatto di questa risposta?

Grazie per il tuo commento.