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?

Allain Lalonde
la source

Réponses:

468

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

= "Maurice ""The Rocket"" Richard"
YonahW
la source
159

Alternativement, vous pouvez utiliser la CHARfonction:

= "Maurice " & CHAR(34) & "Rocket" & CHAR(34) & " Richard"
Dave DuPlantis
la source
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

Adel
la source
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é.

JimmyPena
la source
6

Si vous devez le faire avec JSON:

=CONCATENATE("'{""service"": { ""field"": "&A2&"}}'")
tandy
la source
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"
Dave
la source
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))"

eric
la source
1
Je ne sais pas si cette syntaxe particulière est disponible dans VBA. Essaie.
Allain Lalonde du
On dirait un oui: bytes.com/topic/access/insights/…
Allain Lalonde
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.


la source
1

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

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

D1 displays "text"
Zon
la source
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

Sam
la source
0
="Maurice "&"""TheRocker"""&" Richard"
Karthick Gunasekaran
la source
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.

pnuts
la source