Jak tworzyć ciągi zawierające podwójne cudzysłowy we wzorach Excela?

312

Jak zbudować następujący ciąg w formule Excela:

Maurice „The Rocket” Richard

Jeśli używam pojedynczych cudzysłowów, jest to banalne = "Maurice 'The Rocket' Richard"ale co z podwójnymi cudzysłowami?

Allain Lalonde
źródło

Odpowiedzi:

468

Czy próbowałeś uciec z podwójnym cytatem?

= "Maurice ""The Rocket"" Richard"
YonahW
źródło
159

Alternatywnie możesz użyć CHARfunkcji:

= "Maurice " & CHAR(34) & "Rocket" & CHAR(34) & " Richard"
Dave DuPlantis
źródło
5
Działa to dla mnie bardziej konsekwentnie niż ""może tylko dlatego, że mam Mac Excel 2011
Ivan
5
@Ivanoats: Nie, to nie jest rzeczą Mac (przy użyciu tutaj Windows) - to czyni pracę bardziej konsekwentnie; w moim przypadku łączenie za &pomocą podwójnego cudzysłowu tuż przed lub tuż po ampersand nie działało przy użyciu metody podwójnego cudzysłowu.
Amos M. Carpenter
Działa dla mnie bardziej konsekwentnie, ponieważ często muszę zawijać znaki cudzysłowu wokół skomplikowanego ciągu złożonego z wielu połączonych pól z przerywaną interpunkcją. W moim ostatnim przypadku, aby wymyślić coś takiego: „NameOfLocation, Street Address, City, State Zip”
jamesnotjim
21

Trzy podwójne cudzysłowy: " " " x " " "= "x"Excel automatycznie zmieni się w jeden podwójny cudzysłów. na przykład:

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

= "x" cześć

Adel
źródło
1
Jeśli byłoby to prawdą, proszę rozwinąć wynik = concatenate ("a" "" b "). Zgodnie z twoją obserwacją, wynik byłby" b. Nie o to chodzi. W rzeczywistości to wyrażenie nie będzie nawet akceptowane przez program Excel.
whaefelinger,
1
zapomniałeś przecinka
KiwiSteve
1
Cytaty zewnętrzne w twoim przykładzie zaczynają i kończą ciąg. „” tworzy cudzysłów, a nie „”.
Ben I.
7

Używam do tego funkcji (jeśli skoroszyt ma już VBA).

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

Pochodzi z książki Sue Mosher „Programowanie w programie Microsoft Outlook”. Wtedy twoja formuła byłaby:

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

Jest to podobne do tego, co napisał Dave DuPlantis .

JimmyPena
źródło
6

W przypadku, gdy musisz to zrobić za pomocą JSON:

=CONCATENATE("'{""service"": { ""field"": "&A2&"}}'")
tandy
źródło
1
Dziękuję Ci! To mi całkowicie pomogło! Próbowałem poprawnie sformatować tablicę JSON w moich komórkach.
Brian C,
1
Dzięki, właśnie tego potrzebowałem :)
JimiSweden
4

Użyj kodu chr (34):

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

Wynik:

    Hi there, "joe"
Dave
źródło
1

czy to zadziała dla makr przy użyciu, .Formula = "=THEFORMULAFUNCTION("STUFF")" więc będzie tak: będzie działać dla makr przy użyciu.Formula = "=THEFORMULAFUNCTION(CHAR(34) & STUFF & CHAR(34))"

eric
źródło
1
Nie wiem, czy ta konkretna składnia jest dostępna w języku VBA. Spróbuj.
Allain Lalonde
Wygląda na tak: bytes.com/topic/access/insights/…
Allain Lalonde
1

Zwracanie pustego lub zerowego ciągu (np. ""), Aby komórka wyglądała na pustą, jest powszechną praktyką w formule arkusza roboczego, ale odtwarzanie tej opcji podczas wstawiania formuły przez Range.Formula lub Range.FormulaR1C1 w VBA jest niewygodne ze względu na konieczność podwojenia znaków cudzysłowu w ciągu cytowanym.

Natywna funkcja TEKSTU arkusza roboczego może dawać ten sam wynik bez użycia cudzysłowów.

'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

Moim zdaniem użycie TEXT(,)zamiast ""oczyszcza nawet prostą formułę taką jak powyższa. Korzyści stają się coraz bardziej znaczące, gdy są stosowane w bardziej skomplikowanych formułach, takich jak praktyka dodawania pustego ciągu do WYSZUKAJ.PIONOWO, aby uniknąć zwracania zera do komórki, gdy wyszukiwanie skutkuje pustym ciągiem lub zwracanie pustego ciągu przy braku dopasowania z 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(,))"

Z TEXT(,)wymianą starego ""sposobu dostarczania pusty ciąg, można dostać się do zaprzestania korzystania z liczydła w celu ustalenia, czy masz odpowiednią liczbę cytatów w ciąg formuły.


źródło
1

Concatenate "jako komórka ceparate:

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

D1 displays "text"
Strefa
źródło
0

Funkcja VBA

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

2). Formula = „THEFORMULAFUNCTION” „STUFF” „”

Pierwsza metoda wykorzystuje vba do napisania formuły w komórce, co daje obliczoną wartość:

 THEFORMULAFUNCTION "STUFF"

Druga metoda używa vba do napisania ciągu w komórce, co daje wartość:

 THEFORMULAFUNCTION "STUFF"

Wynik / formuła programu Excel

1) = „THEFORMULAFUNCTION” i (CHAR (34) i „STUFF” i CHAR (34))

2) FUNKCJONOWANIE „FUNDUSZU”

Sam
źródło
0
="Maurice "&"""TheRocker"""&" Richard"
Karthick Gunasekaran
źródło
0

Istnieje jednak inny sposób na „Jak zbudować następujący ciąg w formule Excel:„ Maurice ”Rakieta„ Richard ”” niż „Jak utworzyć ciągi zawierające podwójne cudzysłowy w formułach Excel?”, Który jest po prostu użyć dwa pojedyncze cytaty:

Przykład SO216616

Po lewej stronie wycina się Calibri z arkusza programu Excel, a po prawej wycina się z okna VBA. Moim zdaniem ucieczka, jak wspomniano w @YonahW, wygrywa „w dół”, ale dwa pojedyncze cudzysłowy nie są bardziej typowe niż dwa podwójne, a różnica jest dość widoczna w VBA bez dodatkowych naciśnięć klawiszy, podczas gdy potencjalnie nie jest zauważalna w arkuszu kalkulacyjnym.

orzechy
źródło