Возвращение пустой или нулевой строки (например, ""
), чтобы сделать ячейку пустой, является обычной практикой в формуле рабочего листа, но воссоздавая эту опцию при вставке формулы через диапазон . 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 , чтобы избежать возврата нуля в ячейку, когда поиск приводит к ошибке или возвращает пустую строку на no-match с 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(,)
заменит старый метод ""
доставки пустой строки, вы можете перестать использовать счеты, чтобы определить есть ли у вас правильное число символов кавычек в строке формулы.