Saltar al contenido

Duda con Función Sumar.Si.Conjunto...


pinoji

Recommended Posts

Hola Colegas, Buenos días a todos y espero se encuentren bien de salud.

Tengo un problema y necesito la ayuda de ustedes.

En la Hoja Modelo 32-111 debo consignar la cantidad de combustible real consumido por cada vehículo en el transcurso de un mes X, o sea, en Enero se tome el consumo de Enero de la Hoja Combustible en la columna J (Venta) y sume toda la Venta correspondiente a ese vehículo y lo coloque en la Hoja Modelo 32-111. Se toma como referencia la matrícula de cada vehículo.

Voy a Explicarme mejor:

La matrícula B170038 consumió el día 11/08/2022 20 litros de Gasolina Especial, pero ese mismo vehículo (B170038) consumió el día 15/08/2022 30 litros, o sea, en el mes de Agosto este vehículo consumió 50 Litros, esto es lo que debe imprimirse en la celda T9 del Modelo 32-111.

Yo estuve intentándolo con la función Sumar.Si.Conjunto, pero no supe definir el tema de la fecha (aunque lo intenté), porque en la Hoja Combustible la fecha tiene el formato dd/mm/yyyy y en la Hoja Modelo 32-111 se define MES (Enero, Febrero, Marzo…) y no supe implementar dentro de la función Sumar… la función =Text(Mes…).

Podrían ayudarme.

Un saludo y mis respetos.

Pino

Sistema de Matto v5.4.2 Formula.xlsm

Enlace a comentario
Compartir con otras webs

Hola

¿Y no haz pensado en una Tabla Dinámica?

Estas son mas eficientes

Te dejo una solución con formula

=SUMAPRODUCTO(--(MES(Combustible[Fecha])=MES(FECHANUMERO(S$7&"/"&2022))),--(Combustible[Matrícula]=$C9),--Combustible[Venta])

Te en cuenta que SUMAPRODUCTO sobre miles de filas, puede ralentizar el calculo de la hoja

 

Enlace a comentario
Compartir con otras webs

Hace 1 hora, Gerson Pineda dijo:

Hola

¿Y no haz pensado en una Tabla Dinámica?

Estas son mas eficientes

Te dejo una solución con formula

=SUMAPRODUCTO(--(MES(Combustible[Fecha])=MES(FECHANUMERO(S$7&"/"&2022))),--(Combustible[Matrícula]=$C9),--Combustible[Venta])

Te en cuenta que SUMAPRODUCTO sobre miles de filas, puede ralentizar el calculo de la hoja

 

Hola Gerson, como está usted, espero que bien al igual que su familia.

Por supuesto que las Tablas Dinámicas son  mucho más eficientes, el tema está en que Esto es un Modelo que se debe entregar a la Dirección de la Empresa cuando termina cada mes. Es un Modelo que no se puede modificar y lo que pretendo es ir, a medida que se incrementen los Datos en la Hoja Combustible, llenando el Modelo y no tener que usa una calculadora o filtrar la columna.

Gracias por su solución.

Mis respetos.

Pino

Enlace a comentario
Compartir con otras webs

Hace 1 hora, Garp78 dijo:

Buenas. 

No sé si eso es lo que quieres, pero ahí va. He añadido una columna en Combustible para que te dé el mes (esa la puedes ocultar). A partir de ahí, ya tienes la fórmula introducida. Solo debes ponerla en cada mes.

Saludos.

Sistema de Matto v5.4.2 Formula.xlsm 159.3 kB · 0 descargas

Buenas tardes Garp78, espero se encuentre bien.

Perfecta su solución. Yo había pensado en esa, pero no quería modificar la estructura de la tabla, aunque lo hubiera podido hacer fuera de ella, en otra columna.

Gracias mi amigo. Un abrazo y mis respetos.

Pino

Enlace a comentario
Compartir con otras webs

Hace 1 hora, pinoji dijo:

Gracias por su solución.

Y por si a caso, utilizas esta formula, para los siguientes años

Una leve modificación respecto a la primera, es que no será necesario modificar/introducir el año

Quedando así:

=SUMAPRODUCTO(--(MES(Combustible[Fecha])=MES(FECHANUMERO(1&"/"&S$7))),--(Combustible[Matrícula]=$C9),--Combustible[Venta])

Por cierto en esa hoja ciertos meses les colocaste punto al final del nombre del mes, estandarízalo a 3 letras y sin el punto

Enlace a comentario
Compartir con otras webs

Hola a todos,

@pinoji, además de los modelos ya subidos por mis compañeros, le adjunto su archivo (simplificado al máximo, sólo con las 2 hojas afectadas), con otra propuesta de fórmula que puede ser copiada horizontal y verticalmente hasta completar todo el rango que se necesite.

Unos comentarios, no obstante:

1. He modificado algunos aspectos de su hoja. ESTOS CAMBIOS están identificados con fondo amarillo, de forma que sea fácil identificarlos y analizarlos.

