He realizado varias entradas sobre las distintas formas de sumar un rango si este cumple con ciertas condiciones, es decir, una suma condicional. Excel ya nos trae una buena función que es SUMAR.SI(), la cual es sencilla y bastará seguir las instrucciones de la Ayuda (F1) para manejarla sin problemas.
Lo que sucede. siempre, es que nuestro trabajo necesita ir mas allá de lo "empaquetado" y SUMAR.SI() se nos "queda" corta a la hora de intentar resolver ciertos trabajos. Existen muchas formas de resolver este asunto, pero mi preferida es una: funciones matriciales (recordemos: aquellas que recorren el rango de datos, va analizando celda x celda y, de cumplirse la/s condición/es, actúa. Una vez ingresada en la celda, debemos presionar Ctrol + Alt + Enter).
La consulta de mi lector: "-Usando la suma condicional ¿puedo sumar valores de un rango sólo si sus primeros 4 números comienzan en 1122"?
Si, se puede, y solamente con funciones, sin recurrir a código VBA
[+/-] Ver el resto / Ocultar
Bueno, sigamos.
Lo primero es planear el "Paso a paso", el "¿qué debo lograr?". Esto sería: Excel tiene que sumar todas las celdas que comienzan con 1122; entonces debo evaluar esos 4 caracteres, si es 1122, lo suma, caso contrario, lo omite.
Veamos en una imagen la primer aproximación, en donde utilizo IZQUIERDA(TEXTO; CARACTERES) para saber si el valor de una celda comienza o no con 1212:
en la barra de fórmulas se observa como la armé; en cada celda de la columna B los resultados: los tres primeros valores comienzan con 1212
Ya comentamos en varias oportunidades que VERDADERO es igual a 1 y FALSO es igual a 0 ¿Por qué recordarlo en este momento? Por que los valores devueltos por la función IZQUIERDA() son texto... y resultará muy difícil que Excel nos sume texto. Si multiplico la Columna A por la Columna B (esta última contiene en realidad unos y ceros), obtendré en C el valor numérico:
En C observamos (ver la barra de fórmulas) como B1*A1 es lo mismo que multiplicar los valores de A por cero o por uno.
Paso a paso vimos como con IZQUIERDA evaluamos si la celda comienza con 1212, para luego multiplicarlo por VERDADERO o FALSO para obtener su real valor numérico, y no el texto (como ya dijimos que hace la función).
Ahora, uniendo todo, les escribo la función que realicé:
=SUMA(SI(IZQUIERDA(A1:A12;4)="1212";(A1:A12)*1))
1) Abro todo el trabajo con la función SUMA.
2) Ahora sigue el SI, que evaluará como VERDADERO o FALSO la consigna
3) Pregunto si el valor de A1:A12 empieza con "1212"
4) Si la respuesta a la pregunta anterior es VERDADERO, sumo la celda y a ese valor lo multiplico por 1, y así me aseguro que Excel transforme el resultado en valor.
5) La imagen que corrobora todo lo anteriormente dicho:
Listo, funciona
Habrán observado que dentro de la fórmula utilicé el código a evaluar: "1212". Para hacer las cosas un poco mas "maleables" y que se ajusten a proyectos reales, habría que reemplazar ese "1212" por el valor que nuestros usuarios ingresen en una determinada celda... quizás mañana podrían necesitar evaluar las celdas que comiencen con otros caracteres:
Miren bien y analicen lo expuesto en la barra de fórmulas: le digo que "si es igual al Texto de J1"... de omitir esto, tendría nuevamente "interferencias" entre lo que yo evalúo como numérico o texto y como lo hace realmente Excel.
Como la función es matricial (lo que me indica que se recorren celdas) a J1 le hago referencia "absoluta", es decir $J$1, para que dicha celda no "se corra" mientras se ejecuta la función.
No dejen de utilizar las matriciales, son espectaculares y nos permiten ir "mas allá" de las fórmulas preinstaladas de nuestro querido Microsoft Excel.
Espero les sirva, aqui va el
link al archivo, un gran saludo y
muchas gracias por sus mensajes.
Comentarios
Publicar un comentario