【问题标题】:VBA to input a formula not working as expectedVBA输入公式未按预期工作
【发布时间】:2016-06-03 22:32:20
【问题描述】:

我从未使用过 VBA 宏来输入公式。有谁知道为什么这不起作用?我的印象是双引号应该解决我原来的问题,即只显示第二个引号 - 但它返回一个错误。

Sub Macro()

Worksheets("Summary").Range("H3").Formula "=EXACT(G3, COUNTIFS((INDIRECT(CONCATENATE("" '"", RIGHT(B3, LEN(B3) - FIND(""- "", B3) - 1), ""'!"", ""K:K""))), D3, (INDIRECT(CONCATENATE(""'"", RIGHT(B3, LEN(B3) - FIND(""- "", B3) - 1), ""'!"", ""g:g""))), E3, (INDIRECT(CONCATENATE(""'"", RIGHT(B3, LEN(B3) - FIND(""- "", B3) - 1), ""'!"", ""j:j""))), F3))"

End Sub

【问题讨论】:

  • @timthebomb 是正确的。您需要将 .Formula = 设为包含您的公式的字符串。您对在单元格中产生单引号的代码中的双引号也是正确的。例如""text"" 在单元格的值中变为"text"。我把你的公式放在一个单元格中,但得到一个#VALUE! 错误...希望是因为我的工作表在 G3、D3、B3 等中没有正确的数据。如果在实施 timthebomb 的修复后仍然出现错误,请告诉我们错误是什么,因为“返回错误”并不是真正的描述性。
  • 哎呀!单个公式中的 3 个 INDIRECT 函数。我希望你有充分的理由。
  • 哈哈@ThunderFrame 除了缺乏知识我绝对不会

标签: vba excel


【解决方案1】:

您需要修改公式,在公式开始前添加一个“=”。

Worksheets("Summary").Range("H3").Formula = "=EXACT(G3, COUNTIFS((INDIRECT(CONCATENATE("" '"", RIGHT(B3, LEN(B3) - FIND(""- "", B3) - 1), ""'!"", ""K:K""))), D3, (INDIRECT(CONCATENATE(""'"", RIGHT(B3, LEN(B3) - FIND(""- "", B3) - 1), ""'!"", ""g:g""))), E3, (INDIRECT(CONCATENATE(""'"", RIGHT(B3, LEN(B3) - FIND(""- "", B3) - 1), ""'!"", ""j:j""))), F3))"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-30
    • 1970-01-01
    • 1970-01-01
    • 2021-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-03
    相关资源
    最近更新 更多