Как создать строки, содержащие двойные кавычки в формулах Excel? - PullRequest
283 голосов
/ 19 октября 2008

Как я могу построить следующую строку в формуле Excel:

Морис "Ракета" Ричард

Если я использую одинарные кавычки, это тривиально = "Maurice 'The Rocket' Richard" а как насчет двойных кавычек?

Ответы [ 12 ]

437 голосов
/ 19 октября 2008

Вы пытались убежать с двойной кавычкой?

= "Maurice ""The Rocket"" Richard"
143 голосов
/ 20 октября 2008

В качестве альтернативы, вы можете использовать функцию CHAR:

= "Maurice " & CHAR(34) & "Rocket" & CHAR(34) & " Richard"
21 голосов
/ 05 октября 2012

Три двойных кавычки: " " " x " " " = "x" Excel автоматически изменится на одну двойную кавычку. например:

=CONCATENATE("""x"""," hi")  

= "х" привет

7 голосов
/ 21 июня 2012

Я использую функцию для этого (если в книге уже есть VBA).

Function Quote(inputText As String) As String
  Quote = Chr(34) & inputText & Chr(34)
End Function

Это из книги Сью Мошер "Программирование в Microsoft Outlook". Тогда ваша формула будет:

="Maurice "&Quote("Rocket")&" Richard"

Это похоже на то, что Дейв ДюПлантис опубликовал.

6 голосов
/ 13 августа 2014

Если вам нужно сделать это с JSON:

=CONCATENATE("'{""service"": { ""field"": "&A2&"}}'")
4 голосов
/ 31 июля 2015

Используйте chr (34) Код: Джо = "Привет!" & Chr (34) & "Джо" & Chr (34) ActiveCell.Value = Джо

Результат: Привет, "Джо"

1 голос
/ 18 мая 2017

Конкатенация " в качестве отдельной ячейки:

    A |   B   | C | D
1   " | text  | " | =CONCATENATE(A1; B1; C1);

D1 displays "text"
1 голос
/ 23 марта 2016

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

1 голос
/ 17 августа 2010

это будет работать для макросов, использующих .Formula = "=THEFORMULAFUNCTION("STUFF")" так было бы как: это будет работать для макросов, использующих .Formula = "=THEFORMULAFUNCTION(CHAR(34) & STUFF & CHAR(34))"

0 голосов
/ 17 июля 2016

Есть и другой способ, но больше для «Как я могу построить следующую строку в формуле Excel:« Морис »Ракета« Ричард »», чем «Как создать строки, содержащие двойные кавычки в формулах Excel?», Который просто использовать две одинарные кавычки:

SO216616 example

Слева Calibri отрывается от листа Excel, а справа отрывок из окна VBA. На мой взгляд, экранирование, как упомянуто @YonahW, выигрывает «руками вниз», но две одинарные кавычки - это не больше, чем две двойные, и разница в VBA достаточно очевидна без дополнительных нажатий клавиш, а потенциально не заметна в электронной таблице.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...