Как я могу построить следующую строку в формуле Excel:
Морис "Ракета" Ричард
Если я использую одинарные кавычки, это тривиально = "Maurice 'The Rocket' Richard"
но как насчет двойных кавычек?
Как я могу построить следующую строку в формуле Excel:
Морис "Ракета" Ричард
Если я использую одинарные кавычки, это тривиально = "Maurice 'The Rocket' Richard"
но как насчет двойных кавычек?
Ответы:
В качестве альтернативы вы можете использовать CHAR
функцию:
= "Maurice " & CHAR(34) & "Rocket" & CHAR(34) & " Richard"
&
с использованием двойной кавычки непосредственно перед или сразу после амперсанда не работало с использованием метода двойной кавычки.
Три двойные кавычки: " " " x " " "
= "x"
Excel автоматически изменится на одну двойную кавычку. например:
=CONCATENATE("""x"""," hi")
= "х" привет
Я использую функцию для этого (если в книге уже есть VBA).
Function Quote(inputText As String) As String
Quote = Chr(34) & inputText & Chr(34)
End Function
Это из книги Сью Мошер "Программирование Microsoft Outlook". Тогда ваша формула будет:
="Maurice "&Quote("Rocket")&" Richard"
Это похоже на то, что написал Дэйв ДюПлантис .
В случае, если вам нужно сделать это с JSON:
=CONCATENATE("'{""service"": { ""field"": "&A2&"}}'")
будет ли это работать для макросов, использующих .Formula = "=THEFORMULAFUNCTION("STUFF")"
так, это будет выглядеть так: будет ли это работать для макросов, использующих.Formula = "=THEFORMULAFUNCTION(CHAR(34) & STUFF & CHAR(34))"
Возвращение пустой строки или строки нулевой длины (например, ""
чтобы ячейка выглядела пустой) является обычной практикой в формуле рабочего листа, но воссоздание этого параметра при вставке формулы через свойство 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(,)
замене старого ""
способа доставки пустой строки, вы можете получить , чтобы прекратить использование Абака , чтобы определить , есть ли у вас правильное количество кавычек в формуле строке.
Функция VBA
1) .Formula = "=" "THEFORMULAFUNCTION" "& (CHAR (34) &" "STUFF" "& CHAR (34))"
2) .Formula = "THEFORMULAFUNCTION" "STUFF" ""
Первый метод использует vba для записи формулы в ячейку, которая приводит к вычисленному значению:
THEFORMULAFUNCTION "STUFF"
Второй метод использует vba для записи строки в ячейку, что приводит к значению:
THEFORMULAFUNCTION "STUFF"
Excel Результат / Формула
1) = «ФОРМУЛАФУНКЦИЯ» & (CHAR (34) & «STUFF» & CHAR (34))
2) ФОРМУЛАФУНКЦИЯ "ПЕРСОНАЛ"
="Maurice "&"""TheRocker"""&" Richard"
Есть и другой способ, но больше для «Как я могу построить следующую строку в формуле Excel:« Морис »Ракета« Ричард »», чем «Как создать строки, содержащие двойные кавычки в формулах Excel?», Который просто использовать две одинарные кавычки:
Слева Calibri отрывается от листа Excel, а справа отрывок из окна VBA. На мой взгляд, экранирование, как упомянуто @YonahW, выигрывает «руки вниз», но две одинарные кавычки - это не больше, чем две двойные, и разница в VBA достаточно очевидна без дополнительных нажатий клавиш, хотя, возможно, не заметна в электронной таблице.
""
может быть, просто потому, что у меня Mac Excel 2011