Примечание: я француз, поэтому обычно я использую французские функции (например, 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
, и это хорошо.
Я думаю, что в моей формуле есть ошибка синтаксиса, но я не смог ее найти. Кто-нибудь может мне помочь?
Заранее спасибо!