我试图让这部分代码执行。这是代码的简化版本。我已经包含了相关的代码。我试图将字符串和命名范围连接成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;我就会一直收到同样的错误。返回。公式语法正确,总和范围和标准范围之间的维度相同。其他人有什么想法吗?
答案 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
公式与连续逗号一起构建它