2012-02-03 3 views
20

Sto cercando di avere una funzione simile a SOMMA.PIÙ.SE (come SUMIF ma con più di un unico criterio) in un foglio di calcolo di Google. MS-Excel ha questa funzione integrata (http://office.microsoft.com/en-us/excel-help/sumifs-function-HA010342933.aspx?CTT=1).SOMMA.PIÙ.SE in Google Spreadsheet

ho provato ad usare ArrayFormula (http://support.google.com/docs/bin/answer.py?hl=en&answer=71291), simile al SUMIF:

=ARRAYFORMULA(SUM(IF(A1:A10>5, A1:A10, 0))) 

aggiungendo E:

=ARRAYFORMULA(SUM(IF(AND(A1:A10>5,B1:B10=1), C1:C10, 0))) 

Ma la funzione E non ha raccolto il Ar rayFormula istruzione e restituito FALSO tutte le volte.

L'unica soluzione che ho trovato è stato quello di utilizzare QUERY che sembra un po 'lento e complesso:

=SUM(QUERY(A1:C10,"Select C where A>5 AND B=1")) 

Il mio obiettivo è quello di riempire una tabella (simile a una tabella pivot) con molte valori da calcolare:

=SUM(QUERY(DataRange,Concatenate("Select C where A=",$A2," AND B=",B$1))) 

Qualcuno è riuscito a farlo in un modo più semplice e veloce?

risposta

10

ho trovato una funzione più veloce per riempire il "tabella pivot":

=ARRAYFORMULA(SUM(((Sample!$A:$A)=$A2) * ((Sample!$B:$B)=B$1) * (Sample!$C:$C))) 

Sembra correre molto più velocemente senza il pesante String e Query funzioni.

+2

un'altra idea, se ho ottenuto la tua domanda giusta, sarebbe '= ARRAYFORMULA (SUMIF (campione! A: A & campione! B: B; A & B; campione! C: C))' – cregox

+0

Mi piace molto il metodo di Guy. Stavo usando il metodo 'SUM (FILTER (sourceArray, arrayCondition_1, ...' da Javaaaa sopra) ma ero infastidito dal fatto che dovevo avvolgerlo in un 'IFERROR()' per catturare i casi '# N/A' quando' FILTER () 'ha restituito zero risultati.Il metodo" pivot table "non ha errori con zero risultati come volevo Sweet –

1

Questo tipo ha utilizzato la funzione Filtro per abbattere l'array in base ai criteri, quindi la funzione somma per aggiungerla alla stessa cella. http://www.youtube.com/watch?v=Q4j3uSqet14 Ha funzionato come un incantesimo per me.

+1

Il metodo nel video è simile al metodo QUERY che ho trovato essere piuttosto lento su un grande foglio di calcolo. Anche con 4 righe ci sono voluti un secondo per calcolare – Guy

13

Il modo più semplice per creare facilmente funzioni simili a SumIFS secondo me è combinare la funzione FILTER e SUM.

SUM(FILTER(sourceArray, arrayCondition_1, arrayCondition_2, ..., arrayCondition_30)) 

Ad esempio:

SUM(FILTER(A1:A10;A1:A10>5;B1:B10=1) 

Spiegazione: FILTER() filtra le righe A1: A10 dove A1: A10> 5 e B1: B10 = 1. Quindi SUM() somma i valori di quelle celle.

Questo approccio è molto flessibile e consente di eseguire facilmente anche le funzioni COUNTIFS() (basta usare COUNT() invece di SUM()).

+0

Vedo che hai scritto un post su di esso e che va più in profondità, potrebbe essere utile citare: http://spreadsheetpro.net/how-to-make-sumifs- CONTA.PIÙ.SE-averagifs-funzioni-in-google-foglio di calcolo / – Javaaaa

7

A partire da dicembre 2013, Fogli Google ora dispone di una funzione SUMIFS, come indicato in this blog post e documentata here.

Nota che i vecchi fogli di calcolo non vengono convertiti nella nuova versione, anche se puoi provare a copiare i dati in una nuova cartella di lavoro.