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.