MACRO que multiplique cantidad e importe de tabla dinamica según cuadro de unidad de medida.
Dante Amor
Del kardex de productos terminados, hice una tabla dinamica para obtener la cantidad de produccion por tipo de LINEA DE PRODUCCION.
El resultado es una tabla dinamica que contiene una lista de 450 productosagrupados por su linea de produccion. La cuestion es que cuando quiero multiplicar la cantidad por su equivalente numerico de su unidad de medida, la operación se realiza, pero no me permite copiarla hacia las demas filas de abajo. Lo mismo sucede con el importe total (que es la multiplicacion de "v.unit" y "CANT".
Imagen de la tabla dinamica por tipo de movimiento a multiplicar según unid. MEDIDA
IMAGEN DEL CUADRO UNIDADES DE MEDIDA DE PRODUCTOS
Anexo te envio a tu correo el archivo que contiene en una pestaña la copia de la tabla dinamica en la que no se puede copiar hacia abajo, tambien la pestaña de prueba (copia de tabla dinamica en valores) y en otra pestaña el "cuadro de unidad de medida productos". Mis saludos y mi agredecimiento anticipado por la ayuda que siempre nos das a todos tus seguidores, JOHNMOR41, LIMA PERU
1 respuesta
En el archivo que me envíes procura poner un ejemplo de lo que quieres sumar, muéstrame con colores los resultados que esperas
Hola Dante, el archivo que te envíe no contiene la fuente de datos que es el KARDEX, lo que contiene en lo siguiente:
1er libro.- Copia de tabla dinámica (es el resultado de crear la tabla dinámica al archivo que contiene el kardex)
2do libro.- Tabla copiada en valores, que viene del 1er libro, aquí he puesto el ejemplo de lo quiero que haga la macro, dos cuadros
1er cuadro "CANTIDAD TOTAL (según unid.medida)" desde la columna "k a la N".- Estos datos se dividen en LITROS (col."K"), en GALONES (col."L"), en UNIDAD (col."M") Y en KILOS (col."N"). Solo se registran cantidades
2do cuadro "IMPORTE TOTAL (col."P"). SOLO SE REGISTRAN IMPORTES
Como toda la producción se quiere contabilizar en GALONES y en KILOS (no en ambas unidades), para el caso de galones (celdas sin colorear) el llenado es directo (cantidad por galones).
Lo complejo se presenta en los siguientes casos de llenado del 1er cuadro
CASO LLENADO DE "JUEGOS" (celdas pintadas de rosado) ejemplo codigo PT0000002382 (fila 6) aqui se observa una modificacion, se aumento 2 productos BASE EPOXICO x 3/4 GL (fila 7) y CATALIZADOR x 1/4 GL (fila 8) estos datos provienen del cuadro "UNID.MEDIDA" y el llenado es el siguiente como se trata de GALONES se llenan las cantidades en la col."L", en la celda L7=6 (8 x 0.75) y la celda L8=2 (8 x 0.25) donde 8 viene de la columna CANT (col."F") y 0.75 y 0.25 vienen del cuadro "UNID.MEDIDA".
CASO LLENADO DE "LITROS" (celdas pintadas de azul) ejemplo código PT0000000606 (fila 11), como se trata de "LITROS" la cantidad se llena en las columnas "LITROS" (col."K") Y en "GALONES" (col."L"), en la celda K11=312 (89 x 3.5), donde 89 viene de la columna "F" CANT, y 3.5 viene del cuadro "UNID.MEDIDA". Y en la celda "L11"=288 (312 x 0.92470277), donde 312 viene de la col."K" y 0.92470277 viene del cuadro "UNID.MEDIDA".
CASO LLENADO DE "UNIDAD" (celdas pintadas de verde), ejemplo codigo PT0000000795 (fila 15), como se trata de UNIDADES y segun el cuadro "UNID.MEDIDA" este codigo equivale a 0.1 kg, se llenara la columna UNIDAD y la columna KILOS, en "M15"=19,300 (19,300 x 1) y en "N15"=1,930 (19,300 x 0.1) donde 19,300 viene de la col."M" y 0.1 viene del cuadro "UNID.MEDIDA".
Fila 20, esta el subtotal de esa línea de producción (pintado de lila)
ABAJO ADJUNTO NUEVO EJEMPLO DE LLENADO DE TABLA DINÁMICA
Imagen cuadro "UNID.MEDIDA" archivo de lo envio a tu correo. GRACIAS
INFORMACION ADICIONAL
Hola Dante, los datos que quiero de la MACRO y el ejemplo de llenado estan en el libro "TABLA COPIADA EN VALORES", son dos resultados
1er resultado se llama "CANTIDAD TOTAL (según unid.medida)" desde la columna "H a la N".
2do resultado se llama "IMPORTE TOTAL" en la columna "P"
el ejemplo de llenado esta desde la fila 6 hasta la fila 19
y el RESULTADO o subtotal esta en la fila 20 (coloreado de morado)
Solo creo que me falta aclarar lo siguiente:
1ra ALTERNATIVA) cuando es UNIDAD en este caso el llenado del cuadro "UNIDAD DE MEDIDA DE PRODUCTOS", es el siguiente: (celdas coloreadas de "verde")
ojo en el ejemplo se trata de un producto envasado en una capacidad de 100 gramos osea su unidad de medida es KILOS. Pero puede darse el caso en que el producto sea un liquido envasado en un frasco de 1/2 litro en cuyo caso la "unidad de medida" sera "LITRO". Por eso para estos casos hemos colocado a su derecha el "CODIGO DEL PRODUCTO"
1) en la celda "B32" = "UNIDAD"
2) en la celda "C33" = "PT0000000795" dato adicional para identificar su unidad de medida ya que cada codigo tiene una unidad de medida particular
3) en la celda "J32" = "0.1" que es igual al contenido del chisquete de 100 gramos
4) en la celda "L32" = "1" (si la unidad fuera una docena en lugar de "1" se pondria "12")
5) en la celda "P32" = "UNIDAD" (simplemente indica que los datos a llenar para el 1er resultado de la hoja "TABLA COPIADA EN VALORES" van a estar en la columna UNIDAD
6) en la celda "Q32" = "KILOS" esto nos indica que la cantidad a llenar para el 1er resultado de la hoja "TABLA COPIADA EN VALORES" van a estar en la columna KILOS
LLENADO DE 1ER RESULTADO EN HOJA "TABLA COPIADA EN VALORES" sera:
7) en la celda "K16" = "19,300" (19,300 x 1) donde 19,300 viene de la celda "F16" y "1" viene de la celda "L32" del cuadro "UNIDAD DE MEDIDA DE PRODUCTOS".
8) en la celda "N16" = "1,930" (19,300 x 0.1) donde 19,300 viene de la celda "K16" y "0.1" viene de la celda "J32" del cuadro "UNIDAD DE MEDIDA DE PRODUCTOS".
9) en la celda "P16" = "9,650.00" (19,300 x 0.50) donde "19,300" viene de la celda "F16" y "0.50" viene de la celda "E16"
2da ALTERNATIVA) cuando es JUEGO (juego es un kit de productos) en este caso el llenado del cuadro "UNIDAD DE MEDIDA DE PRODUCTOS", es el siguiente: (celdas coloreadas de "rosado")
1) en la celda "B30" = "x 1/2 JUEGO"
2) en la celda "C30" = "PT0000002382" (se añade este dato por tratarse del llenado de UNIDAD)
3) en la celda "D30" = "PT0000123821" (1er componente del KIT)
4) en la celda "D31" = "PT00000123822" (2do componente del KIT)
si hubieran mas componente se seguiria agregando "CODIGOS"
5) en la celda "F30" = "0.75" que es el equivalente numerica de 3/4 GALON.
6) en la celda "F31" = "0.25" que es el equivalente numerico de 1/4 GALON.
7) en la celda "M30" = "GALONES" esto indica que la carga de datos del "1er resultado" en el libro "TABLA COPIADA EN VALORES" sera en la columna de GALONES.
8) en la celda "M31" = "GALONES" (mismo caso de celda "M30")
9) en la celda "O30" = "1" esto indica que en la carga de datos del "1er resultado" en el libro "TABLA COPIADA EN VALORES" sera en la columna de "UNIDAD" con un valor de 1.
10) en la celda "O31" = "1" (mismo caso de celda "O30").
LLENADO DE 1ER RESULTADO EN HOJA "TABLA COPIADA EN VALORES" sera:
11) en la celda "K8" = "8" ( 8 x 1), donde "8" viene de celda "F7" y "1" viene de la celda "L30" del cuadro "UNIDAD DE MEDIDA DE PRODUCTOS".
12) en la celda "K9" = "8" (mismo caso de celda "K8"
13) en la celda "M8" = "6" (8 x 0.75) donde "8" viene de celda "K8" y "0.75" viene de la celda "F30" del cuadro "UNIDAD DE MEDIDA DE PRODUCTOS".
14) en la celda "M9" = "2" (8 x 0.25) donde "8" viene de celda "K8" y "0.25" viene de la celda "F31" del cuadro "UNIDAD DE MEDIDA DE PRODUCTOS".
15) en la celda "P7" = "760.00" (8 x 95.00) donde "8" viene de celda "F/" y "95.00" viene de celda "E7"
IMAGEN DE "TABLA COPIADA EN VALORES"
IMAGEN DEL CUADRO "UNIDAD DE MEDIDA DE PRODUCTOS"
te envio el archivo modificado con el ejemplo, GRACIAS, JOHNMOR41
Te anexo la primera parte de la macro, para cuando en la columna "D" sea igual a "Unidad"
Sub Unidad() 'Por.Dante Amor 'calcula la unidad For i = 6 To Range("B" & Rows.Count).End(xlUp).Row If InStr(1, UCase(Cells(i, "D")), "UNIDAD") > 0 Then Cells(i, "K") = Cells(i, "F") Cells(i, "N") = Cells(i, "K") * Cells(i, "I") End If Next End Sub
Vamos avanzando con modificaciones a la macro, pero parte por parte, son muchas explicaciones y varias peticiones.
Para cada concepto que quieres que se agregue a la macro me das una explicación detallada de ese caso y lo agrego a la macro.
Saludos. Dante Amor
La Macro "UNIDAD" esta funcionando para las filas 16 y 23 que son las que contienen codigos que tienen como unidad de medida la palabra "UNIDAD" y el resultado es parcialmente correcto, hay 2 problemas
1er problema.- no se esta registrando el resultado de IMPORTE TOTAL que para la celda "P16" = "9,650.00" (19,300 x 0.50) donde "19,300" es viene de la celda "F16" y "0.50" viene de la celda "E16".
2do problema.- que el llenado de las columnas "G al J", se tienen que hacer de forma manual y dichos datos no se estan "jalando" del libro "UNID.MEDIDA".
Para lograr "jalar" este dato en el CASO DE UNIDAD, yo habia puesto como dato adcional en el libro "UNID.MEDIDA" que al lado de "UNIDAD" columna "B" en la columna "C" vaya el "CODIGO" que para el caso de la fila 16 el codigo es "PT0000000795" que es un chisquete cuyo contenido es de 100 gramos, osea "0.1" que va en la celda "J16".
Ahora en la fila 23 osea para el codigo "PT0000000637" que es una masilla plastica cuyo contenido es de 1/2 kilo, osea en la celda "J17" = "0.50" quedando el cuadro de "UNID.MEDIDA" como la imagen adjunta
El resultado seria para el 2do codigo con unidad de medida "UNIDAD" los resultados serian, en la celda "I23" = "0.50", en la celda "k23" = "17,825", en la celda "N23" = "8,913" y en la celda "P23" = "89,125.00" (importe total).
espero tu pronta respuesta, saludos, JOHNMOR41
Disculpa, pero no estoy entendiendo qué es lo que necesitas.
Tienes que pedir solamente una cosa.
Explícame con pasos, por ejemplo:
Paso1, leer la columna "D" y si dice "UNIDAD" hacer lo siguiente:
Paso2, multiplicar la columna "W" por la columna "V" y el resultado ponerlo en la columna "XXXXXX"
Es un ejemplo de cómo quiero que me lo expliques.
Muy bien Dante, se trata de llenar resultados adicionales a la tabla dinamica, eso si lo esta haciendo la MACRO.
Pero el llenado de resultados lo tiene que hacer utilizando el libro "UNID.MEDIDA" que contiene el cuadro "UNIDAD DE MEDIDA DE PRODUCTOS"
La MACRO que haz hecho funciona solo para el caso UNIDAD, este caso solo se presenta en la fila 16 (codigo "PT0000000795") y la fila 23 (codigo "PT0000000637")
Ahora explicare como debe ser el llenado de resultados
CASO LLENADO DE "UNIDAD" (celdas pintadas de verde), ejemplo
1er codigo "PT0000000795" (fila 16).-
como se trata de UNIDADES y segun el cuadro "UNID.MEDIDA" este codigo equivale a 0.1 kg (numero que va en la celda "J32"), se llenara la columna UNIDAD y la columna KILOS, en "k16"=19,300 (19,300 x 1) y en "N16"=1,930 (19,300 x 0.1) donde 19,300 viene de la col."M" y "0.10" viene de la celda "J32" del cuadro "UNID.MEDIDA". y en la celda "P16" = "9,650.00" = (19,300 x 0.50), donde "19,300" viene de "CANT" y "0.50" viene de "v.unit".
2do codigo "PT0000000637" (fila 13).- El llenado es igual que el caso anterior.
IMPORTANTE como observas en cuadro UNID.MEDIDA para este caso en particular osea cuando se trata de "UNIDAD" en el cuadro "UNIDAD DE MEDIDA DE PRODUCTOS" se registran 2 datos en donde van las "UNIDADES EQUIVALENTES" (de la columna "F a la L"). El motivo de este doble registro es el siguiente, supongamos que la venta del 2do producto sea por CAJA en este caso la presentacion es de "CAJA x6" por lo que se registrara en la "J33" = "0.50" y en "L33" = "6" (esto solo como ejemplo de porque se pone un doble dato en las columnas "UNIDADES EQUIVALENTES"
Pero para estos 2 codigos el registro fue el siguiente, dato registrado en la celda "B32" a su costado he puesto osea en la celda "C32" el codigo "PT0000000795" ya que para este producto en particular que se trata de un chisguete que contiene 100 gr y su equivalente en kilos es "0.10" = "J32" y en la celda "L32" = "1".
Como tambien existe un 2do codigo "PT0000000637" que tambien cumple con su unidad de medida igual a "UNIDAD", es que el el cuadro "UNID.MEDIDA" agrego en la fila 33 dicho codigo (celda "C33") en este caso el producto se trata de una masilla plastica que viene en un envase que contiene 1/2 kilo por lo tanto en la celda "J33" = "0.50" y en la celda "L33" = "1". VER FIGURA ADJUNTA CON RESULTADOS
espero haber aclarado la pregunta, JOHNMOR41
Vamos desde el principio:
Pusiste esto:
"como se trata de UNIDADES y segun el cuadro "UNID.MEDIDA" este codigo equivale a 0.1 kg (numero que va en la celda "J32"), se llenara la columna UNIDAD y la columna KILOS, en "k16"=19,300 (19,300 x 1) y en "N16"=1,930 (19,300 x 0.1) donde 19,300 viene de la col."M" y "0.10" viene de la celda "J32" del cuadro "UNID.MEDIDA". y en la celda "P16" = "9,650.00" = (19,300 x 0.50), donde "19,300" viene de "CANT" y "0.50" viene de "v.unit"."
PASO1. Lo primero que quieres que haga la macro es que tome el código "PT0000000795" y lo busque en la hoja "UNID.MEDIDA" en la columna "C"
Y si lo encuentra que tome el dato que está en la hoja "UNID.MEDIDA" columna "J", ¿qué en este caso es 0.1?
Y si no lo encuentra.
Disculpa, pero necesito que me lo expliques en pasos, no estoy entendiendo en dónde tengo que leer y en dónde tengo que escribir.
Solamente explícame el primer paso, yo entiendo que quieres resolver todos tus cálculos, pero llevo bastante tiempo dedicado a este tema y no logramos pasar del primer paso.
Solamente el primer paso.
- Compartir respuesta