我有两个工作表Sheet1和Sheet2。在Sheet1上,我有一个ItemNumber列表,我需要填充库存级别(列East)。我必须从Sheet2中提取East列中的信息。如果sheet2上的ItemNumber列包含sheet1中ItemNumber字符串的值,则将Sheet1上East的所有数量相加。我尝试在我的VBA代码中使用带有通配符的SumIf函数,但我的所有值都在Sheet1上返回0。有人可以建议如何纠正这个问题吗?非常感谢
在Sheet1上:
Item Number East
WidgetA
WidgetB
WidgetC
WidgetD
Sheet2数据:
Item Number East
WidgetA-1 1
WidgetA-2 2
WidgetA-3 3
WidgetB 2
WidgetB-1 4
WidgetC 1
WidgetD-1 1
WidgetD-2 1
我的代码:
Dim i as Integer
Dim ItemNumber, East As Double
Do While Sheet1.Cells(i, 1).Value <> ""
ItemNumber = Sheet1.Cells(i, 1).Value
East = Application.WorksheetFunction.SumIf(Sheet2.Range("B:B"), """*" & ItemNumber & "*""", Sheet2.Range("Q:Q"))
Sheet1.Cells(i, 4).Value = East
i = i + 1
Loop
答案 0 :(得分:1)
不确定为什么要搜索范围,因为这些范围与您提供的示例不符。我更改了范围,将ItemNumber声明为String而不是Double,并将“i”的起始值设为2以考虑列标题。您似乎在通配符之前还有额外的引号。希望这会有所帮助。
Dim i As Integer
Dim ItemNumber As String
Dim East As Double
i = 2
Do While Sheet1.Cells(i, 1).Value <> ""
ItemNumber = Sheet1.Cells(i, 1).Value
East = Application.WorksheetFunction.SumIf(Sheet2.Range("A:A"), "*" & _
ItemNumber & "*", Sheet2.Range("B:B"))
Sheet1.Cells(i, 2).Value = East
i = i + 1
Loop