通过引用多个工作表的VBA编写SUMIF的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过引用多个工作表的VBA编写SUMIF的问题相关的知识,希望对你有一定的参考价值。
我试图通过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
这给了我一个“无效或不合格的引用”错误。
我猜我错过了一组引号或其他语法相关的问题?我看过这个网站并在网上找不到任何东西让我直截了当。
提前致谢!
答案
我认为你的问题可能是引用和错误对象的混合。
- 我已经修复了你的尺寸
- 我已经将对象引用从
FormulaR1C1
更改为Formula
- 我更改了公式中的引号(有额外的双引号)
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)"
检查公式的一个好方法是将表放在错误输出的行上,并将字符串粘贴到调试/立即窗格中,如下所示:
?"=SUMIF('" & wsDummy.Name & "'!C:C,'" & wsOrderNumber.Name & "'!DB2,'" & wsDummy.Name & "'!A:A)"
这对于调试这样令人困惑的字符串很有帮助。
以上是关于通过引用多个工作表的VBA编写SUMIF的问题的主要内容,如果未能解决你的问题,请参考以下文章
MS Access VBA:创建具有多个工作表的 Excel 工作簿