Condividi tramite

Uso di matr.somma.prodotto tra più fogli di lavoro

Anonimo
2024-06-21T01:24:50+00:00

In una cartella ci sono 71 fogli di lavoro simili più un foglio riepilogo.

In quest'ultimo c'è una colonna con la lista i nomi di tutti i fogli di lavoro (da aa3 a aa73) che uso solo per la funzione indiretto.

In a1 fino ad a6 ho il nome di 6 dipendenti.

Il mio obbiettivo è fare il prodotto di due matrici uguali e fare le somme.

La prima matrice rappresenta la somma delle celle c10:c15 di ogni foglio e ricorro a questa sintassi: somma(indiretto("'"&aa3:aa73&"'! C10:C15).

Per la seconda matrice devo avere una sequenza di 0 e 1 a seconda che la cella e7 di ogni foglio abbia o meno il nome del dipendente ad esempio di a1 e uso la sintassi: --(indiretto("'"&aa3:aa73&"'!e7)=a1)

Le formula finale: matr.somma.prodotto(somma(indiretto("'"&aa3:aa73&"'!C10:C15));(--(indiretto("'"&aa3:aa73&"'!e7)=a1)))

... non funziona.

C'è una soluzione senza replicare questi dati sul foglio riepilogo?

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
  1. Eleuterio Tedeschi 18,590 Punti di reputazione Moderatore volontario
    2024-06-21T20:48:34+00:00

    Grazie, ma davvero speravo in una 365, aggira pertanto l'ostacolo con una udf in VBA:

    Function SommaFogli(ByVal Condizione As String) 
    
    Dim wksT As Worksheet 
    
        Application.Volatile 
    
        For Each wksT In Worksheets 
    
            If wksT.Name <> "RIEPILOGO" And UCase(wksT.Range("E7").Value) = UCase(Condizione) Then 
    
                SommaFogli = SommaFogli + Application.Sum(wksT.Range("C10:C15")) 
    
            End If 
    
        Next wksT 
    
    End Function 
    

    la usi sul foglio RIEPILOGO

    F2

    =SommaFogli(E2)

    e tiri in basso, trovi il tuo file modificato qui.

    Ciao.

    1 persona ha trovato utile questa risposta.
    0 commenti Nessun commento

30 risposte aggiuntive

Ordina per: Più utili
  1. Eleuterio Tedeschi 18,590 Punti di reputazione Moderatore volontario
    2024-06-21T08:55:29+00:00

    Però la condizione è che la cella E7 di ogni foglio sia uguale a A1 del foglio di riepilogo, in mancanza della versione e, magari, di un file condiviso su OneDrive, preferisco aspettare.

    Ciao.

    0 commenti Nessun commento
  2. Gianfranco55 25,190 Punti di reputazione Moderatore volontario
    2024-06-21T08:41:59+00:00

    Ciao

    =MATR.SOMMA.PRODOTTO(SE.ERRORE(SOMMA.PIÙ.SE(INDIRETTO("'"&AA3:AA73&"'!C10:C15");INDIRETTO("'"&AA3:AA73&"'!C10:C15");A1);0))

    0 commenti Nessun commento
  3. Anonimo
    2024-06-21T07:03:59+00:00

    Dipende dalla tua versione di Excel, premesso che personalmente ho delle remore anche per questa:
    =SOMMA(INDIRETTO("'"&AA3:AA73&"'!C10:C15"))

    perché mi risulta che renda solo le prime celle di ogni intervallo, se non hai la 365 ti consiglio di usare altri metodi per farlo.

    Confermo.

    0 commenti Nessun commento
  4. Eleuterio Tedeschi 18,590 Punti di reputazione Moderatore volontario
    2024-06-21T06:17:46+00:00

    Dipende dalla tua versione di Excel, premesso che personalmente ho delle remore anche per questa:
    =SOMMA(INDIRETTO("'"&AA3:AA73&"'!C10:C15"))

    perché mi risulta che renda solo le prime celle di ogni intervallo, se non hai la 365 ti consiglio di usare altri metodi per farlo.

    Ciao.

    P.S.

    =INDIRETTO("'"&AA3:AA5&"'!E7")=A1

    =VAL.NUMERO(CONFRONTA(INDIRETTO("'"&AA3:AA5&"'!E7");A1;0))

    =CONTA.SE(A1;INDIRETTO("'"&AA3:AA5&"'!E7"))

    non sembrano funzionare con INDIRETTO su più fogli.

    0 commenti Nessun commento