Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
单元格公式替换中的Excel VBA错误1004_Excel_Vba_Excel Formula - Fatal编程技术网

单元格公式替换中的Excel VBA错误1004

单元格公式替换中的Excel VBA错误1004,excel,vba,excel-formula,Excel,Vba,Excel Formula,注意:我是法国人,所以通常我使用法语函数(例如SI表示IF或SOMME表示SUM),默认的小数分隔符是coma而不是点(例如1.03表示1.03) 我必须替换Excel工作簿中的许多公式,它们都有相同的模板,但我无法使用快速填充工具,因此我尝试为此制作一个宏 首先,下面是单元格当前的外观: ='C:\…\[file1.xlsx]'sheeta$XXa$nna-'C:\…\[file2.xlsx]'sheetb$XXb$nnb 因此,基本上,我想保留这两个地址(我将它们命名为ad1和ad2),以生

注意:我是法国人,所以通常我使用法语函数(例如
SI
表示
IF
SOMME
表示
SUM
),默认的小数分隔符是coma而不是点(例如
1.03
表示
1.03

我必须替换Excel工作簿中的许多公式,它们都有相同的模板,但我无法使用快速填充工具,因此我尝试为此制作一个宏

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

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

因此,基本上,我想保留这两个地址(我将它们命名为
ad1
ad2
),以生成以下公式:

=IF(AND(ISNUMBER(VALUE(ad1;“));ISNUMBER(VALUE(ad2;“)));SUM(VALUE(ad1,”);乘积(-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的值,它是好的

我想我的公式有一个Syntax错误,但我找不到。有人能帮我吗


提前谢谢

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&“,”)、乘积(-1、VALUE(&adr2&“,”)、“NA”)”
请显示frm的结果:
frm=“=IF(AND)(ISNUMBER(VALUE)(&adr1&“,”))、ISNUMBER(VALUE)(&adr2&“,”)、SUM(VALUE)()))、“SUM)(SUM)()”&adr1&“,”,“,”,“,”,“,”,“,”,“,”,“,”)产品(-1,值(“&adr2&“,”),“,”,“,”,“,”)调试。打印frm c。公式=frm
我添加
Debug.Print frm
这里是frm所取的值:
”=IF(和(ISNUMBER(值('03-2020.xlsx'!$AV$63,”)),ISNUMBER(值('03-2020.xlsx'!$AV$59.))),SUM(值('03-2020.sx'!$AV$63),“),SUM)和('03-2020.sx'!$AV('03-2020.xlsx'!$AV$59,”),“NA”)“
(我打开了指定的文档以缩短地址)看起来不错…但是
VALUE(&adr1&“,”)
-->只有一个参数好吧,我使用了错误的函数。我必须使用“NUMBERVALUE”而不是“VALUE”。非常感谢!