【问题标题】:Excel VBA Error 1004 in cell formula replacement单元格公式替换中的 Excel VBA 错误 1004
【发布时间】:2020-04-15 10:25:22
【问题描述】:

注意:我是法国人,所以通常我使用法语函数(例如,SI 代表 IFSOMME 代表 SUM),默认小数分隔符是逗号而不是点(例如 @987654325 @为1.03)

我要替换 Excel 工作簿中的许多公式,并且所有公式都有相同的模板,但我无法使用快速填写工具,所以我正在尝试为此制作一个宏。

首先,这是单元格当前的外观:

='C:\...\[file1.xlsx]'sheeta!$XXa$nna - 'C:\...\[file2.xlsx]'sheetb!$XXb$nnb

所以基本上,我想保留这两个地址(我将它们命名为 ad1ad2)来制作以下公式:

=IF(AND(ISNUMBER(VALUE(ad1;"."));ISNUMBER(VALUE(ad2;".")));SUM(VALUE(ad1,".");PRODUCT(-1;VALUE(ad2;".")));"NA")

减去以不同格式存储的两个数字,如果其中至少一个不是数字,则显示NA

这是我写的宏:

Sub tmp()
    Dim c As Range
    Dim adr1 As String
    Dim adr2 As String
    Dim frm As String

    For Each c In Application.Selection.Cells
        adr1 = Split(Split(c.Formula, "=")(1), "-'")(0)
        adr2 = "'" & Split(Split(c.Formula, "=")(1), "-'")(1)

        frm = "=IF(AND(ISNUMBER(VALUE(" & adr1 & ";"".""));ISNUMBER(VALUE(" & adr2 & ";""."")));SUM(VALUE(" & adr1 & ";""."");PRODUCT(-1;VALUE(" & adr2 & ";""."")));""NA"")"

        c.Formula = frm
    Next
End Sub

错误发生在最后一个动作c.Formula = frm

我已经检查了frm的值,很好。

我认为我的公式存在合成错误,但我找不到。有人可以帮我吗?

提前致谢!

【问题讨论】:

  • ","替换";"

标签: excel vba excel-formula


【解决方案1】:

VBA只接受美国格式公式。美国格式使用, 而不是;

        frm = "=IF(AND(ISNUMBER(VALUE(" & adr1 & ",""."")),ISNUMBER(VALUE(" & adr2 & ","".""))),SUM(VALUE(" & adr1 & ","".""),PRODUCT(-1,VALUE(" & adr2 & ","".""))),""NA"")"

【讨论】:

  • 我做了更改,但我仍然遇到同样的问题。这是行:VBA frm = "=IF(AND(ISNUMBER(VALUE(" & adr1 & ",""."")),ISNUMBER(VALUE(" & adr2 & ","".""))),SUM(VALUE(" & adr1 & ","".""),PRODUCT(-1,VALUE(" & adr2 & ","".""))),""NA"")"
  • 请显示frm的结果:frm = frm = "=IF(AND(ISNUMBER(VALUE(" & adr1 & ",""."")),ISNUMBER(VALUE(" & adr2 & ","".""))),SUM(VALUE(" & adr1 & ","".""),PRODUCT(-1,VALUE(" & adr2 & ","".""))),""NA"")" Debug.Print frm c.Formula = frm我加Debug.Print frm
  • 这里是frm取的值:"=IF(AND(ISNUMBER(VALUE('03-2020.xlsx'!$AV$63,".")),ISNUMBER(VALUE('03-2020.xlsx'!$AV$59,"."))),SUM(VALUE('03-2020.xlsx'!$AV$63,"."),PRODUCT(-1,VALUE('03-2020.xlsx'!$AV$59,"."))),"NA")"(我已经打开指定文档缩短地址)
  • 看起来不错...但是VALUE(" & adr1 & ",""."") --> VALUE 只有一个参数
  • 好的,我知道了,我使用了错误的功能。我必须使用“NUMBERVALUE”而不是“VALUE”。非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-24
  • 2016-08-09
  • 2013-11-02
相关资源
最近更新 更多