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
×
×
  • Create New...

Important Information

Privacy Policy