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?

Odpowiedzi:


468

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

= "Maurice ""The Rocket"" Richard"

159

Alternatywnie możesz użyć CHARfunkcji:

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

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ść


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 .


6

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

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

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"


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.


1

Concatenate "jako komórka ceparate:

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

D1 displays "text"

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”



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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.