2014-10-31 105 views
0

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

在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

不知道为什么你正在寻找在你的范围,如这些范围与您提供的示例不符。我更改了范围,将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 
+0

你打我吧! – guitarthrower 2014-10-31 20:16:33

+0

仅需几秒!唷,那是一个很接近的问题。我会说我们都在做一些事情,因为我们给出的答案实际上是相同的。 – 2014-10-31 20:19:39

+0

我只是保持原来的范围(我认为这是他的细节尽管给出的例子) – guitarthrower 2014-10-31 20:47:40