Modificar macro para hacer una suma y un conteo
Tengo una macro totalmente funcional que quisiera hacerle unas pequeñas modificaciones. La uso en un libro que sirve como registro de gastos e ingresos, se compone de 13 hojas, 12 de ellas son los meses del mes y en la número 13 hay un resumen de todo, ahí es donde se manifiesta la macro. Lo que hace es una suma dependiendo de dos celdas, una es para poner la categoría (D15) y otra para poner el mes (F15) y me muestra la suma en la celda H15. Aparte de la suma, también uso la misma macro como contador, cuando lleno las dos celdas (D15 y F15), en la celda G34 me cuenta los gastos que hice con los datos que llené, espero me puedan ayudar, son pocas modificaciones, si responden publico la macro para que no sea tan extensa la consulta, muchas gracias de antemano. Elsa Matilde
2 Respuestas
Pasa la macro, si es posible por favor ponla en la etiqueta de código para que se lea mejor. Explicaste lo que hace la macro, ahora explica lo que le quieres cambiar, agregar o quitar.
Gracias por responder, esta es la modificación que necesito:
En la hoja "Resumen", en la tabla en donde selecciono la categoría y el mes, yo haga cualquier combinacion, por ejemplo: Cuando yo seleccione en la celda D15 y ponga "En general", que quiere decir todas las categorías y en la celda F15 ponga "Todos", que quiere decir todos los meses (Anual), o haga cualquier combinación en esas dos celdas, por ejemplo: D15: "Ahorros", F15: "Todos"; D15: "En general", F15: "Enero"; o cualquier otra combinación, a la hora de arrojar el resultado de la suma y el conteo (1ra Macro) y la cantidad menos y mayor (2da Macro), no me tomará en cuenta en las tablas de las 12 hojas, aquellos gastos que tengan las subcategorías: "Compras" y "Retiros". Esa modificación debe de ser expandible, es decir, que en un futuro yo pueda agregar más palabras para que no sean tomadas en cuenta.
Mándame un correo para enviarte el libro, no puedo ponerlo aquí ya que es mi proyecto para una capacitación y tengo compañeros en esta plataforma.
Estos son los antecedentes:
Modificar macro para hacer una suma condicional en varias hojas
No parece dificil lo que quieres hacer, tratare de hacerte la funcion lo mas expandible y flexible posible. Pero si voy a necesitar la muestra del libro. Mi correo es [email protected]
La idea que tengo es hacer una funcion, que luego tu colocas en la celda que tu quieras para recibir el resultado ahi.
Saludos Andy.
Ya te envié el libro, y está bien, lo importante es que funcione, muchas gracias por tu ayuda.
Me había llegado a la carpeta Spam. Ya estoy trabajando en eso, no era tan sencillo como imaginaba. En un rato te mando el resultado
Ahora lo puede terminar, te envió el archivo por email, te explico acá como funciona. Te confieso que se me hicieron muy confusos tus requerimientos en la practica, me cuesta entender cual es el resultado que quieres obtener, así que me deje llevar por la lógica y el sentido común e hice las funciones lo más flexible posible.
Consta de 4 funciones que hice yo desde 0 (en realidad solo hice una, si te fijas son muy parecidas, hice una, y recicle el código y la estructura y solo cambie lo necesario) Las funciones que ya tenias siguen intactas, importe mis funciones a tu libro y las encontraras en los módulos:
FnSUMARGASTOS
FnCONTARGASTOS
FnGASTOMINMAX <-Este modulo contiene dos funciones una para MIN y otra para MAX
---
La estructura para las 3 es la misma y funciona de la siguiente manera:
=SUMARGASTOS(Categoria, Mes, SubCategoria, Opcional: Exclusiones)
=CONTARGASTOS(Categoria, Mes, SubCategoria, Opcional: Exclusiones)
=GASTOMIN(Categoria, Mes, SubCategoria, Opcional: Exclusiones)
=GASTOMAX(Categoria, Mes, SubCategoria, Opcional: Exclusiones)
Debes pasarle los 3 argumentos, que son como Rango osea, colocas o seleccionas la celda de la Categoría, del Mes y de la Subcategoría.
El ultimo parámetro es opcional y es de tipo String. Ahí vas a colocar todas las subcategorías que tu no quieras tomar en cuenta separado por, (coma) puedes poner cuantas quieras. Nota que debes escribir el nombre correctamente y es Case Sensitive, si escribes una mal, no pasa nada, no hay error, solo que no la encuentra y posiblemente no te de el resultado que esperas.
Ejemplo:
=CONTARGASTOS(D15,F15,B34,"Retiros,Compras,Otros")
Por lógica, si seleccionas una Subcategoría (rango B34) las exclusiones serán ignoradas y sobrescritas por la subcategoría de B34.
Te envió el libro con las funciones ya colocadas en las celdas, puse de color naranja las celdas en las que trabaje. Posiblemente se me haya escapado algún detalle o quizás hice de más o deje de hacer según lo que requieres. Cualquier duda me dejas saber.
Saludos Andy.
Muy buen trabajo, estuvi evaluando la macro, encontré algunos errores y los grabé, te dejaré el video para que lo veas y me digas si es posible corregir:
https://drive.google.com/file/d/1FAmh6oHLCucLSHBr6ALkGRyNizY4j_hn/view?usp=sharing
La suma funciona correctamente, lo que me equivoque fue en tener en cuenta la subcategoría. Si daba $160 porque solo estaba sumando los Ahorros con subcategoría "Fondos de E." así que el registro con subcategoría "Metra" no se incluía en la suma. Desde el principio presentí que no era así como lo querías pero lo hice de todas formas, ya lo arreglo.
Al final del vídeo intentas mostrarme que la suma de 190 es incorrecta pero no lo es. Le estas pidiendo que te sume las categorías de "Ahorros" del mes de enero, y categoría Ahorros solo habían 3, y su suma es 190.
Por eso te dije en mi respuesta que no estoy seguro de que resultados esperas, tal vez ni tu mismo sabes que quieres obtener. Por favor aclara eso mientras voy revisando lo de Menor y Mayor que si reconozco que hay un error técnico en esos.
Más tarde te mando la versión corregida.
Saludos Andy.
Sobre la suma de Enero, esa era la ideo, recuerda que dijo que todo lo que tenga como Subcategoría "Retiros" y "Compras no será tomado en cuenta, por lo tanto no debería de darme $190, debería de darme $60. También si te fijas en el video, al principio, muestra correctamente el resultado si pongo "Enero", luego del minuto 1:48 se aloca completamente y presenta $720 si pongo "Todos", cuando al principio presentaba $160, realmente tiene problemas la suma aparte de que no va incluida la subcategoría, la única búsqueda que debe de hacer para sumar y contar es en la columna A (Categorías). Lo de buscar la cantidad menor y mayor no funciona, en todo momento presentó un error. Si te fijas en el video se ve claramente como en el principio funciona bien a exepción de la Subcategoría y lo de menor y mayor, pero luego del minuto que anteriormente mencioné se aloca completamente sin razón.
Yo sé lo que necesito y lo que quiero, por eso te mandé el libro y los antecedentes, lo único que falta es agregarle esos criterios.
No, la suma funcionó correctamente todo el tiempo, creo que no leíste mi explicación en la primera respuesta.
En la función hay un parámetro que se llama Exclusiones, donde escribes, separado por comas, las subcategorías que no quieres incluir en la suma; y no tenias eso escrito en la función porque puse pausa al vídeo me fije. Así que como no le especificaste que Excluya a Retiros y Compras, entonces están incluidos en la suma y el total era 720 para "Todos" los meses con categoría "Ahorros". Antes de dar 720 daba 160 porque tenias elegida la subcategoría Fondos de E. (reconozco que la subcategoría no debería estar incluida, pero eso no es un error, es que lo puse yo intencionalmente y es lo que voy a quitarle ahora) cuando borraste la subcategoría, cambia de 160 a 720, y es totalmente lógico y normal.
Ya te he enviado el archivo con algunas correcciones.
Ahora la función SUMARGASTOS no cuenta con el argumento SubCategoria, lo he quitado, ahora solo recibe 3 argumentos (Categoría, Mes, Exclusiones)
En cuanto las funciones GASTOMAX y GASTOMIN a mi realmente no me daban error, no obstante le hice algunos ajustes preventivos. Déjame saber si siguen dando problema.
Por favor fíjate bien en los parámetros que le pasas a la función de sumar antes de decirme que no funciona.
--
PD: con el contador no veo ningún problema, cuenta exactamente lo que le pides que cuente. Pero si no es así como lo quieres, déjame saber.
Intente grabar un vídeo y subirlo a google drive como el tuyo. En el vídeo muestro como se usan y como trabajan las funciones:
https://drive.google.com/file/d/1CjT7UsGHvQtttKG3iGhwGiguqb_nAxvN/view?usp=sharing
Andy
Saludos Andy.
Está bien, no había entendido las partes de las exclusiones, discúlpame. Veo que ya está bien en parte, acontinuación te dejaré algunas observaciones que me gustaría, si está a tu alcance, corregirlas:
-Eliminar la parte de la subcategoría de la macro para el conteo y para la búsqueda de la cantidad menor y mayor.
-La búsqueda de la cantidad menor y mayor todavía me sigue dando error, realmente no sé la causa, pensé que era porque tú usas las comas y yo los puntos y comas, pero no es eso por lo que vi. ¿Qué crees que se pueda hacer?
Aquí te dejo un video:
https://drive.google.com/file/d/1n71oMkWUU3Tj-OK_BsFtt_0Xna6k_nYG/view?usp=sharing
¿Entonces la subcategoría nunca se tiene en cuenta? Pensé que si. Lo eliminaré de todos entonces.
Te explico por que el contador te da 1 y no 3. Repito, la respuesta esta en las exclusiones, lo tienes puesto así:
=CONTARGASTOS(D15;F15;B34;"Retiros,Compras")
Le estas pidiendo que NO cuente los que sean Retiros y Compras. Así que, en Enero, Categoría Ahorros (que NO SEAN retiros y compras) solo hay 1. Para que te de 3 tienes que quitar el argumento Exclusiones: "Retiros, Compras".
Entonces, ¿la subcategoría solo tiene en cuenta para exclusiones? Esa es la parte que me confunde mucho. Seguiré intentando descubrir que pasa con GASTOMAX y GASTOMIN, lo peor de la situación es que a mi me funciona jajaja así que esta difícil saber por qué a ti no.
Bien Andy.
Lo del contador ya había entendido lo que me dijiste, solo hice énfasis en eliminar la subcategoría de tus macros y tratar de buscar una solucion a la macro de MinMax.
Lo de la Subcategoría tengo dos macros independientes para eso ya, no es necesario incluirlo en tus macros.
En lo que soluciones eso, me encantaría que me dijeras cómo aprendiste tanto y dónde, ya que he intentado aprender y es un poco complicado.
Gracias de antemano.
Vale, ya elimine las subcategorias, estoy revisando que se puede hacer con el MIN y el MAX.
Yo estudie programación, de todos los lenguajes que conozco, VBA es el mas sencillo, lo que lo hace complicado es lo pobre que es, y la cantidad de inventos que hay que hacer para que las cosas las hagan bien.
Mi experiencia con VBA la gane a regañadientes, nunca me ha gustado en realidad. Lo que pasó es que trabaje 8 años para una compañía que se fundó hace 36 años y siempre tuvo el mismo programador, y este señor había hecho todo el sistema con Access y VBA desde los 90 y nunca lo cambiaron (hoy en día aun siguen con eso). Así que no me quedo de otra que aprender VBA.
Habia hecho cosas sencillas un par de años antes, pero ya con ellos tuve que hacer cosas importantes, así que en general tengo unos 10 años de experiencia con VBA en Excel y Access. Igual sigue sin gustarme, y como la mayoría de preguntas aquí en Todoexpertos son sobre Excel VBA pues colaboro.
Ya te envié el archivo por email.
Elimine el argumento "SubCategoria" de todas las funciones, ahora solo son 3.
Categoría, Mes, Exclusiones(Opcional)
Le volví a hacer algunos micro ajustes a MAX y MIN, honestamente no tengo la menor idea de por que no te funciona, a mi me anda perfectamente, no importa la combinación que haga, me arroja el resultado que espero.
Si sigue dando problemas, solo podre ayudarte haciendo una sesión de TeamViewer y ver que sucede con tu Excel que evita que esas funciones hagan su trabajo.
Saludos Andy.
Gracias por todo, sigue teniendo problemas, vamos a trabajar por TeamViewer para ver qué está pasando, abrí el archivo con Google y me funciona, al parecer el problema está en mi excel.
Me dejas saber cómo haremos lo de TeamViewer.
Te envié el archivo con las correcciones. Como vimos, el problema era que yo había usado una fórmula relativamente nueva en Excel, solo disponible para Office 365 y Excel 2019. Ya ha sido corregido. Si te funciona todo, no olvides valorar la respuesta.
Muchas gracias Andy, perfecto trabajo.
- Compartir respuesta
En consulta anterior dejaste un link ... pero en ese libro no está la macro y el libro no tiene datos como para probar nada. Enviamelos al correo cibersoft.arg de gmail.com
Saludos Elsa.
Gracias por responder, esta es la modificación que necesito:
En la hoja "Resumen", en la tabla en donde selecciono la categoría y el mes, yo haga cualquier combinacion, por ejemplo: Cuando yo seleccione en la celda D15 y ponga "En general", que quiere decir todas las categorías y en la celda F15 ponga "Todos", que quiere decir todos los meses (Anual), o haga cualquier combinación en esas dos celdas, por ejemplo: D15: "Ahorros", F15: "Todos"; D15: "En general", F15: "Enero"; o cualquier otra combinación, a la hora de arrojar el resultado de la suma y el conteo (1ra Macro) y la cantidad menos y mayor (2da Macro), no me tomará en cuenta en las tablas de las 12 hojas, aquellos gastos que tengan las subcategorías: "Compras" y "Retiros". Esa modificación debe de ser expandible, es decir, que en un futuro yo pueda agregar más palabras para que no sean tomadas en cuenta
Elsa, ya te envié el libro con las indicaciones en la hoja "Resumen" y las macros en Visual Basic.
Aquí los antecedentes: .
Modificar macro para hacer una suma condicional en varias hojas
No, disculpa. No leeré esa cantidad de código sin tener una muestra de tu libro. Te han desarrollado macros que seguramente les ha llevado mucho más tiempo que lo que se supone podemos dedicar en un foro de consultas.
Si no te resuelve el problema es por no contar con una muestra real de tus hojas. Una imagen no siempre indica el estado o contenido de las celdas (combinadas, protegidas, con formato condicional, etc etc.)
No me has enviado el libro. Solo el link a esta consulta.
Sdos!
Saludos Elsa.
Disculpa, te envié el link sin querer y le envié el libro a otra persona al parecer, fue un error, no fue por no querer enviarlo porque yo soy el que necesito ayuda y por lo tanto debo de facilitar.
Disculpa los inconvenientes, ya te lo envié.
Ayer te envié una de las funciones arregladas.
Luego me solicitaste cambio de rango... y luego nuevamente otro rango... (Y perdón, le había dicho que quería los criterios en la COL: O, de la celda O19:O33, y realmente es en la misma columna, de la celda O2:O16.)
Pero veo que ya somos 2 los que estamos trabajando en el mismo libro. Por lo que dejaré aquí mi intervención.
Agradeceré valores la respuesta atento al tiempo dedicado a ella.
Sdos!
- Compartir respuesta