2. Para simplificar la fórmula, he modificado la grafía de los meses tal como estaban escritos, concretamente octubre, noviembre y diciembre. Así conseguimos, con un viejo truco, identificar el número del mes con su grafía alfanumérica, tal como verá en la fórmula.

3. También verá en la fórmula que sólo evaluamos el mes; es porque entiendo que en la tabla de la hoja 'Combustible' sólo habrá datos de un año concreto; si hubiere datos de varios años, deberíamos añadir otro condicionante en la fórmula que discriminara el año. Es decir, tal como está la fórmula ahora, en el caso de que en la tabla 'Control de combustible' existieren registros de agosto 2022 y agosto 2021 (por ejemplo), los sumaría todos, algo que creo que Ud. no quiere que suceda.

4. En la fórmula he introducido como rango evaluable 4:1300; puede ampliarse/detraerse a voluntad, o bien modificarlo respetando la nomenclatura de la tabla.

Y por último, he añadido algunos registros más en la tabla (inventados), para que compruebe la bondad de los resultados.

En fin, espero que esta aportación pueda aportarle alguna idea para éste u otros modelos similares,...

Saludos,

Sistema de Matto (B).xlsm

Enlace a comentario
Compartir con otras webs

Buenas tardes reiteradas.

Gracias Víctor y Gracias Gerson. Entiendo perfectamente lo que ustedes plantean, estamos de acuerdo, lo que sucede es que esos Modelos están estandarizados en nuestro sistema y no permiten modificarlos, de hecho estos modelos están hechos para llenarlos "a mano", o sea, en la era de hielo, o en el paleolítico superior, porque acá la informatización en las empresas es un problema serio (bueno, acá todo es un problema), pero si tengo las "Herramientas" y sé cómo usarlas, trato de pasar el menor trabajo posible y optimizarlo, por eso es que "construyo" estos "intentos" de programas en VBA, porque indudablemente los formularios ayudan mucho al momento de trabajar con base de datos.

Siempre me he referido al agradecimiento que les tengo a todos ustedes por la inmensa ayuda que recibo y las cosas que aprendo. No paso por alto sus recomendaciones y soluciones, sólo que estoy "atado" de mano porque en este caso específico no puedo hacerle ninguna modificación a los modelos.

Siéntanse útiles con lo que hacen, porque así yo lo veo y de una u otra manera siempre ayudan, siempre resuelven un problema, siempre nos enseñan y algo que desde mi punto de vista creo, reforzamos nuestra amistad, nuestra confianza, porque aunque estemos lejos geográficamente, yo los siento cerca desde el punto de vista humano, y no solo a ustedes dos, sino al profesor Antoni, al profesor JSD, a Abrahan Valencia, a Haplox, JasBall, a Raigosa, a DiegoPC y muchos otros que en determinado momento me han tendido su mano y me han ofrecido su ayuda de una manera desinteresada y eso yo lo agradezco infinitamente.

Un gran abrazo para todos.

Mis respetos

Pino

