Como criar seqüências de caracteres contendo aspas duplas nas fórmulas do Excel?

312

Como posso construir a seguinte seqüência de caracteres em uma fórmula do Excel:

Maurice "O Foguete" Richard

Se eu estou usando aspas simples, é trivial = "Maurice 'The Rocket' Richard"mas e as aspas duplas?

Allain Lalonde
fonte

Respostas:

468

Você já tentou escapar com aspas duplas?

= "Maurice ""The Rocket"" Richard"
YonahW
fonte
159

Como alternativa, você pode usar a CHARfunção:

= "Maurice " & CHAR(34) & "Rocket" & CHAR(34) & " Richard"
Dave DuPlantis
fonte
5
Isso funciona de forma mais consistente para mim do que ""Talvez seja apenas porque eu tenho o Mac Excel 2011
Ivan
5
@Ivanoats: Não, não é uma coisa Mac (usando o Windows aqui) - este faz o trabalho de forma mais consistente; no meu caso, concatenar o uso &com aspas duplas antes ou depois do e comercial não funcionou usando o método de aspas duplas.
Amos M. Carpenter
Funciona de forma mais consistente para mim, pois muitas vezes preciso colocar aspas em torno de uma sequência complicada formada por vários campos concatenados com pontuação intercalada. No meu caso mais recente, para criar algo assim: "NameOfLocation, endereço, cidade, CEP do estado"
jamesnotjim 11/11/15
21

Três aspas duplas: " " " x " " "= O "x"Excel mudará automaticamente para uma aspas dupla. por exemplo:

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

= "x" oi

Adel
fonte
1
Se isso for verdade, por favor, elabore o resultado de = concatenar ("a" "" b "). De acordo com sua observação, o resultado seria a" b. Este não é o caso. De fato, essa expressão nem será aceita pelo Excel.
Whaefelinger 20/05
1
você esqueceu a vírgula
KiwiSteve 21/02
1
As aspas externas no seu exemplo estão apenas começando e terminando a string. "" cria um caractere de citação, não "" ".
Ben I.
7

Eu uso uma função para isso (se a pasta de trabalho já tiver VBA).

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

Isto é do livro de Sue Mosher "Microsoft Outlook Programming". Então sua fórmula seria:

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

Isso é semelhante ao que Dave DuPlantis postou.

JimmyPena
fonte
6

No caso de você precisar fazer isso com o JSON:

=CONCATENATE("'{""service"": { ""field"": "&A2&"}}'")
tandy
fonte
1
Obrigado! Isso me ajudou totalmente! Eu estava lutando para formatar corretamente uma matriz JSON em minhas células.
Brian C
1
Obrigado, apenas o que eu precisava :)
JimiSweden
4

Use o código chr (34):

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

Resultado:

    Hi there, "joe"
Dave
fonte
1

isso funcionará para macros usando, .Formula = "=THEFORMULAFUNCTION("STUFF")" então seria assim: isso funcionará para macros usando.Formula = "=THEFORMULAFUNCTION(CHAR(34) & STUFF & CHAR(34))"

Eric
fonte
1
Não sei se essa sintaxe específica está disponível no VBA. De uma chance.
Allain Lalonde
Parece que sim: bytes.com/topic/access/insights/…
Allain Lalonde
1

Retornar uma string vazia ou de comprimento zero (por exemplo "") para fazer uma célula aparecer em branco é uma prática comum em uma fórmula da planilha, mas recriar essa opção ao inserir a fórmula através do Range.Formula ou Range.FormulaR1C1 propriedade em VBA é difícil de manejar devido ao necessidade de duplicar os caracteres de aspas duplas dentro de uma string entre aspas.

A função TEXT nativa da planilha pode produzir o mesmo resultado sem usar aspas.

'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

Para os meus olhos, usar TEXT(,)no lugar de ""limpa até mesmo uma fórmula simples como a acima. Os benefícios se tornam cada vez mais significativos quando usados ​​em fórmulas mais complicadas, como a prática de anexar uma sequência vazia a um VLOOKUP para evitar retornar um zero à célula quando uma pesquisa resulta em um espaço em branco ou uma sequência vazia sem correspondência com 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(,))"

Com a TEXT(,)substituição do ""método antigo de entrega de uma sequência vazia, você pode parar de usar um ábaco para determinar se possui o número certo de caracteres de aspas em uma sequência de fórmulas.


fonte
1

Concatenar "como uma célula ceparate:

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

D1 displays "text"
Zon
fonte
0

Função VBA

1) .Formula = "=" "FUNÇÃO DA FÓRMULA" "& (CHAR (34) &" "MATERIAL" "& CHAR (34))"

2) .Formula = "THEFORMULAFUNCTION" "MATERIAL" ""

O primeiro método usa vba para escrever uma fórmula em uma célula que resulta no valor calculado:

 THEFORMULAFUNCTION "STUFF"

O segundo método usa vba para escrever uma string em uma célula que resulta no valor:

 THEFORMULAFUNCTION "STUFF"

Resultado / Fórmula do Excel

1) = "FUNÇÃO DA FÓRMULA" & (CHAR (34) & "MATERIAL" & CHAR (34))

2) FUNÇÃO DA FÓRMULA "MATERIAL"

Sam
fonte
0
="Maurice "&"""TheRocker"""&" Richard"
Karthick Gunasekaran
fonte
0

Há outra maneira, embora mais para "Como construir a seguinte seqüência de caracteres em uma fórmula do Excel:" Maurice "The Rocket" Richard "" que "Como criar seqüências de caracteres contendo aspas duplas nas fórmulas do Excel?", Que é simplesmente usar duas aspas simples:

Exemplo SO216616

À esquerda, o Calibri é recortado de uma planilha do Excel e, à direita, um recorte de uma janela do VBA. Na minha opinião, escapar como mencionado por @YonahW vence 'mãos para baixo', mas duas aspas simples não digitam mais que duas duplas e a diferença é razoavelmente aparente no VBA sem pressionamentos de tecla adicionais, enquanto, potencialmente, não é perceptível em uma planilha.

nozes
fonte