Contar datos en varias hojas con la función BDCONTARA
Tengo un libro con 12 hojas, cada una de ellas representa el mes, es para registrar los gastos hechos. Lo que necesito es que me cuente los gastos dependiendo de la categoría que ponga y la hoja (MES) que seleccione en dos celdas, he intentado hacerlo con la funciones: SI, INDIRECTO y BDCONTARA, necesito que sea con esas funciones ya que tengo que agregarle condiciones luego de que me funciones. Cuando seleccione la categoría y el mes (HOJA), entonces me contará:
Intenté hacerlo así, pero me da error, ¿cómo lo hago?
¿Es idea mía o estas intentando almacenar el nombre de una hoja en una celda para usarla como "variable" dentro de la formula? Viendo la formula en la imagen, lo que estas intentando hacer, hasta donde yo sé, no se puede.
Es raro que nos digas explicitamente que solo podemos usar ese método de SI, INDIRECTO y BDCONTARA. ¿Qué te hace pensar que no hay otra alternativa? Talvez si explicas lo que quieres lograr, te podamos ayudar mejor.
Saludos.
Efectivamente, son dos listas desplegables, una es para las categorías y otra es para el mes, cuando seleccione el mes me va a dirigir a la hoja, dije que era con esas funciones porque a mi entender, mi opinión, se podría hacer, pero me da error.
Si tienes otra forma, pues puedes aportar.
Yo probablemente haría mi propia función. Entiendo que quieres contar gastos según la categoría seleccionada y el mes seleccionado, pero no dices mas que eso. Si me dijeras la columna donde están los datos que quieres contar, y de que manera están o de que manera quieres contarlos, te podría ayudar a crear la función.
Por ahora lo que interpreto que quieres hacer es algo como lo que hice en este video:
El código que use es muy simple:
Function ContarCat(Categoria As Range, Mes As Range) As Double If Categoria.Value = "" Or Mes.Value = "" Then ContarCat = 0 Exit Function End If Dim ws As Worksheet Dim CatCount As Integer For Each ws In ThisWorkbook.Sheets If ws.Name = Mes.Value Then CatCount = WorksheetFunction.CountIf(ws.Range("A:A"), Categoria.Value) ContarCat = CatCount Exit For End If Next ws End Function
Solo tendrías que poner en la celda que quieres el resultado =ContarCat() y pesarla las celdas dentro de los paréntesis.
¿Es algo así lo que necesitas?
Saludos Andy.
Me gustaría que sea en fórmula, ya que en un futuro deseo poder agregarle más criterios de una forma fácil y sencilla, utilizando la función SI o cualquier otra que conyebe lógica.
Ahí puedes ver la estructura de las 12 hojas:
Modificar macro para hacer una suma condicional en varias hojas
Ya, lo que pasa es que no todo se puede resolver con fórmulas. A parte de que estas pidiendo una Mega fórmula a la cual piensas seguir agregándole más cosas en el futuro. Las fórmulas son macros pre hechas por Microsoft, y se llaman funciones. Cuando las fórmulas de Microsoft no cumplen tus expectativas o necesidades, puedes crear tus propias funciones (fórmulas) y eso fue lo que hice. Es más fácil agregar mil condiciones a una macro que a una fórmula y más en el futuro, es mucho más fácil y rápido leer una macro que una fórmula larga. Si en el futuro quieres agregar más cosas a la macro y no sabes como, aquí esta Todoexpertos.
No se como lograr lo que deseas con una fórmula de Microsoft, supongo que más personas hubieran respondido si fuera así de sencillo como lo planteas. Quedara esperar por otra respuesta, ya que yo no se como ayudarte entonces. Disculpa
Bien Andy...
Realmente no he podido hacerlo por VBA porque la persona que me hizo la macro en esta plataforma no me volvió a responder, hace tres meses que hice esa consulta para elaborar esa macro, la misma me sumaría y contaría los gastos hechos en los 12 meses, con la misma tematica, pongo la categoría que deseo saber lo que gaste, el mes y luego me daría la suma total, la cantidad de gastos que hice con esa categoría y me dejaría seleccionar la subcategoría y tambié me daría otra suma de lo que gasté con esas subcategorías. La persona que me ayudó con esa macro no me volvió a responder, quería agregarle criterios a la macro, es decir, si en la columna B (Subcategoría) si dice "Compras, no me lo tomará en cuenta y que sea expandible, que en un futuro yo pueda seguir ampliando los criterios, hace un mes abrí una consulta para que me ayudaran, alguien me dijo que me ayudaría, pero ya no me contesta y me vi en la obligación de trabajar sin VBA ya que tengo que entregar ese proyecto en Junio, tengo la macro totalmente funcional, solo faltaría agregarles esos criterios, ¿crees que si abro otra consulta me podrías ayudar Andy?
¿
¿Al menos probaste el código que te di en mi primera respuesta? Lo que te pase es un código de función, regularmente ese tipo de código solo tienes que copiarlo y pegarlo, ya que los parámetros se los pasas tu como si escribieras una fórmula en la celda: =NombreFuncion(rango1, rango2, etc)
VBA no es tan difícil créeme, si conoces al menos lo básico, en el futuro podrás agregar cuantas condiciones más quieras, mucho más fácil que leer una mega fórmula, interpretarla, entender que hace y luego adaptarle nuevas funciones, créeme que cuando pase un tiempo y te olvides que hacia esa fórmula te volverás loco, en cambio la macro que te di es muy sencilla, solo tenias que copiarla y pegarla y ya luego si querías agregar alguna condición más, con gusto te la hubiera agregado en este hilo de conversación.
Haz la nueva pregunta y ya veré si te puedo ayudar, eso hago aquí en Todoexpertos, abro las preguntas que van surgiendo y si esta dentro de mis capacidades respondo.
Saludos Andy, si probé tu código, pero no me servirá, o por lo menos, no sé si se pueda ampliar tanto para lo que necesito. Como te dije anteriormente, había hecho varias consultas para hacer una macro que me sumara, me contara y otra macro para buscar la cantidad mayor y menor, pero la persona que me ayudó no me responde, por eso traté de hacer las mismas funciones de esa macro con fórmula, pero no me funcionó, aparte de que sería una fórmula bestial, es muy complicado de hacer. Como te dije, estoy solicitando ayuda, hice una nueva consulta para ver quien me ayuda a terminar la macro, te dejaré el enlace por si gustas en ver y si puedes aportar sería perfecto. Luego de que respondas, mandaré todos los antecedentes, el libro con la macro y los correspondientes cambios. Muchas gracias.
Chrisr, decir "si probé tu código, pero no me servirá, o por lo menos, no sé si se pueda ampliar tanto para lo que necesito."
Eso es bastante apresurado, en programación casi todo es posible, si me pides que lance un cohete al espacio te diré que no, pero que haga una macro en Excel con lo que pides, obvio que sí. Y fue exactamente lo que hice, nosotros respondemos basados en la pregunta que tu haces, no podemos hacer una macro o formula mágica basada en una idea que se te pueda ocurrir en el futuro. Con los detalles que diste en ESTA PREGUNTA, mi respuesta hace lo solicitado.
Veo que Elsa pudo ayudarte, me alegra.
Salu2
- Compartir respuesta
1 respuesta más de otro experto
Fíjate cómo estás escribiendo la primer función INDIRECTO cuando lo correcto es como aparece en las otras dos:
INDIRECTO(F15 & "!--------
Si haciendo ese arreglo aún queda algún detalle marcando error, deja escrita aquí la fórmula para una hoja cualquiera, digamos Ene. Y así poder ajustarla.
Saludos Elsa.
Gracias por tu respuesta, reestructuré la fórmula siguiendo tu consejo, me da error, lo que quiero es que cuando seleccione un mes en la celda F15 me cuente las celdas que tengan un texto distinto al de "Compras", sería bueno hacer la fórmula de manera tal que en un futuro pueda agregar más criterios, tal vez con la función (Y).
De todas formas aquí te dejo la fórmula:
=SI(Y(D15<>"";F15<>"");SI(INDIRECTO(F15&"!B5:B500<>"Compras"");BDCONTARA(INDIRECTO(F15&"!A4:E500");INDIRECTO(F15&"!A4");D14:D15);"");"")
El error está en esta parte:
Ahora está un poquito peor ;)
Así como aparecen las col de amarillo así están en la hoja 'Ene'. Todos los criterios deben ir en un rango en el último argumento. Si están en la misma fila es que se tienen que cumplir los 2.
El criterio para conceptos se ingresa en la celda E15 de este modo:
= "<>" & "Compras"
Sdos y no olvides valorar las respuestas.
Saludos Elsa.
Disculpa, pero no entendí mucho, hay una parte de la fórmula que es la más importante y no la veo, tal vez es que no entendí, pero de todas formas te explicaré :
La parte que está subrayada, aunque de error, la función que debería de hacer es que cuando yo seleccione la categoría que se va a contar, y el mes o la hoja en donde está, se dirija a esa hoja y me cuente con la función BDCONTARA.
Esta última imagen es la estructura de las 12 hojas (Meses), los datos van desde la fila 5 a la fila 500.
Disculpa si no entendí bien tu solución, me dejas saber cualquier cosa.
Reitero: los criterios van en el último argumento de la función BDContar.
Lo único que te pido es que la pruebes colocando los títulos en rango D:E tal como dejé en mi imagen. Observa que devolvió resultados correctos.
La parte más importante... si da error deja de ser importante. Está mal planteada.
Si luego de adaptar mis muestras a tu hoja te sigue dando algún error enviame 1 hoja de mes y la que lleva las formulas.
Mis correos aparecen en sitio que dejo al pie.
Saludos Elsa.
Vi detenidamente la imagen que mandaste al principio, hay un error, y es que tal como te envie la foto, en la estructura de las 12 hojas, la función BDCONTARA contará las categorias que tengan como subcategoría cualquier texto que sea distinto a la palabra "Compras", entonces, en la hoja resumen, no habrá una celda para poner el criterio "<>Compras", solo tendrá 3 celdas, una para poner categorías, otra para el mes y otra para el resultado, en tu ejemplo pusiste cuatro. Si existe una forma de hacerlo como te digo sería perfecto, ya que como podrás observar en la foto, cuidé mucho la estética, no tengo espacio para poner otra celda para los criterios, porque en un futuro pienso ampliar esos criterios.
De todas formas te dejaré un pequeño demo de mi proyecto para que lo veas y así puedes hacerme el favor de ayudarme: https://drive.google.com/file/d/1Q8l1ldB0kOVv1hm2rr_NuwcxaFex4Jcf/view?usp=sharing
Las funciones Excel no entienden de 'estetica' solo de precisión. Necesitas un rango de criterios que puedes tenerlo en algún otro sector de tu hoja.
Deja que mire tu libro más tarde y te comento más en detalle.
Sdos!
Muchas gracias Elsa, esperaré tu respuesta, está bien.
Dejame un correo para poder enviarte el libro con la fórmula según tus rangos. O solicitamelo al mío: cibersoft.arg de gmail.com
Sdos!
Si algo no se comprende deja un correo para enviarte tu libro con las 2 opciones. Aunque creo que con la siguiente imagen no tendrás dificultades.
Modelo 1: si tu versión Excel presenta la función CONTAR. SI. CONJUNTO esa es la que necesitas considerando que como dices, más adelante irás agregando criterios. La sintaxis de esta función (encontrarás más detalles en el Soporte Office) es:
CONTAR.SI.CONJUNTO(rango_criterios1; criterios1, [rango_criterios2; criterios2];…)
Modelo 2: si necesitas mantener la función BDCONTARA. Se requiere que los criterios estén todos en un rango. Lo que hice fue agregar la subcategoría en rango C15:C16 y luego cambiarle la fuente a blanca para que no te arruine la 'estética'.
La sintaxis de esta función es:
BDCONTAR(base_de_datos; nombre_de_campo; criterios)
Te recuerdo en qué consiste esta función: 'Cuenta las celdas que contienen números en un campo (columna) de registros de una lista' ... (ver Soporte Office para más aclaraciones)
Por eso cambié el 2do argumento por la col E en lugar de A donde observo solo textos.
Saludos, perfecto.
Pero una pregunta... En caso de que en un futuro yo quiera agregar en la casilla don van los meses, una palabra que diga "Todos", que al ponerla me calcule los gastos anuales, la cantidad total por año, ¿se puede?
Si, se podrá. Pero seguramente eso llevará una macro. Me temo que sino será una fórmula demasiado complicada (aunque no imposible).
Ese tema ya requerirá de otra consulta con las aclaraciones del caso.
Sdos!
Entiendo...
Mira Elsa, realmente tengo un gran problema, hace tres meses hice una consulta para elaborar una macro muy compleja, la misma me sumaría y contaría los gastos hechos en los 12 meses, con la misma tematica, pongo la categoría que deseo saber lo que gaste, el mes y luego me daría la suma total, la cantidad de gastos que hice con esa categoría y me dejaría seleccionar la subcategoría y tambié me daría otra suma de lo que gasté con esas subcategorías. La persona que me ayudó con esa macro no me volvió a responder, quería agregarle criterios a la macro, es decir, si en la columna B (Subcategoría) si dice "Compras, no me lo tomará en cuenta y que sea expandible, que en un futuro yo pueda seguir ampliando los criterios, hace un mes abrí una consulta para que me ayudaran, alguien me dijo que me ayudaría, pero ya no me contesta y me vi en la obligación de trabajar sin VBA ya que tengo que entregar ese proyecto en Junio, tengo la macro totalmente funcional, solo faltaría agregarles esos criterios, ¿crees que si abro otra consulta me podrías ayudar?
Con mucho gusto pero con algo de paciencia. Pásame todos los antecedentes, el libro y las claves si tuvieras. E inicia una nueva consulta. Indica en el texto que es para Elsamatilde.
Sdos!
Y no olvides valorar esta respuesta atento a que la he resuelto dedicándole bastante tiempo. Luego seguiremos con el resto.
Sdos!
¡Muchas gracias Elsa!
Abrí una nueva consulta, espero que me puedas ayudar, te explicaré todo lo sucedido.
Esta es la consulta que abrí, cuando la respondas, te mandaré la macro, el libro y lo que hay que agregarle, te agradecería un montón que me ayudaras:
Modificar macro para hacer una suma y un conteo
¡Saludos!
- Compartir respuesta