【发布时间】:2020-04-15 10:25:22
【问题描述】:
注意:我是法国人,所以通常我使用法语函数(例如,SI 代表 IF 或 SOMME 代表 SUM),默认小数分隔符是逗号而不是点(例如 @987654325 @为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,".");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