Jump to content

Sumar.si.conjunto con rangos dinámicos


Recommended Posts

Buenas noches, estoy haciendo el código de una macro y pese a que estoy consiguiendo que "funcione" no estoy contento con el código.  

En la macro "SumaSiFrutaVendedor" la columna de la fruta es dinámica y nos podemos encontrar que en ocasiones haya 3 productos como 10 diferentes. Me gustaría conseguir que cuando inserto la línea del "sumIfs" sea dinámica y se adapte al rango  de la cantidad de  frutas diferentes, lo estoy pensando, pero no veo como ahorrar líneas de la macro... 

Estoy empezando con el vba y ando perdido cualquier ayuda será bienvenida para seguir aprendiendo.

 

Saludos

PruebaVendedor.xlsm

Link to post
Share on other sites
Hace 10 horas, NAB_20 dijo:

Estoy empezando con el vba y ando perdido cualquier ayuda será bienvenida para seguir aprendiendo.

A ver... porque tienes un buen jaleo :huh:

  • ¿Los vendedores NO SIEMPRE van a estar en la columna J?
  • ¿Las frutas NO SIEMPRE van a estar en la columna L?
  • Supongo que la columna K es la cantidad vendida de cada fruta por cada vendedor

Lo digo  por todo ese jaleo que tienes de calcular la última columna. Por cierto, aunque hay más métodos, si usas SumIf (bueno, con cualquier método) TODOS los valores tienen que ser iguales. Tienes cosas como "Vendedor4" y "Vendedor 4", y eso NO ES lo mismo.

Aparte me imagino que quieres el número de cada fruta por vendedor ¿No? Porque eso no es lo que refleja tu código.

Especifica esto antes de empezar con el código.

Saludos

Link to post
Share on other sites
Hace 4 horas, Haplox dijo:

A ver... porque tienes un buen jaleo :huh:

  • ¿Los vendedores NO SIEMPRE van a estar en la columna J?
  • ¿Las frutas NO SIEMPRE van a estar en la columna L?
  • Supongo que la columna K es la cantidad vendida de cada fruta por cada vendedor

Lo digo  por todo ese jaleo que tienes de calcular la última columna. Por cierto, aunque hay más métodos, si usas SumIf (bueno, con cualquier método) TODOS los valores tienen que ser iguales. Tienes cosas como "Vendedor4" y "Vendedor 4", y eso NO ES lo mismo.

Aparte me imagino que quieres el número de cada fruta por vendedor ¿No? Porque eso no es lo que refleja tu código.

Especifica esto antes de empezar con el código.

Saludos

Hola Haplox! 

La verdad es que si que tengo bastante jaleo 😇

  • Los vendedores y la fruta prácticamente siempre si que me llegan en esas columnas(alguna vez ha llegado en diferentes pero no es habitual). Si que me gustaría aprender/ver como controlar que me lleguen en columnas diferentes.
  • La columna k es la cantidad vendida. Pasa lo mismo que en vendedores y fruta.

En lo que comentas de Vendedor4 y vendedor 4 tienes toda la razón, se me pasó. Es una tabla hecha de prueba y no me fije lo suficiente.

Pensaba que el "SumaSiConducto" si que estaba bien usado 🤕

Gracias por tu tiempo y todos los comentarios son bien recibidos y ayudan a aprender.

Saludos!

Link to post
Share on other sites
Hace 3 horas, Antoni dijo:

Lo suyo sería una tabla dinámica, pero con macros e interpretando a mi bola las dudas de Haplox sería algo parecido a lo del adjunto, ábrelo y pulsa sobre la figura azul.

Válido para cualquier número de vendedores y frutas.

PruebaVendedor.xlsm 22.79 kB · 1 descarga

Buenas Antoni!

Muy interesante el código que has enviado😃

Me surgen varias dudas de cosas que no había visto antes

  • ".Sort Key1:=Hoja2.Columns("A")"  Sort key1 lo utilizas para ordenar?
  •  Set fila = Hoja2.Columns("A").Find(Hoja1.Range("J" & x)) Que uso tiene Set?

Le voy dando vueltas al código que enviaste para entenderlo bien.

Muchas gracias por tu tiempo

Saludos!

 

 

 

 

Link to post
Share on other sites

Efectivamente, .Sort se utiliza pata ordenar.

Lo primero que hace la macro es copiar y ordenar los datos de vendedores y frutas, elimina los duplicados y confecciona los encabezamientos, posteriormente se eliminan los datos y se confecciona el resumen.

.Set es una instrucción para asignar objetos, no valores.

Ejemplo:

  • Dato = Range("A1") asigna el valor de la celda A1 a la variable Dato.
  • Set Dato = Range("A1")  crea un objeto Range con la celda A1 en la variable Dato.

El método .Find, obtiene un objeto Range con la celda del valor buscado, de esta manera, podemos acceder a todas la propiedades de la celda. (Fila, columna, fuente, color, ......)

Edited by Antoni
Link to post
Share on other sites

Hola 

En 2/1/2021 at 17:34 , NAB_20 dijo:

En la macro "SumaSiFrutaVendedor" la columna de la fruta es dinámica y nos podemos encontrar que en ocasiones haya 3 productos como 10 diferentes. Me gustaría conseguir que cuando inserto la línea del "sumIfs" sea dinámica y se adapte al rango  de la cantidad de  frutas diferentes, lo estoy pensando, pero no veo como ahorrar líneas

Para tu caso, lo mas recomendable es una Tabla Dinamica, es ademas de los mas eficiente creado en Excel, ahora si no necesitas ese formato porque deseas trabajarlo especificamente de otra manera, tambien esta la opcion de usar power query para esta tarea, y en realidad es bastante simple

