web-dev-qa-db-fra.com

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

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

Maurice "Le Rocket" Richard

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

288
Allain Lalonde

Avez-vous essayé de vous échapper avec une double citation?

= "Maurice ""The Rocket"" Richard"
443
YonahW

Vous pouvez également utiliser la fonction CHAR:

= "Maurice " & CHAR(34) & "Rocket" & CHAR(34) & " Richard"
145
Dave DuPlantis

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

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

= "x" salut

21
Adel

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é.

7
JimmyPena

Si vous devez le faire avec JSON:

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

Utilisez chr (34) Code: Joe = "Bonjour à tous", & Chr (34) & "Joe" & Chr (34) ActiveCell.Value = Joe

Résultat: bonjour, "joe"

4
Dave

Renvoyer une chaîne vide ou de longueur nulle (par exemple, "") pour faire en sorte qu'une cellule apparaisse vide est une pratique courante dans une formule de feuille de calcul, mais recréer cette option lors de l'insertion de la formule par le biais de Range.Formula ou Range.FormulaR1C1 , la propriété dans VBA est trop lourde à cause de la nécessité de devoir doubler les caractères de citation double dans une chaîne de citation.

La feuille de calcul native fonction TEXT 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

À mes yeux, 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 renvoyer un zéro à la cellule lorsqu'une recherche aboutit à un blanc ou à un blanc chaîne sur aucune 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(,))"

Avec TEXT(,) remplaçant l'ancienne méthode "" de livraison d'une chaîne vide, vous pouvez arrêter d'utiliser un abaque pour déterminer si vous avez le nombre correct de caractères de citation dans une chaîne de formule.

1
user4039065

Concaténer " comme une cellule distincte:

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

D1 displays "text"
1
Zon

cela fonctionnera-t-il pour les macros utilisant .Formula = "=THEFORMULAFUNCTION("STUFF")" et ressemblera-t-il à: cela fonctionnera-t-il pour les macros utilisant .Formula = "=THEFORMULAFUNCTION(CHAR(34) & STUFF & CHAR(34))"

1
eric
="Maurice "&"""TheRocker"""&" Richard"
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, ce qui donne la valeur:

 THEFORMULAFUNCTION "STUFF"

Résultat Excel/Formule

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

2) THEFORMULAFUNCTION "STUFF"

0
Sam

Il y a un autre moyen, 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 dans des formules Excel?", Qui est simplement à utiliser deux citations simples:

SO216616 example

A gauche, Calibri extrait d’une feuille de calcul Excel et à droite, une fenêtre de VBA. À mon avis, échapper à la mention mentionnée par @YonahW gagne "haut la main", mais deux guillemets simples ne représentent pas plus de dactylographie que deux doublons et la différence est raisonnablement apparente dans VBA sans frappe supplémentaire, alors que potentiellement, elle ne se remarque pas dans un tableur.

0
pnuts