Comment créer des chaînes contenant des guillemets doubles dans des formules Excel?
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?
12 réponses
Avez-vous essayé de vous échapper avec une double citation?
= "Maurice ""The Rocket"" Richard"
Vous pouvez également utiliser la fonction CHAR
:
= "Maurice " & CHAR(34) & "Rocket" & CHAR(34) & " Richard"
Trois guillemets doubles: " " " x " " "
= "x"
Excel changera automatiquement en une citation double. par exemple:
=CONCATENATE("""x"""," hi")
= "x" salut
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
Ceci est tiré du livre de Sue Mosher "Microsoft Outlook Programming". Alors votre formule serait:
="Maurice "&Quote("Rocket")&" Richard"
Ceci est similaire à ce que Dave DuPlantis posté.
Dans le cas où vous devez le faire avec JSON:
=CONCATENATE("'{""service"": { ""field"": "&A2&"}}'")
Utiliser chr (34) Code: Joe = "Bonjour," & Chr(34) & "Joe" & Chr(34) ActiveCell.Valeur = Joe
Résultat: Bonjour, " joe "
Cela fonctionnera-t-il pour les macros utilisant .Formula = "=THEFORMULAFUNCTION("STUFF")"
donc, il serait comme:
cela fonctionnera-t-il pour les macros en utilisant .Formula = "=THEFORMULAFUNCTION(CHAR(34) & STUFF & CHAR(34))"
Renvoyer 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 dans la plage .Formule ou Plage.FormulaR1C1 propriété dans VBA est difficile à manier en raison de la nécessité d'avoir à doubler les caractères de guillemets doubles dans une chaîne entre guillemets.
La fonction Text native de la feuille de calcul {[9] } peut produire le même résultat sans utiliser citation.
'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
À mes yeux, en utilisant 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 d'ajouter une chaîne vide à un VLOOKUP pour éviter de renvoyer un zéro à la cellule quand une recherche aboutit à un vide ou renvoyer une chaîne vide sur no-match 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(,))"
Avec TEXT(,)
remplaçant l'ancienne méthode ""
de distribution d'un string, vous pouvez arrêter d'utiliser un abacus pour déterminer si vous avez le bon nombre de caractères de citation dans une chaîne de formule.
Fonction VBA
1) .La formule = " = ""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 aboutit à 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) THEFORMULAFUNCTION "STUFF"
Il y a un autre moyen, bien que plus pour "Comment puis-je construire la chaîne suivante dans une formule Excel: "Maurice" La fusée "Richard "" que " comment créer des chaînes contenant des guillemets doubles dans des formules Excel? ", qui consiste simplement à utiliser deux guillemets simples:
Sur la gauche est Calibri snipped à partir d'une feuille de calcul Excel et sur la droite un snip à partir d'une fenêtre VBA. À mon avis, s'échapper comme mentionné par @YonahW gagne "haut la main", mais deux guillemets simples ne tapent plus plus de deux doubles et la différence est raisonnablement apparente dans VBA sans frappes supplémentaires alors que, potentiellement, pas perceptible dans une feuille de calcul.
Concaténer "
en tant que cellule céparate:
A | B | C | D
1 " | text | " | =CONCATENATE(A1; B1; C1);
D1 displays "text"