Esiste una formula Excel concisa per calcolare (A1 * A6) + (B1 * B6) + (C1 * C6) ...?


45

Voglio sapere come dare una formula concisa per la seguente formula lunga nel foglio di Excel:

= (A1*A6)+(B1*B6)+(C1*C6)...

Uso una funzione di somma o esiste un'altra funzione per questo? Penso che usare i due punti con la SUMfunzione dovrebbe aiutare, ma non so come usarlo.


4
Possibile duplicato (su più siti) di Excel: prodotto scalare di due intervalli
StackTranslate.it


7
Matematicamente, questo è noto come il prodotto punto o il prodotto scalare. Termini utili se mai dovessi usare il tuo motore di ricerca preferito.
Philip Kendall,

prodotto interno: in genere trasponiamo questo problema in modo da farlo (A1 * B1 + A2 * B2 + C3 * B3 ....) .... Naturalmente questa è solo notazione ...
JosephDoggie,

Risposte:


110

Stai cercando la funzione SUMPRODUCT .

=SUMPRODUCT(A1:C1,A6:C6)

Ciò restituirà la somma dei prodotti degli articoli corrispondenti in due (o più) gamme.

inserisci qui la descrizione dell'immagine

Come puoi vedere dalla documentazione di Microsoft a cui ho collegato, gli intervalli non devono necessariamente essere righe singole o colonne singole (sebbene debbano avere le stesse dimensioni).

SUMPRODUCT può moltiplicare valori fino a 255 intervalli diversi. Ad esempio =SUMPRODUCT(A1:C1,A6:C6,A11:C11)è lo stesso di =A1*A6*A11+B1*B6*B11+C1*C6*C11.


19

SUMla funzione non funziona poiché aggiunge solo gli elementi. È necessario moltiplicare i valori prima di passare a SUM come=SUM(A1*A6, B1*B6, C1*C6, D1*D6, E1*E6)

Ovviamente puoi anche usare il =A1*A6 + B1*B6 + C1*C6 + D1*D6 + E1*E6che si traduce in praticamente nello stesso sforzo di digitazioneSUM

Esistono molte soluzioni migliori. Un modo è usare la formula di array . Puoi vedere un esempio esatto come il tuo laggiù:

Sintassi della formula dell'array

In generale, le formule di matrice utilizzano la sintassi della formula standard. Iniziano tutti con un segno uguale (=) e puoi utilizzare la maggior parte delle funzioni di Excel integrate nelle tue formule di array. La differenza chiave è che quando si utilizza una formula di matrice, si preme Ctrl+ Shift+ Enterper inserire la formula. Quando si esegue questa operazione, Excel circonda la formula dell'array con parentesi graffe: se si digitano manualmente le parentesi graffe, la formula verrà convertita in una stringa di testo e non funzionerà.

Le funzioni di matrice sono un modo davvero efficiente per creare una formula complessa. La formula dell'array =SUM(C2:C11*D2:D11)è la stessa di questa:

=SUM(C2*D2,C3*D3,C4*D4,C5*D5,C6*D6,C7*D7,C8*D8,C9*D9,C10*D10,C11*D11).

Per utilizzare la formula dell'array nel tuo caso, puoi digitare (ovviamente devi modificare di conseguenza l'ultimo elemento dell'array)

=SUM(A1:E1*A6:E6)

e quindi premere Ctrl+ Shift+Enter


La formula di matrice è uno strumento molto potente. Tuttavia, usalo con cura. Ogni volta che devi modificarlo, non dimenticare di premere Ctrl+ Shift+Enter

Perché usare le formule di array?

Se hai esperienza nell'uso delle formule in Excel, sai che puoi eseguire alcune operazioni abbastanza sofisticate. Ad esempio, è possibile calcolare il costo totale di un prestito in un determinato numero di anni. È possibile utilizzare le formule di array per eseguire attività complesse, come:

  • Conta il numero di caratteri contenuti in un intervallo di celle.

  • Somma solo i numeri che soddisfano determinate condizioni, come i valori più bassi in un intervallo o i numeri che rientrano tra un limite superiore e inferiore.

  • Somma ogni ennesimo valore in un intervallo di valori.

