Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过引用多个工作表的VBA编写SUMIF时出现问题_Vba_Excel_Syntax_Excel Formula - Fatal编程技术网

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

通过引用多个工作表的VBA编写SUMIF时出现问题,vba,excel,syntax,excel-formula,Vba,Excel,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 = Wo

我试图通过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
这给了我一个“无效或不合格引用”错误

我猜我遗漏了一些东西,比如一组引号,或者有其他一些与语法相关的问题?我在这个网站上和网上都查过了,找不到任何能让我明白的东西


提前谢谢

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

  • 我已经确定了你的尺寸
  • 我已将对象引用从
    formula1c1
    更改为
    Formula
  • 我更改了公式中的引号(有额外的双引号)

  • 检查公式的一个好方法是在出错的行上放置一块手表,然后将字符串粘贴到debug/immediate窗格中,如下所示:

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

    这有助于调试像这样容易混淆的字符串。

    第一个代码块的行尾是否有打字错误?双引号和右括号看起来有误。尝试1:在
    wsOrderNumber.Name
    之前缺少开头单引号,在第二个
    wsDummy.Name
    周围缺少两个引号。我按照您的建议进行了尝试,并将该行放入即时窗口,它显示“预期表达式”--你将如何利用它来发现带有额外引号的问题?好问题-我通常一点一点地粘贴它,直到你找到错误所在。确保粘贴的位在开头和结尾都有双引号,它应该可以工作。。。但有时,它只是检查打开的每个报价,是否在它应该位于的位置关闭,并检查之间的所有内容是否都能提供您想要的结果(例如,假设您是一台计算机,并手动解析该行)
    ?"=SUMIF('" & wsDummy.Name & "'!C:C,'" & wsOrderNumber.Name & "'!DB2,'" & wsDummy.Name & "'!A:A)"