Comment créer des chaînes contenant des guillemets doubles dans les formules Excel?


312

Comment puis-je construire la chaîne suivante dans une formule Excel:

Maurice "La fusée" Richard

Si j'utilise des guillemets simples, c'est trivial = "Maurice 'The Rocket' Richard"mais qu'en est-il des guillemets doubles?

Réponses:


468

Avez-vous essayé de vous échapper avec un guillemet double?

= "Maurice ""The Rocket"" Richard"

159

Alternativement, vous pouvez utiliser la CHARfonction:

= "Maurice " & CHAR(34) & "Rocket" & CHAR(34) & " Richard"

5
Cela fonctionne plus régulièrement pour moi que ""Peut-être que c'est juste parce que j'ai Mac Excel 2011
Ivan

5
@Ivanoats: Non, ce n'est pas une chose Mac ( à l' aide de Windows ici) - cela fait un travail plus cohérente; dans mon cas, la concaténation à l'aide &d'un guillemet double juste avant ou juste après l'esperluette n'a pas fonctionné en utilisant la méthode du guillemet double.
Amos M. Carpenter

Fonctionne de manière plus cohérente pour moi, car j'ai souvent besoin de mettre des guillemets autour d'une chaîne complexe constituée de plusieurs champs concaténés avec une ponctuation entrecoupée. Dans mon cas le plus récent, proposer quelque chose comme ceci: "NameOfLocation, Street Address, City, State Zip"
jamesnotjim

21

Trois guillemets doubles: " " " x " " "= "x"Excel passera automatiquement à un guillemet double. par exemple:

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

= "x" salut


1
Si cela était vrai, veuillez préciser le résultat de = concaténer ("a" "" b "). Selon votre observation, le résultat serait un" b. Ce n'est pas le cas. En fait, cette expression ne sera même pas acceptée par Excel.
whaefelinger

1
vous avez oublié la virgule
KiwiSteve

1
Les guillemets externes dans votre exemple ne font que commencer et terminer la chaîne. "" crée un caractère de citation, pas "" ".
Ben I.

7

J'utilise une fonction pour cela (si le classeur a déjà VBA).

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

Il s'agit du livre de Sue Mosher "Microsoft Outlook Programming". Alors votre formule serait:

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

C'est similaire à ce que Dave DuPlantis a publié.


6

Si vous devez le faire avec JSON:

=CONCATENATE("'{""service"": { ""field"": "&A2&"}}'")

1
Je vous remercie! Cela m'a totalement aidé! J'avais du mal à formater correctement un tableau JSON dans mes cellules.
Brian C

1
Merci, juste ce dont j'avais besoin :)
JimiSweden

4

Utilisez le code chr (34):

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

Résultat:

    Hi there, "joe"

1

cela fonctionnera-t-il pour les macros en utilisant .Formula = "=THEFORMULAFUNCTION("STUFF")" ce serait comme: cela fonctionnera-t-il pour les macros en utilisant.Formula = "=THEFORMULAFUNCTION(CHAR(34) & STUFF & CHAR(34))"


1
Je ne sais pas si cette syntaxe particulière est disponible dans VBA. Essaie.
Allain Lalonde du


1

Le retour d'une chaîne vide ou de longueur nulle (par exemple "") pour faire apparaître une cellule vide est une pratique courante dans une formule de feuille de calcul, mais recréer cette option lors de l'insertion de la formule via la propriété Range.Formula ou Range.FormulaR1C1 dans VBA est difficile à manier en raison de la nécessité d'avoir à doubler les caractères entre guillemets dans une chaîne entre guillemets.

La fonction TEXT native de la feuille de calcul peut produire le même résultat sans utiliser de guillemets.

'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

À mon avis, utiliser TEXT(,)à la place de ""nettoie même une formule simple comme celle ci-dessus. Les avantages deviennent de plus en plus importants lorsqu'ils sont utilisés dans des formules plus compliquées comme la pratique consistant à ajouter une chaîne vide à un VLOOKUP pour éviter de retourner un zéro à la cellule lorsqu'une recherche aboutit à un blanc ou à retourner une chaîne vide en cas de non-correspondance avec 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(,))"

En TEXT(,)remplaçant l'ancienne ""méthode de livraison d'une chaîne vide, vous pourriez cesser d'utiliser un boulier pour déterminer si vous avez le bon nombre de caractères de guillemet dans une chaîne de formule.


1

Concaténer "comme cellule céparée:

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

D1 displays "text"

0

Fonction VBA

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

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

La première méthode utilise vba pour écrire une formule dans une cellule qui donne la valeur calculée:

 THEFORMULAFUNCTION "STUFF"

La deuxième méthode utilise vba pour écrire une chaîne dans une cellule qui donne la valeur:

 THEFORMULAFUNCTION "STUFF"

Résultat / formule Excel

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

2) LA "FONCTION" DE LA FORMULAFUNCTION



0

Il existe une autre manière, mais plus pour "Comment puis-je construire la chaîne suivante dans une formule Excel:" Maurice "The Rocket" Richard "" que "Comment créer des chaînes contenant des guillemets doubles dans les formules Excel?", Qui consiste simplement à utiliser deux guillemets simples:

Exemple SO216616

À gauche, Calibri est extrait d'une feuille de calcul Excel et à droite, un extrait d'une fenêtre VBA. À mon avis, s'échapper, comme mentionné par @YonahW, gagne `` haut la main '', mais deux guillemets simples ne tapent pas plus que deux doubles et la différence est raisonnablement apparente dans VBA sans touches supplémentaires tandis que, potentiellement, n'est pas perceptible dans une feuille de calcul.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.