在VBA中连接SumIfs

时间:2014-12-05 07:02:40

标签: excel vba excel-formula

我试图让这部分代码执行。这是代码的简化版本。我已经包含了相关的代码。我试图将字符串和命名范围连接成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

以&#34; .value&#34;开头的行是我收到错误消息的地方。 P.S。:我需要单元格包含连接的公式,而不是输出值。

更新1:

有人建议我将.value行更新为:

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

我仍然遇到同样的错误。我完成了一些审核:

删除&#34; =&#34;之前&#34; Sumifs&#34;允许代码运行正常;将公式粘贴到目标单元格中​​作为文本。在这种形式中,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

我怀疑问题可能是范围尺寸可能已经关闭,但事实并非如此。我的下一个怀疑是输出国际商业机器需要进入&#34; &#34;为公式正确读取它。我用硬编码了

""International Business Machines""

看看这是否会修复公式,但是一旦我添加&#34; =&#34;我就会一直收到同样的错误。返回。公式语法正确,总和范围和标准范围之间的维度相同。其他人有什么想法吗?

2 个答案:

答案 0 :(得分:0)

.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) & ")"

编辑:在字符串周围添加引号chr(34)

答案 1 :(得分:-1)

你的ARBlock(i - 5, 1).Value最有可能是一个空单元格,它会使SUMIFS公式与连续逗号一起构建它