2017-08-17 61 views
0

我有麻烦时,我尝试写一个for循环来分配各行有一个具有公式的单元格SUMIF无法取得预期的结果在使用Excel VBA SUMIF

For r = 2 To counter5 - 1 
    temp_str = "B" + CStr(r) 
    Sheets("Result").Cells(r, 18).Offset = _ 
     WorksheetFunction.SumIf(Range("B2:B5000"), """*" & temp_str & "*""", _ 
     Range("I2:I5000")) 
Next 

哪个counter5存储我的“结果”工作表的最后一行数,在我运行代码之后,我只在列R的单元中得到0,我做了什么错误导致我无法获得预期的结果,我也尝试过将“偏移量”方法改为“公式”,但仍得到相同的结果。

+0

在双引号中放置*错误。把它放在中间这样“”*“”。在两个地方(变量之前和之后)。 – Sixthsense

+0

这个:'“”“*”&temp_str&“*”“”'应该是:'“*”&temp_str&“*”' – Rory

+0

我试图改变引号,但结果仍然相同。任何与配置相关的东西可能会影响? –

回答

0

对于WorksheetFunction.SumIf,下面的工作(与你当前的代码,您正在搜索字符串“B2”,例如,要在单元格的值,我能想象吗?):

For r = 2 To counter5 - 1 
    Sheets("Result").Cells(r, 18).Offset = _ 
     WorksheetFunction.SumIf(Range("B2:B5000"), "*" & Cells(r, 2) & "*", _ 
     Range("I2:I5000")) 
Next