Как создать строки, содержащие двойные кавычки в формулах Excel?

312

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

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

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

Аллен Лалонд
источник

Ответы:

468

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

= "Maurice ""The Rocket"" Richard"
YonahW
источник
159

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

= "Maurice " & CHAR(34) & "Rocket" & CHAR(34) & " Richard"
Дейв ДюПлантис
источник
5
Это работает для меня более последовательно, чем, ""может быть, просто потому, что у меня Mac Excel 2011
Иван
5
@Ivanoats: Нет, это не Mac вещь ( с использованием Windows , здесь) - это делает работу более последовательно; в моем случае объединение &с использованием двойной кавычки непосредственно перед или сразу после амперсанда не работало с использованием метода двойной кавычки.
Амос М. Карпентер
Работает для меня более согласованно, так как мне часто приходится заключать в кавычки сложную строку, состоящую из нескольких объединенных полей с вкраплениями пунктуации. В моем последнем случае, чтобы придумать что-то вроде этого: «NameOfLocation, почтовый адрес, город, штат Zip»
jamesnotjim
21

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

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

= "х" привет

Адель
источник
1
Если это так, то, пожалуйста, уточните результат = concatenate ("a" "" b "). Согласно вашему наблюдению, результатом будет a" b. Это не вариант. На самом деле это выражение даже не будет принято Excel.
Вайфелингер
1
Вы забыли запятую
KiwiSteve
1
Внешние кавычки в вашем примере только начинаются и заканчиваются строкой. "" создает символ кавычки, а не "" ".
Бен И.
7

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

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

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

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

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

JimmyPena
источник
6

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

=CONCATENATE("'{""service"": { ""field"": "&A2&"}}'")
Тэнди
источник
1
Спасибо! Это полностью помогло мне! Я изо всех сил пытался правильно отформатировать массив JSON в моих ячейках.
Брайан С
1
Спасибо, как раз то, что мне нужно :)
JimiSweden
4

Используйте код chr (34):

    Joe = "Hi there, " & Chr(34) & "Joe" & Chr(34)
    ActiveCell.Value = Joe

Результат:

    Hi there, "joe"
Дейв
источник
1

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

Эрик
источник
1
Не знаю, доступен ли этот конкретный синтаксис в VBA. Попробуйте.
Аллен Лалонд
Выглядит как да: bytes.com/topic/access/insights/…
Аллен Лалонд
1

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

Объединить "как ceparate клетки:

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

D1 displays "text"
Зон
источник
0

Функция 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) ФОРМУЛАФУНКЦИЯ "ПЕРСОНАЛ"

Сэм
источник
0
="Maurice "&"""TheRocker"""&" Richard"
Картик Гунасекаран
источник
0

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

Пример SO216616

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

pnuts
источник