¿Cómo crear cadenas que contienen comillas dobles en fórmulas de Excel?

312

¿Cómo puedo construir la siguiente cadena en una fórmula de Excel:

Maurice "El cohete" Richard

Si estoy usando comillas simples, es trivial = "Maurice 'The Rocket' Richard"pero ¿qué pasa con las comillas dobles?

Allain Lalonde
fuente

Respuestas:

468

¿Has intentado escapar con una comilla doble?

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

Alternativamente, puede usar la CHARfunción:

= "Maurice " & CHAR(34) & "Rocket" & CHAR(34) & " Richard"
Dave DuPlantis
fuente
55
Esto funciona de manera más consistente para mí que ""Quizás sea solo porque tengo Mac Excel 2011
Ivan
55
@Ivanoats: No, no es una cosa Mac (el uso de Windows aquí) - esto hace el trabajo más consistente; en mi caso, la concatenación &con comillas dobles justo antes o justo después del signo y no funcionó con el método de comillas dobles.
Amos M. Carpenter
Funciona de manera más consistente para mí, ya que a menudo necesito poner comillas alrededor de una cadena complicada formada por múltiples campos concatenados con puntuación intercalada. En mi caso más reciente, para llegar a algo como esto: "NameOfLocation, Street Address, City, State Zip"
jamesnotjim
21

Tres comillas dobles: " " " x " " "= "x"Excel cambiará automáticamente a una comilla doble. p.ej:

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

= "x" hola

Adel
fuente
1
Si esto fuera cierto, entonces explique el resultado de = concatenate ("a" "" b "). Según su observación, el resultado sería a" b. Este no es el caso. De hecho, esta expresión ni siquiera será aceptada por Excel.
Whaefelinger
1
olvidaste la coma
KiwiSteve
1
Las comillas externas en su ejemplo solo comienzan y terminan la cadena. "" crea un carácter de comilla, no "" ".
Ben I.
7

Yo uso una función para esto (si el libro ya tiene VBA).

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

Esto es del libro de Sue Mosher "Microsoft Outlook Programming". Entonces tu fórmula sería:

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

Esto es similar a lo que publicó Dave DuPlantis .

JimmyPena
fuente
6

En el caso de que necesite hacer esto con JSON:

=CONCATENATE("'{""service"": { ""field"": "&A2&"}}'")
tandy
fuente
1
¡Gracias! ¡Esto me ayudó totalmente! Estaba luchando por formatear correctamente una matriz JSON en mis celdas.
Brian C
1
Gracias, justo lo que necesitaba :)
JimiSweden
4

Utilice el código chr (34):

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

Resultado:

    Hi there, "joe"
Dave
fuente
1

¿Funcionará para macros? Entonces .Formula = "=THEFORMULAFUNCTION("STUFF")" sería así: ¿Funcionará para macros?.Formula = "=THEFORMULAFUNCTION(CHAR(34) & STUFF & CHAR(34))"

eric
fuente
1
No sé si esta sintaxis particular está disponible en VBA. Darle una oportunidad.
Allain Lalonde
Parece un sí: bytes.com/topic/access/insights/…
Allain Lalonde
1

Devolver una cadena vacía o de longitud cero (p "". Ej. ) Para hacer que una celda aparezca en blanco es una práctica común en una fórmula de hoja de trabajo, pero recrear esa opción al insertar la fórmula a través de la propiedad Range.Formula o Range.FormulaR1C1 en VBA es difícil de manejar debido a que necesidad de duplicar los caracteres de comillas dobles dentro de una cadena entre comillas.

La función TEXTO nativa de la hoja de trabajo puede producir el mismo resultado sin usar comillas.

'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

En mi opinión, usar TEXT(,)en lugar de ""limpia incluso una fórmula simple como la anterior. Los beneficios se vuelven cada vez más significativos cuando se usan en fórmulas más complicadas, como la práctica de agregar una cadena vacía a un BUSCADOR para evitar devolver un cero a la celda cuando una búsqueda da como resultado un espacio en blanco o devuelve una cadena vacía cuando no coincide con 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(,))"

Al TEXT(,)reemplazar el antiguo ""método de entregar una cadena vacía, puede dejar de usar un ábaco para determinar si tiene el número correcto de caracteres de comillas en una cadena de fórmula.


fuente
1

Concatenar "como una célula ceparate:

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

D1 displays "text"
Zon
fuente
0

Función VBA

1) .Formula = "=" "THEFORMULAFUNCTION" "& ​​(CHAR (34) &" "STUFF" "& CHAR (34))"

2) .Formula = "THEFORMULAFUNCTION" "STUFF" ""

El primer método usa vba para escribir una fórmula en una celda que da como resultado el valor calculado:

 THEFORMULAFUNCTION "STUFF"

El segundo método usa vba para escribir una cadena en una celda que da como resultado el valor:

 THEFORMULAFUNCTION "STUFF"

Resultado Excel / Fórmula

1) = "THEFORMULAFUNCTION" & (CHAR (34) & "STUFF" & CHAR (34))

2) LA FUNCIÓN DE FÓRMULA "MATERIAL"

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

Hay otra forma, aunque más para "¿Cómo puedo construir la siguiente cadena en una fórmula de Excel:" Maurice "The Rocket" Richard "" que "Cómo crear cadenas que contienen comillas dobles en las fórmulas de Excel?", Que es simplemente usar dos comillas simples:

Ejemplo SO216616

A la izquierda está Calibri recortado de una hoja de cálculo de Excel y a la derecha un recorte de una ventana de VBA. En mi opinión, escapar como lo menciona @YonahW gana 'manos abajo', pero dos comillas simples no son más que escribir dos dobles y la diferencia es razonablemente evidente en VBA sin teclas adicionales, mientras que, potencialmente, no se nota en una hoja de cálculo.

nueces
fuente