Excel - Descuento Inventario de Insumos

 
Vista:
sin imagen de perfil
Val: 7
Ha aumentado su posición en 3 puestos en Excel (en relación al último mes)
Gráfica de Excel

Descuento Inventario de Insumos

Publicado por Sebastian (4 intervenciones) el 23/11/2019 16:56:17
Hola a todos. Estoy construyendo una planilla para ventas, compras e inventarios, está casi terminada pero me he trabado en este punto. Al tratarse de algo manufacturado necesito que al vender 1 producto del stock se descuenten los insumos que le corresponden, definidos en una matriz, y luego los multiplique por la cantidad de dicho producto vendido, definido en un userform. No soy de preguntar mucho en los foros, prefiero leer y probar por mi cuenta pero esto ya me está volviendo loco. Si alguien puede darme una mano con esto lo agradeceré muchísimo.

Básicamente sería algo así.
(ver imagen)

Si yo vendo 2 unidades de producto 1 debería restar del stock 2 veces 2 unidades del insumo 1 y 2 veces 1 unidad del insumo 3.
El stock es una tabla simple, dos columnas, una con el nombre del insumo y la otra con la cantidad, está en su propia hoja.
Saludos y muchas gracias.

ejemplo-stock
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Andres Leonardo
Val: 3.136
Plata
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Descuento Inventario de Insumos

Publicado por Andres Leonardo (1583 intervenciones) el 25/11/2019 14:38:28
Hola como estas..
No he hecho algo de insumos pero lo que se me ocurre es que tengas en algun registro

1
ProductoFinal
Codigo producto
otros campo productos.



1
DetalleProductoFinal
CodigoProducto
CodigoInsumo
Cantidad Insumo



1
Insumo
Codigo Insumo
DescrInsumo
ValorInsumo
ValorVentaInsumo
Stock Actual


Al fina cuando vendas un producto .... vas a detalle producto final y ves todos los insumos que se usan para luego bajar el stocks de los insumos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 7
Ha aumentado su posición en 3 puestos en Excel (en relación al último mes)
Gráfica de Excel

Descuento Inventario de Insumos

Publicado por Sebastian (4 intervenciones) el 27/11/2019 00:53:06
Buenas noches Andrés, ante todo muchas gracias por tu respuesta, recién tengo un poco de tiempo para volver sobre este tema. Por lo que entiendo la solución que planteas es definir algunos valores y luego que la macro opere a través de IFs, es correcto? Parece posible, voy a ponerme a trabajar en ello a ver si puedo lograrlo. Entre tanto te cuento que a través de excel pude arribar muy cerca de la solución a través de índice - coincidir, es de alguna manera una solución que guardo para el caso de no poder hacerlo a través de macro, que es la forma que prefiero para integrarla a la acción del botón de guardar venta y que quede totalmente automatizado el proceso.
En cuanto tenga novedades las estaré comentando aquí para colaborar con otras personas que puedan estar con la misma inquietud.
Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 7
Ha aumentado su posición en 3 puestos en Excel (en relación al último mes)
Gráfica de Excel

Descuento Inventario de Insumos

Publicado por Sebastian (4 intervenciones) el 27/11/2019 17:11:30
Estimado, pude escribir una serie de instrucciones de ejemplo que funcionan bien y hacen lo que quiero, como soy bastante novato en esto, consulto, en este caso con un número pequeño de elementos sería tolerable escribir el código así, sin embargo en la planilla en la que va a estar funcionando los elementos son muchos más y estoy seguro que debe haber una forma más abreviada de hacer esto. Serías tan amable de indicarme cómo puedo automatizar más la macro? Desde ya muchas gracias.
Pego aquí el código. Vale aclarar que en el código utilicé la palabra Art en lugar de Insumo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
Sub descontarinsumos()
 
p1 = "Producto 1"
p2 = "Producto 2"
p3 = "Producto 3"
i1 = "Art 1"
i2 = "Art 2"
i3 = "Art 3"
 
