hallar Maximo valor con tres condiciones
Publicado por Juan Alberto (200 intervenciones) el 14/03/2021 12:38:22
Tengo una tabla de 5 columnas campos (Almacén, Articulo, Días, Stock y Días máximo), quiero sacar el máximo de días de los rangos que tienen tres criterios; el máximo valor de días de todos los registros que tengan el mismo ALMACÉN, ARTICULO Y STOCK. El codigo que tengo me arroja este resultado, que son días máximos de otros artículos para todos los registros en su totalidad. Adjunte la imagen y el archivo para una mejor observación
Quiero el maximo de dias de todos los registros que iguales entre Almacen, Articulo y Stock
El codigo que tengo es este:

Quiero el maximo de dias de todos los registros que iguales entre Almacen, Articulo y Stock
El codigo que tengo es este:
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
Private Sub Informe_Click()
Dim Maximo&
Dim Condicion1, Condicion2, Condicion3
Dim WS1 As Worksheet
Dim WS2 As Worksheet
Dim Rango1, Rango2, Rango3, Rango4 As Range
'Dim Max
Dim Max, Almacen, Articulo, StockAsig
Dim Cell As Range
Worksheets("Pedidos").Range("E2:E9000").Value = Empty
With Application
.ScreenUpdating = False
old = .Calculation
.Calculation = xlCalculationManual
.EnableEvents = False
End With
Set WS1 = Worksheets("Pedidos")
FilaB = 2
While WS1.Cells(FilaB, 2).Value <> ""
FilaB = FilaB + 1
Wend
For Each Cell In WS1.Range("A2:A" & FilaB - 1)
Almacen = Cell.Offset(, 0).Value
Articulo = Cell.Offset(, 1).Value
StockAsig = Cell.Offset(, 3).Value
Set Rango1 = WS1.Range("A2:A" & FilaB - 1)
Set Rango2 = WS1.Range("B2:B" & FilaB - 1)
Set Rango3 = WS1.Range("D2:D" & FilaB - 1)
Set Rango4 = WS1.Range("C2:C" & FilaB - 1)
Maximo = Application.WorksheetFunction.Max(Rango4)
Condicion1 = Application.WorksheetFunction.VLookup(Almacen, Rango1, 1, 0)
Condicion2 = Application.WorksheetFunction.VLookup(Articulo, Rango2, 1, 0)
Condicion3 = Application.WorksheetFunction.VLookup(StockAsig, Rango3, 1, 0)
If Almacen = Condicion1 And Articulo = Condicion2 And StockAsig = Condicion3 Then
Cell.Offset(, 4).Value = Maximo
End If
Next
End Sub

- Hallar-maximo-valor.rar(463,9 KB)
Valora esta pregunta


0