Imprimir página | Cerrar ventana

Sumar datos si otra celda no es cero

Impreso de: Foro de Access y VBA
Categoría: Otros de Microsoft: Windows y Office
Nombre del foro: Excel
Descripción del foro: Foro de Excel y VBA de Excel
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=86434
Fecha de impresión: 26/Marzo/2026 a las 21:00


Tema: Sumar datos si otra celda no es cero
Publicado por: lbauluz
Asunto: Sumar datos si otra celda no es cero
Fecha de publicación: 03/Agosto/2022 a las 12:39
Buenos días:

Tengo datos numéricos de C31 a N31, del año 2021.
Tengo datos numéricos de C34 a N34, del año 2022.

En la celda C36 quiero sumar los valores de los últimos 12 meses.

Para todo 2022 es fácil, C36=SUM(C34:N34).

Ahora bien, si tengo meses en 2022 con valor 0, tengo que añadir ese mes del año 2021.

En otras palabras, si en febrero de 2022 el valor es 0 (celda D34) tengo que añadirle el valor de febrero de 2021 (celda D31).

Esto sería tan fácil como C36=SUM(C34:N34)+D31.

Pero claro, no sé qué meses van a tener 0 en 2022, por lo que tengo que usar una fórmula que mire el valor en la fila 34 y si es cero, coja el valor de la misma columna pero fila 31.

Me lo he planteado con offset pero me resulta muy complicado "=if(offset(...." para todos los meses, por lo que busco una forma más sencilla de hacerlo pero no se me ocurre ahora mismo.

Así que cualquier idea será muy bien venida.

Otro detalle, sin VBA.

Gracias.

Luis.


-------------
El Búho es un pajarraco



Respuestas:
Publicado por: lbauluz
Fecha de publicación: 03/Agosto/2022 a las 14:52
Bueno, mi solución ha sido:

En la celda C36

=SUM(C34:N34)
+IF(OFFSET(B37; -3; 1) =0; OFFSET(B37; -6; 1); 0)
+IF(OFFSET(B37; -3; 2) =0; OFFSET(B37; -6; 2); 0)
+IF(OFFSET(B37; -3; 3) =0; OFFSET(B37; -6; 3); 0)
+IF(OFFSET(B37; -3; 4) =0; OFFSET(B37; -6; 4); 0)
+IF(OFFSET(B37; -3; 5) =0; OFFSET(B37; -6; 5); 0)
+IF(OFFSET(B37; -3; 6) =0; OFFSET(B37; -6; 6); 0)
+IF(OFFSET(B37; -3; 7) =0; OFFSET(B37; -6; 7); 0)
+IF(OFFSET(B37; -3; 8) =0; OFFSET(B37; -6; 8); 0)
+IF(OFFSET(B37; -3; 9) =0; OFFSET(B37; -6; 9); 0)
+IF(OFFSET(B37; -3; 10) =0; OFFSET(B37; -6; 10); 0)
+IF(OFFSET(B37; -3; 11) =0; OFFSET(B37; -6; 11); 0)
+IF(OFFSET(B37; -3; 12) =0; OFFSET(B37; -6; 12); 0)


funciona, pero no me acaba de gustar

Si hay sugerencias, se agradecerán, si no, en unos días cierro el hilo.

Luis



-------------
El Búho es un pajarraco


Publicado por: AnSanVal
Fecha de publicación: 04/Agosto/2022 a las 19:27

No había visto tu mensaje.Embarrassed


Esto me funciona:

[C36]    =SUMA($C$34:$N$34) + SUMAPRODUCTO(($C$31:$N$31)*($C$34:$N$34=0))






-------------
Saludos desde Tenerife.


Publicado por: AnSanVal
Fecha de publicación: 04/Agosto/2022 a las 21:24
También con SUMAR.SI.CONJUNTO (las últimas funciones matriciales no las he estudiado aún):

[C36]    =SUMA(C34:N34;SUMAR.SI.CONJUNTO(C31:N31;C34:N34;""))

  A    B    C    D    E    F    G    H    I    J    K    L    M    N
29
30    ENE    FEB    MAR    ABR    MAY    JUN    JUL    AGO    SEP    OCT    NOV    DIC
31 2021 222 218 441 567 600 351 502 563 629 536 431 477
32
33
34 2022 1 1 1 1   1 1 1 1 1 1 1
35
36 611
37


EDITADO:  Si los valores de las filas 31 y 34 son el resultado de fórmulas, posiblemente en lugar de comillas dobles deberás poner cero.




-------------
Saludos desde Tenerife.


Publicado por: lbauluz
Fecha de publicación: 05/Agosto/2022 a las 10:45
Pues funciona de vicio, D. Antonio.

Y sin la menos duda, mucho más práctico que lo mío... además de más elegante.

Lo único es traducirlo al gringo, en mi caso, y listo.

Mil gracias.

Luis


-------------
El Búho es un pajarraco


Publicado por: xavi
Fecha de publicación: 07/Agosto/2022 a las 16:17
Con permiso ya que has mencionado la traducción al gringo.

En mis clases me encuentro con usuarios que tiene Office instalado en diferentes idiomas. Lo más usual es que sea inglés pero también he encontrado catalán, francés y portugués. Y una vez un alemán.

También tuve el problema en un cliente dónde tenia máquina virtualizada que me pusieron el office en inglés.

Para esos momentos descubrí una herramienta en la tienda de Microsoft.

Desde Excel (en mi Office 365 versión 2206)
Pestaña Insertar
Bloque Complementos
Opción Obtener complementos (se abre ventana)
Categoría Productividad
En el cuadro de búsqueda: translate (+ intro, obviamente)
La primera opción es "Functions Translator, a Microsoft Garage project.
Lo agregáis y aparece, en la pestaña Inicio, un nuevo bloque "Traductor de funciones" con  las 2 opciones.

Una maravilla.

Saludos



-------------
Xavi, un minyó de Terrassa

http://www.llodax.com" rel="nofollow - Mi web


Publicado por: AnSanVal
Fecha de publicación: 07/Agosto/2022 a las 22:34
Es bueno saberlo (una más). Thumbs Up

Yo (cuando traduzco) suelo utilizar «Santa grabadora»:

a.- Doy a Grabar macro.

b.- Entro la fórmula:  =SUMA(C34:N34;SUMAR.SI.CONJUNTO(C31:N31;C34:N34;""))

c.- Detengo la grabadora.

d.- Código grabado:  "=SUM(R[-2]C:R[-2]C[11],SUMIFS(R[-5]C:R[-5]C[11],R[-2]C:R[-2]C[11],""""))"

e.- Que yo adapto a :  =SUM(C34:N34,SUMIFS(C31:N31,C34:N34,""))



Pega Sólo me vale para español → inglés y para inglés → español*.


* (con Office en español · desde VBA).- Range("C36").Formula = "=SUM(R[-2]C:R[-2]C[11],SUMIFS(R[-5]C:R[-5]C[11],R[-2]C:R[-2]C[11],""""))"






-------------
Saludos desde Tenerife.


Publicado por: lbauluz
Fecha de publicación: 08/Agosto/2022 a las 06:41
Muy bueno saberlo, porque a veces es un dolor de cabeza, aunque normalmente yo suelo usar Google para buscar la traducción.

Gracias.

Luis


-------------
El Búho es un pajarraco



Imprimir página | Cerrar ventana