Le formule di matrice offrono anche questi vantaggi:

  • Coerenza: se si fa clic su una delle celle da E2 verso il basso, viene visualizzata la stessa formula. Tale coerenza può aiutare a garantire una maggiore precisione.

  • Sicurezza: non è possibile sovrascrivere un componente di una formula di array a più celle. Ad esempio, fare clic sulla cella E3 e premere Elimina. Devi selezionare l'intero intervallo di celle (da E2 a E11) e modificare la formula per l'intero array o lasciare l'array così com'è. Come ulteriore misura di sicurezza, devi premere Ctrl+ Shift+ Enterper confermare la modifica alla formula.

  • Dimensioni file più piccole: spesso è possibile utilizzare una formula a matrice singola anziché diverse formule intermedie. Ad esempio, la cartella di lavoro utilizza una formula di matrice per calcolare i risultati nella colonna E. Se avessi utilizzato formule standard (come = C2 * D2, C3 * D3, C4 * D4 ...), avresti utilizzato 11 diverse formule per calcolare gli stessi risultati.

È anche più veloce poiché il modello di accesso è già noto. Ora invece di eseguire separatamente 11 diversi calcoli, può essere vettorializzato e fatto in parallelo, utilizzando più core e unità SIMD nella CPU


7
Tuttavia, tenere presente che le funzioni dell'array sono molto fragili. Se le copi e le incolli, ad esempio, le cose possono andare davvero male. Spesso, non saranno aggiornati correttamente senza un aggiornamento forzato se sono molto grandi. Funzionalità grande e potente, ma persnickety rispetto alle formule normali.
JKreft,

3
@StianYttervik: penso che la risposta sia utile. E se qualcuno aprisse un foglio con questo tipo di formula e non lo avesse mai visto prima? Questa risposta sarebbe utile per quegli utenti.
Bad_Bishop,

3
La formula dell'array @StianYttervik è un potente strumento nella mano corretta. Non è affatto lento , poiché può essere più facile da ottimizzare e vettorializzare. E risparmia memoria. Anche i documenti di Google lo supportano. E non rispondere a questo. Non risponderò più
phuclv

2
@StianYttervik Alcune funzioni (ad es. MOD) Causeranno la SUMPRODUCTrottura, quindi dovrai sostituirlo con una formula di matrice. Per non parlare di ogni versione di Office rilasciata ancora più comunemente usata Formule di array aggiunte come funzioni ufficiali (ad es. MAXIFSIn 365) Se la tua formula di array è lenta, goffa e frammentaria, probabilmente dovrai ottimizzare il tuo codice. E, naturalmente - poiché PowerQuery è un'estensione aggiuntiva, molte aziende (per vari motivi) non la includeranno nel loro pacchetto di build aziendale, rendendola una soluzione inferiore per scopi aziendali distribuiti.
Chronocidal,

1
@Chronocidal Sì, ci sono casi, ma sono pochi ... E quindi le domande di potere sono la soluzione. O il modello di dati. O funzioni cubo. O tutto quanto sopra. Le matrici e il calcolo / esecuzione riga per riga non possono essere misurati.
Stian Yttervik,

7

Un altro approccio è quello di inserire in A7 l'espressione = A1 * A6 e copiarlo nel modo desiderato, quindi sommare la riga $ 7 $ per ottenere la risposta finale. Non lo fa in una cella come vuoi, ma a volte avere i prodotti intermedi è utile. Ho usato entrambe le versioni. Questo mi sembra più Excel, ma i tuoi gusti potrebbero essere diversi.


1

se metti un elenco di numeri in colonne anziché in righe (diciamo due colonne A e B), puoi usare la funzione = Sumproduct (A: A, B: B) in questo modo. ti darà il prodotto con tutti i numeri che ci sono nelle colonne A e B.

Puoi utilizzare tutte le colonne nella funzione Sumproduct di cui hai bisogno


2
Sumproduct (1: 1,2: 2) funziona allo stesso modo anche per le file.
Máté Juhász,

0

Se non c'è nient'altro nelle righe 1 e 6 diverso da quello che si desidera avere un SUMPRODUCT()per, è possibile utilizzare l'idea menzionata in questo commento . Nel tuo caso come indicato nella tua domanda che useresti=SUMPRODUCT(1:1,6:6)


4
Questo in realtà non fornisce ulteriori informazioni oltre a ciò che è già stato inserito nelle risposte e nei commenti.
Máté Juhász,

1
@ MátéJuhász - Quale risposta fornisce la mia risposta? Il tuo commento alla risposta fornita da @AjayC dà SUMPRODUCT(1:1,2:2)e io ho fornito una risposta basata su quel commento, elaborando come può essere usato in base alla domanda originale e quale sarebbe la limitazione.
Chris Rogers,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.