通过引用多个工作表的VBA编写SUMIF的问题

时间:2018-03-03 00:31:14

标签: excel vba excel-vba syntax excel-formula

我正在尝试将以下公式写入"订单号"通过VBA的工作表(在CL列中): =SUMIF('Dummy Sheet One'!C:C,'Order Number'!DB3,'Dummy Sheet One'!A:A)

当在纸张本身上键入单元格并拖放时,该公式按预期工作。

我尝试过几个不同的代码:

尝试一:

Dim wsDummy As WorksheetDummy Sheet One")

Dim wsOrderNumber As Worksheet
Set wsOrderNumber = Worksheets("Order Number")

wsOrderNumber.Cells(2, 90).FormulaR1C1 = "=SUMIF('" & wsDummy.Name & "'!C:C," & wsOrderNumber.Name & "'!DB2""," & wsDummy.Name & "!A:A)"

这给了我一个"应用程序或对象定义"错误。

尝试二:

Dim wsDummy As Worksheet
Set wsDummy = Worksheets("Dummy Sheet One")

Dim wsOrderNumber As Worksheet
Set wsOrderNumber = Worksheets("Order Number")

Dim LastRow As Long
LastRow = Worksheets("Order Number").Range("A" & Rows.Count).End(xlUp).Row

worksheets("Order Number").Range(“CL2”) = Application.WorksheetFunction.SumIf(wsDummy.Range(“C:C"), wsOrderNumber.range(DB2), wsDummy.Range("A:A"))
Worksheets("Order Number").Range(.Cells(2, 90), .Cells(LastRow, 90)).FillDown

这给了我一个"无效或不合格的参考"错误。

我猜我错过了一组引号或其他语法相关的问题?我在这个网站和网上看过,找不到任何可以让我直截了当的事。

提前致谢!

1 个答案:

答案 0 :(得分:1)

我认为你的问题可能是引用和错误对象的混合。

  1. 我已修复您的尺寸标注
  2. 我已将对象引用从FormulaR1C1更改为Formula
  3. 我更改了公式中的引号(有额外的双引号)

    Dim wsDummy As Worksheet
    Set wsDummy = Worksheets("Dummy Sheet One")
    
    Dim wsOrderNumber As Worksheet
    Set wsOrderNumber = Worksheets("Order Number")
    
    wsOrderNumber.Cells(2, 90).Formula = "=SUMIF('" & wsDummy.Name & "'!C:C,'" & wsOrderNumber.Name & "'!DB2,'" & wsDummy.Name & "'!A:A)"
    
  4. 检查公式的一个好方法是将监视放在错误输出的行上,然后将字符串粘贴到调试/立即窗格中,如下所示:

    ?"=SUMIF('" & wsDummy.Name & "'!C:C,'" & wsOrderNumber.Name & "'!DB2,'" & wsDummy.Name & "'!A:A)"
    

    它有助于调试这样令人困惑的字符串。