r11 = 2
r12 = 0
r13 = 1
r21 = 3
r22 = 0.3
r23 = 0.25
r31 = 0
r32 = 0
r33 = 2
If Worksheets("hoja2").Range("A5") = p1 Then
    For Each cell In Worksheets("hoja3").Range("A5:A7")
        If cell.Value = i1 Then
        cell.Offset(0, 1).Value = cell.Offset(0, 1).Value
        cant = cell.Offset(0, 1).Value - r11 * Worksheets("hoja2").Range("B5")
        cell.Offset(0, 1).Value = cant
        ElseIf cell.Value = i2 Then
        cell.Offset(0, 1).Value = cell.Offset(0, 1).Value
        cant = cell.Offset(0, 1).Value - r12 * Worksheets("hoja2").Range("B5")
        cell.Offset(0, 1).Value = cant
        ElseIf cell.Value = i3 Then
        cell.Offset(0, 1).Value = cell.Offset(0, 1).Value
        cant = cell.Offset(0, 1).Value - r13 * Worksheets("hoja2").Range("B5")
        cell.Offset(0, 1).Value = cant
        End If
    Next cell
ElseIf Worksheets("hoja2").Range("A5") = p2 Then
For Each cell In Worksheets("hoja3").Range("A5:A7")
        If cell.Value = i1 Then
        cell.Offset(0, 1).Value = cell.Offset(0, 1).Value
        cant = cell.Offset(0, 1).Value - r21 * Worksheets("hoja2").Range("B5")
        cell.Offset(0, 1).Value = cant
        ElseIf cell.Value = i2 Then
        cell.Offset(0, 1).Value = cell.Offset(0, 1).Value
        cant = cell.Offset(0, 1).Value - r22 * Worksheets("hoja2").Range("B5")
        cell.Offset(0, 1).Value = cant
        ElseIf cell.Value = i3 Then
        cell.Offset(0, 1).Value = cell.Offset(0, 1).Value
        cant = cell.Offset(0, 1).Value - r23 * Worksheets("hoja2").Range("B5")
        cell.Offset(0, 1).Value = cant
        End If
    Next cell
ElseIf Worksheets("hoja2").Range("A5") = p3 Then
For Each cell In Worksheets("hoja3").Range("A5:A7")
        If cell.Value = i1 Then
        cell.Offset(0, 1).Value = cell.Offset(0, 1).Value
        cant = cell.Offset(0, 1).Value - r31 * Worksheets("hoja2").Range("B5")
        cell.Offset(0, 1).Value = cant
        ElseIf cell.Value = i2 Then
        cell.Offset(0, 1).Value = cell.Offset(0, 1).Value
        cant = cell.Offset(0, 1).Value - r32 * Worksheets("hoja2").Range("B5")
        cell.Offset(0, 1).Value = cant
        ElseIf cell.Value = i3 Then
        cell.Offset(0, 1).Value = cell.Offset(0, 1).Value
        cant = cell.Offset(0, 1).Value - r33 * Worksheets("hoja2").Range("B5")
        cell.Offset(0, 1).Value = cant
        End If
    Next cell
End If
 
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 7
Ha aumentado su posición en 3 puestos en Excel (en relación al último mes)
Gráfica de Excel

Descuento Inventario de Insumos

Publicado por Sebastian (4 intervenciones) el 28/11/2019 00:09:45
Bien, para quien pueda servirle, creo que lo he logrado, hasta el momento funciona perfectamente en la planilla de pruebas, ahora toca probar en la planilla definitiva, con suerte solo habrá que adaptarla. Copio aquí debajo el código que me ha funcionado y resume lo anterior.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Sub descontarinsumos()
 
Dim matriz As Variant
matriz = Worksheets("Hoja1").Range("A4:D7") 'Es donde está la matriz de la cual se extraen los datos
 
Dim i As Integer 'insumos
Dim p As Integer 'productos
 
For p = 1 To 4
    For i = 1 To 4
        If Worksheets("Hoja2").Range("A5") = matriz(1, p) Then 'se determina donde está el producto a buscar y donde buscarlo en la matriz
            For Each cell In Worksheets("Hoja3").Range("A5:A7") 'para cada celda en la tabla de stock
                        If cell.Value = matriz(i, 1) Then 'si dicho valor se corresponde con los insumos definidos en la matriz
                        cell.Offset(0, 1).Value = cell.Offset(0, 1).Value
                        cant = cell.Offset(0, 1).Value - matriz(i, p) * Worksheets("hoja2").Range("B5") 'el valor que figura menos lo que determine la matriz para dicho producto e insumo multiplicado por la cantidad definida
                        cell.Offset(0, 1).Value = cant 'establecemos junto al insumo en la planilla de stock el nuevo valor
                        End If
            Next cell 'prosiga al siguiente insumo del stock
        End If
    Next i 'prosiga al siguiente insumo de la matriz
Next p 'prosiga al siguiente producto
 
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar