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 MaxDim 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 = 2While 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

