注:我是法国人,所以通常我用法语功能(例如SI
为IF
或SOMME
对SUM
),默认小数分隔符是昏迷,而不是点(例如,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,".");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
的值了,很好。
我认为我的公式中有一个synthax错误,但我找不到它。有人能帮我吗 ?
提前致谢 !
VBA仅接受美国格式的公式。美国格式的使用,
,而不是;
frm = "=IF(AND(ISNUMBER(VALUE(" & adr1 & ",""."")),ISNUMBER(VALUE(" & adr2 & ","".""))),SUM(VALUE(" & adr1 & ","".""),PRODUCT(-1,VALUE(" & adr2 & ","".""))),""NA"")"
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句