在VBA中使用SUMIF函数中的通配符

时间:2014-10-31 19:32:32

标签: excel vba excel-vba wildcard

我有两个工作表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

1 个答案:

答案 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