2012-02-03 24 views
20

estoy tratando de tener una función similar a SUMAR.SI.CONJUNTO (como función SUMAR.SI pero con más de un criterio único) en una hoja de cálculo de Google. MS-Excel tiene esta función incorporada (http://office.microsoft.com/en-us/excel-help/sumifs-function-HA010342933.aspx?CTT=1).SUMAR.SI.CONJUNTO de cálculo de Google

He intentado utilizar ArrayFormula (http://support.google.com/docs/bin/answer.py?hl=en&answer=71291), similar a la función SUMAR.SI:

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

al agregar Y:

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

Pero la función deY no recogió el Ar rayFormula instrucción y devolvió FALSE todo el tiempo.

La única solución que pude encontrar fue utilizar CONSULTA que parece un poco lento y complejo:

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

Mi objetivo es llenar una tabla (similar a una tabla dinámica) con muchas valores para calcular:

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

¿Alguien logró hacerlo de una manera más simple y más rápida?

Respuesta

10

me encontré con una función más rápido para llenar la "tabla dinámica":

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

Parece que se encuentra mucho más rápido sin la pesada cadena y consulta funciones.

+2

otra idea, si obtuve su pregunta correcta, sería '= ARRAYFORMULA (SUMA (Muestra! A: A & Muestra! B: B; A & B; Muestra! C: C))' – cregox

+0

Me gusta mucho el método de Guy. Estaba usando el método 'SUM (FILTER (sourceArray, arrayCondition_1, ...) de Javaaaa, pero me molestaba tener que envolverlo en un' IFERROR() 'para capturar los casos' # N/A' cuando 'FILTER () 'devuelto cero resultados. El método de la" tabla dinámica "no se equivoca con cero resultados como yo quería. Dulce! –

1

Este tipo usó la función de Filtro para cortar la matriz por los criterios, luego la función de suma para agregarlo todo en la misma celda. http://www.youtube.com/watch?v=Q4j3uSqet14 Funcionó como un encanto para mí.

+1

El método en el video es similar al método QUERY que me pareció bastante lento en una gran hoja de cálculo. Incluso con 4 filas, tardó un segundo en calcular. – Guy

13

La forma más sencilla de hacer fácilmente funciones similares a SumIFS en mi opinión es combinar las funciones FILTER y SUM.

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

Por ejemplo:

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

Explicación: el filtro() Filtros las filas en A1: A10 donde A1: A10> 5 y B1: B10 = 1. Entonces SUM() suma los valores de esas celdas

Este enfoque es muy flexible y permite fácilmente hacer también funciones COUNTIFS() por ejemplo (solo use COUNT() en lugar de SUM()).

+0

Veo que también escribió una publicación que profundiza, podría ser útil mencionar: http://spreadsheetpro.net/how-to-make-sumifs- countifs-averagifs-functions-in-google-spreadsheet / – Javaaaa

7

A partir de diciembre de 2013, Hojas de cálculo de Google ahora tiene una función SUMARJAR, como se menciona en this blog post y documentó here.

Tenga en cuenta que las hojas de cálculo antiguas no se convierten a la nueva versión, aunque puede intentar copiar y pegar los datos en un nuevo libro de trabajo.

Cuestiones relacionadas