来自其他工作簿的SUMIFS函数 - 错误是类型不匹配

时间:2015-08-09 11:18:18

标签: excel vba excel-vba

我想在其他工作簿的一系列活动工作表中执行SUMIFS功能。这是我得到宏的错误:

ActiveSheet.Range(ActiveSheet.Cells(6, lastCol + 1),
                  ActiveSheet.Cells(lastRow, lastCol + 1)).Formula = Application.WorksheetFunction.SumIfs(" ' " & wbGSD.Name & "'!$F$10:$F$" & wbGSDlastRow & ",'" & wbGSD.Name & "'!$B$10:$B$" & wbGSDlastRow & ",B6,'" & wbGSD.Name & "'!$C$10:$C$" & wbGSDlastRow & ", Total")

我得到的错误是:

  

类型不匹配

我尝试了Sumif功能。它也没用。

1 个答案:

答案 0 :(得分:0)

您正在传递SumIfs()一个长字符串。它不需要一根长串。它需要许多参数,前两个是Range个对象,而不是字符串。如果您想将公式编写为一个长字符串,那么就不需要WorksheetFunction.SumIfs()。只需将字符串公式分配给范围Formula属性:

Range("A1").Formula = "=SUMIFS('" & wbGSD.Name & "'!$F$10:$F$" & ...

如果你真的想要使用WorksheetFunction.SumIfs(),你需要通过传递正确类型的个别参数来正确使用它:

Range("A1") = WorksheetFunction.SumIfs( _
    Sheets(wbGSD.Name).Range("$F$10:$F$" & wbGSDlastRow), _
    Sheets(wbGSD.Name).Range("$B$10:$B$" & wbGSDlastRow), _
    ....