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?

picakhu
fuente

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.

pnuts
fuente
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.

Jook
fuente
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), "")

Mickey666
fuente
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.

xohaib
fuente