在VBA中连接SumIfs

我试图让这段代码执行。 这是代码的简化版本。 我已经包含了相关的代码。 我想连接string和命名范围到SumIfs公式,但我得到错误1004“应用程序定义或对象定义的错误”。 我在这个问题部分的上面有一个工作线,与sum函数的例外情况相似,而不是sumif。 任何想法如何让这个代码执行? 谢谢。

Dim wb As Workbook Dim ara As Worksheet Dim inv As Worksheet Dim ARBlock As Range Dim Invoices As Range Dim AgedDays As Range Set wb = ThisWorkbook Set ara = wb.Sheets("AR Aging") Set inv = wb.Sheets("Invoices") Set ARBlock = ara.Range("a6") Set Invoices = inv.Range("a6", inv.Range("a6").End(xlDown)) Set AgedDays = Invoices.Offset(0, 6) 'Populate A/R age buckets For i = 6 To ARBlock.Rows.Count + 6 With ARBlock(i - 5, 1).Offset(0, 3) .Value = "=SumIfs(" & Invoices.Offset(0, 4).Address & "," & _ Invoices.Address & "," & ARBlock(i - 5, 1).Value & "," & _ Invoices.Offset(0, 6).Address & ","" <= "" & &O30)" End With Next i End Sub 

以“.value”开头的行是我得到错误信息的地方。 PS:我需要单元格包含级联公式,而不是输出值。

更新1:

正如一些build议我更新.value行来:

 .Offset(0, 3).Formula = "=SumIfs(Invoices.Offset(0, 4).Address,Invoices.Address,ARBlock.cells(i - 5, 1).Value)" 

我仍然得到相同的错误。 我做了一些审计:

在“Sumifs”之前删除“=”可以使代码正常运行; 将公式粘贴到目标单元格中​​作为文本。 在这种forms下,我的输出为i = 1进入ARBlock.cells(1,1),因为它应该。

我也使用Debug.Print来查看公式的所有组件:

 Debug.Print ARBlock.Cells(i - 5, 1).Address 'output $A$6 Debug.Print ARBlock.Cells(i - 5, 1).Value ' output International Business Machines Debug.Print Invoices.Offset(0, 4).Address 'output $E$6:$E$255 Debug.Print Invoices.Address 'output $A$6:$A$255 

我怀疑问题可能是范围维度可能已经closures,但情况并非如此。 我的下一个怀疑是,输出的国际商业机器需要在“”公式读取它正确。 我硬编码

 ""International Business Machines"" 

看看这是否会修复公式,但我一直收到相同的错误,一旦我join了“=”。公式语法是正确的,总和范围和标准范围的尺寸是相同的。 任何人有任何想法?

 .Offset(0, 3).Formula = "=SumIfs(Invoices.Offset(0, 4).Address,Invoices.Address,ARBlock.cells(i - 5, 1).Value)" 

改成:

 .Offset(0, 3).Formula = "=SumIfs(" & Invoices.Offset(0, 4).Address & ", " & Invoices.Address & ", " & chr(34) & ARBlock.Cells(i - 5, 1).Value & chr(34) & ")" 

编辑:在你的string周围添加引号chr(34)

您的ARBlock(i - 5, 1).Value最有可能是一个空单元格,它会混乱连续的逗号