Si deseas un ejemplo con gusto te lo envio

 

Saludos!

Link to post
Share on other sites
En 5/1/2021 at 17:47 , Gerson Pineda dijo:

Hola 

Para tu caso, lo mas recomendable es una Tabla Dinamica, es ademas de los mas eficiente creado en Excel, ahora si no necesitas ese formato porque deseas trabajarlo especificamente de otra manera, tambien esta la opcion de usar power query para esta tarea, y en realidad es bastante simple

Si deseas un ejemplo con gusto te lo envio

 

Saludos!

Buenas!

Me podrias enviar el de power query? nunca toqué y puede ser interesante!

 

Gracias por tu tiempo!

Link to post
Share on other sites
Hace 11 horas, NAB_20 dijo:

Buenas!

Me podrias enviar el de power query? nunca toqué y puede ser interesante!

 

Gracias por tu tiempo!

Pues ahi lo tienes

Hice 2 hojas mas, Tabla y Resumen, en esta ultima veras la tabla creado por power query, para probar, agrega mas datos a la Tabla y luego te vas a Resumen y sobre esa tabla das actualizar y listo, eso es todo

Para comenzar con el uso de PQ, busca un poco por la red, si aun asi tienes mas dudas, nos avisas

 

Saludos

SumarSi power query_GP.xlsm

Link to post
Share on other sites
  • 2 weeks later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Crear macros Excel

  • Posts

    • Ante todo un cordial saludo, anteriormente en sus inicios de ayuda excel era muy importante para muchas personas que un foro como este proporcionará muchas soluciones, lo cual hacia que las soluciones sean eficaces tanto para el que lo que requería o para el que dava soluciones. Mi gran pregunta es porque no puedo descargar los adjuntos de algununos temas que e resuelto en el foro. 
    • Hola, tengo un problema para crear unos turnos rotativos aleatorios(mañana, tarde y noche), que al cambiar de mes los turnos cambien automáticamente según el mes, he intentado hacerlo con función SI pero no me queda aleatorios, me podrían ayudar con esta pequeña duda
    • Buenas noche amigos de Excel Ayuda quisiera que me ayuden completando mi amplicación con la ayuda de ustedes e creado una aplicación que ingresa datos para analizar en varios perìodos, los datos estan en un hoja BBDD, mi objetivo es que al analizar los productos cada periodo y culminarlos quiero pintarlos de acuerdo a dos criteros "suspendido" o "culminado" utilizando el buscador yo digito el "Lote" y doy clik en la lupa y busca el producto pero quiero que al ubicar el "Producto1, Produco2 etc" al selecionar uno de los dos botones de opción "verde o rojo" se pinten automaticamente en la base de datos BBDD todas las filas que buscó. Les agradezco por darme un tiempo en terminar mi proyecto. ModificarPintandoFila.xlsb
    • Hola a todos. De nuevo por aquí pidiendo ayuda. Nos han cambiado las licencias de Office a Office 365. He revisado las macros y las que me fallan tienen que ver con las que envío correos automatizados. He podido arreglar todas, cambiando el código porque de Office 2013 a Office 365 cambia el código, se usa el objeto CDO.Message. Pero se me resiste esta macro, que envía un correo e incluye como parte del cuerpo del correo un rango de celdas donde hay un gráfico. Os pego el código para ver si me podéis ayudar. Después de la instrucción "ActiveWorkbook.EnvelopeVisible = True" el programa ya no ejecuta nada más. He probado con F8 paso a paso y ahí se detiene. Necesito que el cuerpo del correo inserte las celdas  A2:T49 de la hoja "Tablero".  Si veis que así no se me entiende puedo crear un archivo y pegar la macro, pero como el código no es muy largo lo he puesto así.   Sub EnviarTableroInsertado() ApplicationOff 'variables Dim iMsg As Object, iConf As Object Dim cuerpo As String, schema As String, spie As String, mail As String Dim Flds As Variant Set iMsg = CreateObject("CDO.Message"): Set iConf = CreateObject("CDO.Configuration") iConf.Load -1 Set Flds = iConf.Fields schema = "http://schemas.microsoft.com/cdo/configuration/" With Flds Flds.Item(schema & "sendusing") = 2 Flds.Item(schema & "smtpserver") = "smtp.office365.com" Flds.Item(schema & "smtpserverport") = 25 Flds.Item(schema & "smtpauthenticate") = 1 Flds.Item(schema & "sendusername") = "micorreo" Flds.Item(schema & "sendpassword") = "micontraseña" Flds.Item(schema & "smtpusessl") = True Flds.Update End With Set tb = Sheets("Tablero") tb.Select mail = tb.Range("Y2") tb.Range("A2:T49").Select ' ActiveWorkbook.EnvelopeVisible = True ' With iMsg Set .Configuration = iConf .From = "micorreo" With ActiveSheet.MailEnvelope .Item.Subject = "Produccion Tablero - Personal Propio I+M - " & tb.Range("M2") .Item.To = mail '.Item.CC = "" '.Item.Introduction = "Adjuntamos Produccion Tablero - Personal Propio I+M -" & tb.Range("M2") .Item.Send End With End With Sheets("TOTAL").Select Set iMsg = Nothing: Set iConf = Nothing: Set Flds = Nothing Set tb = Nothing ' ApplicationOn End Sub Gracias. Moisés.
    • Gerson Pineda, si lo he intentado cambiando de muchas formas el formato y no e logrado de solucionar
  • Recently Browsing

    No registered users viewing this page.

×
×
  • Create New...

Important Information

Privacy Policy