Subtotal de Excel para celdas en blanco.


2

Tengo datos en Excel que parece

10
15
12

3
2

5
3

Me gustaría devolver subtotales como

10
15
12
    37
3
2
    5
5
3
    8

¿Hay alguna manera de lograr esto en Excel?

Respuestas:


3

Una alternativa que podría ser de alguna utilidad y posiblemente sea más versátil (también evita el "monstruo" en caso de que no sea fácil de recrear a mano) sería unir operaciones más familiares.

Asumiendo: ColumnA es 'repuesto'; los valores están en ColumnB; Row1 contiene una etiqueta, y C1 tiene algo dentro (diga 'Suma').

Requiere identificación de valor 'bloques', por lo que filtrar A:Cdesmarcar (Blanks) en B, tecla decir "v" en A2 y copiar hacia abajo al último número de fila azul.

Seleccionar A1:C{last blue row number}, elimine el filtro (si se requiere agrupación), subtotal con En cada cambio en: "(Columna A)", use la función: "Suma", agregue subtotal a: marque la casilla "Suma", OK.

Eliminar filas en blanco (por ejemplo, mediante el filtrado ColumnA ), luego Eliminar ColumnA.

Seleccionar ColumnB, Encuentre qué: ‘, B’, Reemplace con: ‘, A’, haga clic en Replace All.

El total general es una bonificación.


Muchas gracias. ¡Aprendí mucho más sobre Excel a través de esta respuesta!
— picakhu

5

Se me ocurrió este monstruo, pero funciona bien, puedes copiarlo:

=IF(ISBLANK(A4),SUBTOTAL(9,OFFSET(B4,IFERROR(MATCH(0,$B$1:B3,-1),1)-ROW(),-1,ROW()-IFERROR(MATCH(0,$B$1:B3,-1),1),1)),"")

Este es mi original (alemán):

=WENN(ISTLEER(A4);TEILERGEBNIS(9;BEREICH.VERSCHIEBEN(B4;WENNFEHLER(VERGLEICH(0;$B$1:B3;-1);1)-ZEILE();-1;ZEILE()-WENNFEHLER(VERGLEICH(0;$B$1:B3;-1);1);1));"")

Entonces, cuando la celda en Col A está vacía, haga un subsum, sumando los valores de obove, hasta el último subsum o 1.

Si el foro no está claro, no dude en preguntar sobre detalles.

Editar

En código pseudo / explicado:

IF(ISBLANK(A4),SUBTOTAL(),"")

Si la celda de la fila actual en la columna A está vacía, calcule el subtotal, de lo contrario no muestre nada.

SUBTOTAL(9,RANGE)

Cree el subtotal usando la función de suma (9) para el RANGO dado

RANGE = OFFSET(B4,ROWS,COLS,HEIGHT,WIDTH)

El rango para el subtotal se crea compensando / abarcando un rango, en función de la celda B4.

En este ejemplo concreto de B4, esto sería como escribir:

OFFSET(B4,-3,-1,3,1)

Entonces, cree un rango, que es de 3 filas por encima de B4 (-3), y 1 col a la izquierda (-1), y es de 3 filas hacia abajo / alto y 1 col de ancho.

Para calcular -3 y 3, que diferirán según las filas entre dos celdas vacías en la columna A, usamos estos:

IFERROR(MATCH(0,$B$1:B3,-1),1)-ROW()

ROW()-IFERROR(MATCH(0,$B$1:B3,-1)

que son básicamente lo mismo, salvo el signo.

MATCH(0,$B$1:B3,-1) busca por encima de 0 (-1 significa más grande) en la columna b, desde la primera celda hasta la anterior de la actual ($ B $ 1: B3)

Debido a que esto resultará en un error para el primer subtotal, el IFERROR proporciona 1 para corregir esto.

Entonces, cuando estás en B4, buscas si hay algún valor por encima de B4, asumiendo que esto es un subtotal, y si no puedes encontrar ninguno, entonces usas 1 como tu fila. 1-4 = -3; 4-1 = 3 hay que ir.


Muchas gracias por esto, pero no puedo hacerlo funcionar. Me sale el error #NAME?
— picakhu

Además, esto puede ser un error de traducción, pero no hay "SUBSUM" en mi Excel.
— picakhu

es posible que desee comprobar estas fórmulas por partes, podría haber un error de traducción de algún tipo y tratar de pegarlo en la celda con la 37 en tu ejemplo Lo comprobaré de nuevo.
— Jook

sí, y no ISEMPTY - & gt; ISBLANK es lo que debería ser; SUBSUM - & gt; TOTAL PARCIAL; Edité mi respuesta
— Jook

1
Por cierto, si no es demasiado trabajo, ¿puedes publicar el pseudocódigo adecuado que haga que esto funcione? No lo entiendo muy fácilmente.
— picakhu

0

Una fórmula alternativa más corta que puedes probar:

Las líneas máximas para calcular se pueden aumentar al aumentar la "$ A $ 1000" Usando A2 como primera línea:

= IF (A2 = "", SUMA ($ A $ 1: $ A $ 1000) -UM (A3: $ A $ 1000) -UM ($ B $ 1: N2), "")


0

Se me ocurrió otra solución al mismo problema:

enter image description here

resuelto usando =if(isblank(a2),H1+1,H1+0) Fórmula en H2 y 1 en H1. Después usé subtítulos simples para obtener la solución.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.