Возвращение пустой строки или строки нулевой длины (например, ""
), чтобы сделать ячейку пустой, является обычной практикой в формуле рабочего листа, но воссоздание этой опции при вставке формулы через Range.Formula или Свойство Range.FormulaR1C1 в VBA громоздко из-за необходимости удваивать символы двойной кавычки в строке в кавычках.
Функция рабочего листа TEXT может выдавать тот же результат без использования кавычек.
'formula to insert into C1 - =IF(A1<>"", B1, "")
range("C1").formula = "=IF(A1<>"""", B1, """")" '<~quote chars doubled up
range("C1").formula = "=IF(A1<>TEXT(,), B1, TEXT(,))" '<~with TEXT(,) instead
На мой взгляд, использование TEXT(,)
вместо ""
очищает даже простую формулу, подобную приведенной выше. Преимущества становятся все более значительными, когда используются в более сложных формулах, таких как практика добавления пустой строки к VLOOKUP , чтобы избежать возврата нуля в ячейку, когда поиск приводит к пустому, или возврат пустой строки при отсутствии с IFERROR .
'formula to insert into D1 - =IFERROR(VLOOKUP(A1, B:C, 2, FALSE)&"", "")
range("D1").formula = "=IFERROR(VLOOKUP(A1, B:C, 2, FALSE)&"""", """")"
range("D1").formula = "=IFERROR(VLOOKUP(A1, B:C, 2, FALSE)&TEXT(,), TEXT(,))"
С TEXT(,)
заменой старого ""
метода доставки пустой строки вы можете перестать использовать счеты, чтобы определить, есть ли у вас правильное количество символов кавычек в строке формулы.