2014-10-31 100 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