Buscar Veloz con el metodo FIND usando varios criterios
Publicado por Juan (200 intervenciones) el 19/04/2021 16:01:38
Hola Estimados (as),
Como usar el método FIND para buscar entre dos hojas con varios criterios. Se prefiere usar FIND porque se entiende que con este método la búsqueda es más rápido.
Los criterios son:
IF Almac ("Pedidos") = Almacén ("Inventario") AND Articulo ("Pedidos") = Sku Articulo ("Inventario") AND Status Invent ("Inventario") = "STOCK LIB" AND (Fech Venc ("Pedidos") + Corte ("Pedidos")) <= Expira ("Inventario") THEN
-Se pide, sumar las cantidades de la columna "G" de hoja ("Inventario") y pegarlo en columna "AD" de la hoja ("Pedidos")
-Ademas descontar stock de columna "G" y el saldo colocarlo en Columna "O" de Hoja ("Inventario")
-Las cantidades descontadas según lo ordenado de la Columna "L" colocarlo en la Columna "AE" de la Columna Hoja ("Pedidos")
En la imagen está lo que se busca que haga la macro.
Este código todavÃa no funciona como se espera. Se adjunta Archivo.

Como usar el método FIND para buscar entre dos hojas con varios criterios. Se prefiere usar FIND porque se entiende que con este método la búsqueda es más rápido.
Los criterios son:
IF Almac ("Pedidos") = Almacén ("Inventario") AND Articulo ("Pedidos") = Sku Articulo ("Inventario") AND Status Invent ("Inventario") = "STOCK LIB" AND (Fech Venc ("Pedidos") + Corte ("Pedidos")) <= Expira ("Inventario") THEN
-Se pide, sumar las cantidades de la columna "G" de hoja ("Inventario") y pegarlo en columna "AD" de la hoja ("Pedidos")
-Ademas descontar stock de columna "G" y el saldo colocarlo en Columna "O" de Hoja ("Inventario")
-Las cantidades descontadas según lo ordenado de la Columna "L" colocarlo en la Columna "AE" de la Columna Hoja ("Pedidos")
En la imagen está lo que se busca que haga la macro.
Este código todavÃa no funciona como se espera. Se adjunta Archivo.
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
Sub Buscar_Veloz()
Dim Hoja_Inventario&, Hoja_Pedidos$, stock&, Celda_Inventario As Range, _
Celda_InventarioAddress$, Celda_Pedidos As Range
Application.ScreenUpdating = False
Tincio = Timer
'Desde la ultima fila con datos suba contando las filas en la columna "I"
Hoja_Pedidos = Range("I" & Rows.Count).End(xlUp).Row
'Desde la ultima fila con datos suba contando las filas en la columna "C" de la Hoja "Inventario"
Hoja_Inventario = Sheets("Inventario").Range("C" & Rows.Count).End(xlUp).Row
For Each Celda_Pedidos In Range("I2:I" & Hoja_Pedidos)
stock = 0
Set Celda_Inventario = Sheets("Inventario").Range("C2:C" & Hoja_Inventario).Find(Celda_Pedidos)
If Not Celda_Inventario Is Nothing Then
If Celda_Inventario.Offset(, -2) = Celda_Pedidos.Offset(, -8) And _
Celda_Inventario.Offset(, 0) = Celda_Pedidos.Offset(, 0) And _
UCase(Celda_Inventario.Offset(, 11)) = "STOCK LIB" And _
Celda_Inventario.Offset(, 6) >= (Celda_Pedidos.Offset(, -5) + Celda_Pedidos.Offset(, 2)) Then
stock = stock + Celda_Inventario.Offset(, 4)
'Else
Celda_InventarioAddress = Celda_Inventario.Address
Do
Set Celda_Inventario = Sheets("Inventario").Range("C1:C" & Hoja_Inventario).FindNext(Celda_Inventario)
If Not Celda_Inventario Is Nothing Then
If Celda_Inventario.Offset(, -2) = Celda_Pedidos.Offset(, -8) And _
Celda_Inventario.Offset(, 0) = Celda_Pedidos.Offset(, 0) And _
UCase(Celda_Inventario.Offset(, 11)) = "STOCK LIB" And _
Celda_Inventario.Offset(, 6) >= (Celda_Pedidos.Offset(, -5) + Celda_Pedidos.Offset(, 2)) Then
stock = stock + Celda_Inventario.Offset(, 4)
End If
End If
Loop While Celda_InventarioAddress <> Celda_Inventario.Address
Celda_Pedidos.Offset(, 21) = stock
End If
End If
Next Celda_Pedidos
Tfin = Timer
MsgBox "El tiempo es: " & Round(Tfin - Tincio, 3)
End Sub

- Buscar-Veloz.rar(290,6 KB)
Valora esta pregunta


0