Как я могу построить следующую строку в формуле Excel:
Морис "Ракета" Ричард
Если я использую одинарные кавычки, это тривиально = "Maurice 'The Rocket' Richard"
, но как насчет двойных кавычек?
Как я могу построить следующую строку в формуле Excel:
Морис "Ракета" Ричард
Если я использую одинарные кавычки, это тривиально = "Maurice 'The Rocket' Richard"
, но как насчет двойных кавычек?
Вы пытались сбежать с двойной кавычкой?
= "Maurice ""The Rocket"" Richard"
В качестве альтернативы вы можете использовать функцию CHAR
:
= "Maurice " & CHAR(34) & "Rocket" & CHAR(34) & " Richard"
Три двойных кавычки: " " " x " " "
= "x"
Excel автоматически изменится на одну двойную кавычку. например:
=CONCATENATE("""x"""," hi")
= "x" hi
Я использую функцию для этого (если в книге уже есть VBA).
Function Quote(inputText As String) As String
Quote = Chr(34) & inputText & Chr(34)
End Function
Это из книги Сью Мошера "Программирование Microsoft Outlook". Тогда ваша формула:
="Maurice "&Quote("Rocket")&" Richard"
Это похоже на то, что размещено Dave DuPlantis.
Если вам нужно сделать это с помощью JSON:
=CONCATENATE("'{""service"": { ""field"": "&A2&"}}'")
Использовать chr (34) Код: Joe = "Привет," и Chr (34) и "Joe" и Chr (34) ActiveCell.Value = Joe
Результат: Привет, "joe"
будет ли это работать для макросов, используя .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) = "THEFORMULAFUNCTION" & (CHAR (34) и "STUFF" и CHAR (34))
2) ФУНКЦИОНАЛЬНАЯ ФУНКЦИЯ "СТУДИЯ"
="Maurice "&"""TheRocker"""&" Richard"
Есть еще один способ, хотя и для "Как я могу построить следующую строку в формуле Excel:" Морис "Ракетка" Ричард "" чем "Как создать строки, содержащие двойные кавычки в формулах Excel?", что просто использовать две одинарные кавычки:
Слева находится Calibri, отрезанный от листа Excel, а справа - щелчок из окна VBA. На мой взгляд, побег, упомянутый @YonahW, побеждает "руки вниз", но две одиночные кавычки больше не печатаются, чем два удвоения, и разница в VBA достаточно очевидна без дополнительных нажатий клавиш, хотя, возможно, не заметна в электронной таблице.
Конкатенация "
в виде кедратной клетки:
A | B | C | D
1 " | text | " | =CONCATENATE(A1; B1; C1);
D1 displays "text"