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

我有两个工作表Sheet1和Sheet2。 在Sheet1上我有一个ItemNumber的列表,我需要填充库存级别(列东)。 我必须从Sheet2的东栏中提取信息。 如果sheet2上的ItemNumber列包含sheet1中ItemNumberstring的值,则将Sheet1上East的所有数量相加。 我试图用通配符在我的VBA代码中使用SumIf函数,但是我所有的值在Sheet1上返回为0。 有人可以build议如何解决这个问题吗? 非常感谢

在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 

不知道为什么你正在search范围内,因为这些范围不符合您提供的示例。 我改变了范围,把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