Enlace a comentario
Compartir con otras webs

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

  • 97 ¿Te parecen útiles los tips de las funciones? (ver tema completo)

    1. 1. ¿Te parecen útiles los tips de las funciones?


      • No
      • Ni me he fijado en ellos

  • Ayúdanos a mejorar la comunidad

    • Donaciones recibidas este mes: 0.00 EUR
      Objetivo: 130.00 EUR
  • Archivos

  • Estadísticas de descargas

    • Archivos
      177
    • Comentarios
      90
    • Revisiones
      27

  • Crear macros Excel

  • Mensajes

    • Hola que tal amigos programadores por favor me podrían ayudar con una macro que me genere un archivo CSV delimitado por comas, la estructura del archivo CSV no deberá llevar encabezado, los datos del archivo CSV serán obtenidos de la hoja “Datos”. En la columna A: deberá tener la clave clues que se toma de la columna B de la hoja Datos En la Columna B: el Código (son 230 codigos que van del rango G1:IB1 de la hoja datos) En la Columna C: el valor almacenado a su correspondiente al código y clues En la Columna D: el número del mes que se obtendrá de la de la columna E de la hoja Datos En la Columna E: el año que se tomará de la columna F de la hoja de Datos   Son 230 códigos por lo que la macro generará 230 filas por cada clave clues que tenga la hoja Datos En el archivo anexo una hoja llamada CSV para que vean la estructura que tendrá, el archivo CSV estará delimitado por comas   Les agradecería mucho que me ayuden por favor, Dios los bendiga Exportar datos a csv.xlsx
    • Hola buenas tardes.   Debido al trabajo debo estar comparando en un periodo unos archivos dentro de una carpeta o subcarpeta. en base a la fecha de creacion o modificacion.  pero tengo que estar viendo carpeta por carpeta y aveces son varios. Con una macro intente  listar los archivos de cualquier carpeta y subcarpeta, esto activandolo segun la celdaactiva. El problema es que tiene algunos errores. 1. si la carpeta cuenta con subcarpetas me los manda a muchas filas abajo. Mi idea es hoja(Así debe quedar) Que con una macro pueda seleccionar la carpeta desde el buscador y me de la lista de archivos a partir de la fila 6. siendo columna A= fecha de modificación, columna B =Fecha de creación y columna C=Nombre del archivo con hiperlink. Con otro o con la misma macro poder seleccionar otra carpeta y sus subcarpetas, según sea el caso. y me liste a partir de la columna F de la fila 6 Siendo La columna F=Nombre del archivo, columna H=fecha de creación, columna I=ultima modificación   Para así poder acceder y comparar mis archivos, directamente desde excel.   Muchas gracias Mariano       Listar archivos de 2 carpetas para comparar.xlsm
    • Hola buenas, Os presento mis dudas. Tengo un libro  (llamémosle LibroDestino) con dos módulos, uno de definición de variables "ModDef" y otro de inicializacion de esas mismas variables "ModCfg". Necesito que al copiarme una hoja de otro libro(llamémosle LibroOrigen), mediante un procedimiento, sobrescribir el modulo de inicialización de variables del LibroDestino con el  contenido del módulo que hay en el LibroOrigen. Destacar que los dos módulos de cada libro tienen el mismo nombre "ModCfg". Y tienen una única variable llamada "Mensaje". En el LibroDestino tiene el valor "Hola" y en el LibroOrigen el valor "Adiós" Este procedimiento lo realiza perfectamente,  es decir se sobrescribe, pero si en el mismo procedimiento quiero utilizar el nuevo valor de esa variable, me conserva el valor de la variable anterior. Para hacer las comprobaciones he ejecutado un MsgBox al empezar y al acabar el procedimiento, pero en los dos casos me devuelve el valor original del LibroDestino el valor "Hola", cuando mi idea es que al sobrescribir el modulo con el nuevo valor de la variable, el último MsgBox me devuelva el valor "Adios". Mi objetivo es poder tener la inicialización de esas variables en un libro que no sea el de trabajo (LibroDestino), ya que según la hoja que importe puedo requerir que las variables tengan un valor u otro. ¿Por que no me coge en el procedimiento el nuevo valor de la variable? ¿Cómo podría conseguirlo? He tenido que activar en VBA  la referencia Microsoft visual basic for applications extensibility 5.3 desde  Herramientas -> Referencias. Creo que es la única manera de poder trabajar con los módulos desde VBA, aunque si se pudiera de otra manera creo que sería mas óptimo. Mil gracias de antemano, un saludo!         Libro1_Prueba.xlsm Libro2_Prueba.xlsm
    • Agradecido Antoni! Tus sugerencias me ayudaron mucho! Como pudiese hacerte llegar el archivo?
    • Prueba este código. Sin el archivo no te puedo ajustar más. Private Sub btnCargaBancos_Click() 'El tipo de dato debe especificase para cada variable Dim TasaCompra As Double, TasaVenta As Double, InvBanesco As Double, InvVzla As Double Dim MontoBanesco As Double, MontoVzla As Double, TasaDiaBan As Double, TasaDiaVzla As Double Dim TasaActual As Double 'Hay que comprobar que los textbox tienen contenido numérico 'Los datos numéricos solo pueden contener números y el separador decimal, cualquier otro caracter dará error al convertir If Not IsNumeric(txtInverBanesco) Or _ Not IsNumeric(txtInverVzla) Or _ Not IsNumeric(txtTasaCompra) Or _ Not IsNumeric(txtTasaVenta) Then MsgBox "Los datos deben ser numéricos", vbCritical Exit Sub End If InvBanesco = CDbl(txtInverBanesco) InvVzla = CDbl(txtInverVzla) TasaCompra = CDbl(txtTasaCompra) TasaVenta = CDbl(txtTasaVenta) 'Los datos de los divisores no pueden ser 0 (Indeterminación matemática) If TasaCompra = 0 Or _ InvBanesco = 0 Or _ InvVzla = 0 Then MsgBox "Los datos no admiten valor cero", vbCritical Exit Sub End If MontoBanesco = (InvBanesco / TasaCompra) * (1 - 0.18 / 100) * (TasaVenta * (1 - 0.18 / 100)) MontoVzla = (InvVzla / TasaCompra) * (1 - 0.18 / 100) * (TasaVenta * (1 - 0.18 / 100)) TasaDiaBan = (MontoBanesco / InvBanesco) * (1 - 0.055) TasaDiaVzla = (MontoVzla / InvVzla) * (1 - 0.055) If TasaDiaBan < TasaDiaVzla Then TasaActual = TasaDiaBan Else TasaActual = TasaDiaVzla End If 'En VBA, los datos numéricos no admiten ser formateados, formatear directamente en las celdas, 'MontoBanesco = FormatNumber(MontoBanesco, 2, True, vbFalse) 'MontoVzla = FormatNumber(MontoVzla, 2, True, vbFalse) 'TasaActual = FormatNumber(TasaActual, 5, True, False) txtBcoBanesco = MontoBanesco txtBcoVenezuela = MontoVzla txtTasaDiaria = TasaActual End Sub  
  • Visualizado recientemente

    • No hay usuarios registrado para ver esta página.
×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.