【发布时间】:2020-08-09 14:22:49
【问题描述】:
尝试使用 if 语句创建一个循环,在其中我遍历列的每个名称,然后创建一个 IFERROR with VLOOKUP,它将在某个日期提取该名称的库存(在另一个工作簿中找到),如果该产品在该日期没有任何库存,它等于零。
由于某种原因,当我尝试编写 VLOOKUP formula 时,它给了我一个错误,任何帮助都会很棒。
在合并页面中,产品名称在 B 列,然后日期在 C 列,然后我想将值放在 K 列。
谢谢!
Sub IFTEST()
LR = ActiveSheet.Cells(Rows.Count, "M").End(xlUp).Row
Dim APPLE As Range
Dim GRAPE As Range
Dim RICE As Range
Dim BREAD As Range
Dim PASTA As Range
Dim INVENTORY As Range
Dim cell As Range
Set APPLE = Workbooks("APPLE.xls").Worksheets("APPLE").Range("K:N")
Set GRAPE = Workbooks("GRAPE.xls").Worksheets("GRAPE").Range("K:N")
Set RICE = Workbooks("RICE.xls").Worksheets("RICE").Range("K:N")
Set BREAD = Workbooks("BREAD.xls").Worksheets("BREAD").Range("K:N")
Set PASTA = Workbooks("PASTA.xls").Worksheets("PASTA").Range("K:N")
Set INVENTORY= Workbooks("INVENTORY.xlsm").Sheets("INVENTORY").Range("B2:B" & LR)
Application.ScreenUpdating = False
For Each cell In Inventory
If cell.Value = "apple" Then
'here is where I get the error in the lookup
cell.Offset(0, 12).Value = WorksheetFunction.IfError(WorksheetFunction.VLookup(cell.Offset(0, 1).Value, APPLE, 4, False), 0)
ElseIf cell.Value = "grape" Then
cell.Offset(0, 12).Value = WorksheetFunction.IfError(WorksheetFunction.VLookup(cell.Offset(0, 1).Value, GRAPE, 4, False), 0)
ElseIf cell.Value = "rice" Then
cell.Offset(0, 12).Value = WorksheetFunction.IfError(WorksheetFunction.VLookup(cell.Offset(0, 1).Value, RICE, 4, False), 0)
ElseIf cell.Value = "bread" Then
cell.Offset(0, 12).Value = WorksheetFunction.IfError(WorksheetFunction.VLookup(cell.Offset(0, 1).Value, BREAD, 4, False), 0)
ElseIf cell.Value = "pasta" Then
cell.Offset(0, 12).Value = WorksheetFunction.IfError(WorksheetFunction.VLookup(cell.Offset(0, 1).Value, PASTA, 4, False), 0)
Else
cell.Offset(0, 12).Value = 0
End If
Next
End Sub
【问题讨论】:
-
错误是什么?
-
运行时错误“1004”:无法获取 WorksheetFunction 类的 VLookup 属性
-
单元格 0,1 中有什么
-
它是具有产品名称的单元格的下一列中的单元格
-
尝试
Application而不是WorksheetFunction