Excel dodaje znaki cudzysłowu na końcu mojej formuły

2

Excel automatycznie poprawia moją formułę, mówiąc: „Znaleźliśmy literówkę w twojej formule i próbowaliśmy ją poprawić:”

=CONCAT(CHAR(34),A4,""":""",D4,"""")

Moja oryginalna formuła ma tylko trzy znaki cudzysłowu na końcu:

=CONCAT(CHAR(34),A4,""":""",D4,""")

Aby uzyskać informacje, łączę dane z dwóch kolumn w programie Excel, a wynik powinien wyglądać następująco:

"welcome":"Bienvenue!"

Komórka A4 zawiera: welcome
Komórka D4 zawiera: Bienvenue!

CHAR (34) reprezentuje początkowy znak zapytania dla komórki A4.

Excel CONCAT() funkcja łączy dane z różnych komórek Ms Excel.

Uwaga: To pytanie nie jest podobne do pytania Superużytkownika Excel dodaje znaki cudzysłowu do wyniku mojej formuły

Gabriel
źródło
2
Hej Gabriel, witaj w Superuser. Już sam opublikowałeś swój problem. Zamiast używać "" ". Możesz po prostu użyć:, CHAR (34), który daje podwójny cudzysłów. Będziesz musiał użyć więcej przecinków, ale jest to najłatwiejsze rozwiązanie, jakie widzę.
Michthan
@Michthan lub po prostu postępuj zgodnie z regułami ogranicznika Excel - zobacz moją odpowiedź.
Carl Witthoft
1
Excel koryguje niepoprawną formułę. Powinieneś być szczęśliwy z tego powodu. """ nie jest poprawnym łańcuchem, podczas gdy """" jest w porządku
edc65
Na podstawie odpowiedzi od hannu, Michthan i fixer1234 Myślę, że użyję tej formuły = CONCAT (CHAR (34), A4, „” ”:„ ””, D4, CHAR (34), „,”), ponieważ jest to najłatwiejsze wyjaśnić pozostałej części zespołu zaangażowanego w ten projekt, którym może być każdy, od tłumaczy, przez programistów i pracowników PM / admin. Ale skomentuj, dziękuję.
Gabriel

Odpowiedzi:

14

Znaki cudzysłowu mają specjalne znaczenie w Excelu, więc musisz przeskakiwać przez niektóre obręcze, aby użyć ich jako zwykłego znaku. Możesz to zrobić, podwajając je, ale może się to skomplikować, w zależności od sytuacji.

Aby uniknąć pomyłki terminologicznej, pomińmy apostrofy (czasami nazywane „pojedynczymi cudzysłowami”). Wszelkie odniesienia do „cytatu” lub „cudzysłowu” odnoszą się do symbolu z dwoma znacznikami.

Zasady są zrozumiałe, jeśli rozpoznasz, co się dzieje.

  • Znaki cudzysłowu zawsze muszą być parami (ale niekoniecznie sąsiadujące).
  • Podwójny cytat staje się pojedynczym znakiem tekstowym (cudzysłowem).
  • Tekst musi być w cudzysłowie.
  • Jeśli podwojony cytat znajduje się w środku łańcucha, to jest to kolejny znak.
  • Jeśli znajduje się na początku lub na końcu łańcucha, ciąg znaków, którego jest częścią, musi być ujęty w cudzysłów (tak więc na początku lub na końcu pojawi się potrójny cytat).
  • Jeśli jest on konkatenowany jako jedyny znak (na początku, w środku lub na końcu wyrażenia), musi być ujęty w cudzysłów (więc kończy się na cudzysłowie).

Oto kilka przykładów użycia Twojej formuły:

enter image description here

  • Widzisz, że dobrze to zrobiłeś, używając potrójnych cytatów w okrężnicy. Pomyśl o tym jako o dwukropku otoczonym podwójnymi cudzysłowami, a wszystko to w cudzysłowie, aby rozgraniczyć tekst.
  • Znowu masz prawo, używając CHAR (34), aby rozpocząć łańcuch. Możesz zrobić to samo dla ostatniej postaci.
  • Ponieważ pierwszy i ostatni znak są połączone, można je poczwórnie poczwórnie (np D4&"""" ). Właśnie to Excel próbował naprawić dla ciebie.
  • Jeśli wyrażenie zostało rozpoczęte lub zakończone zakodowanym tekstem zamiast odwołania do komórki, można użyć potrójnych cudzysłowów (np """Welcome" )

Można to zrobić za pomocą wielu cudzysłowów, chociaż możesz się zorientować, jeśli chcesz zdiagnozować problemy z formułą, jeśli zepsujesz. Prostym i bezpiecznym sposobem jest użycie CHAR (34), zwłaszcza gdy potrzebne są poczwórne cytaty, jak sugeruje odpowiedź Hannu (chociaż moją własną preferencją byłoby trzymanie potrójnych cytatów wokół dwukropka, aby uniknąć dzielenia jednego wyrażenia tekstowego na trzy kawałki, ale dlatego są lody waniliowe i czekoladowe).

fixer1234
źródło
Ja osobiście wolę Heath Bar Crunch
Carl Witthoft
Nie powinno być trudno nie wpatrywać się w siebie - dwa najłatwiejsze sposoby określenia, czy jest to cytat zamykający, czy dosłowny cytat, to 1. Przeczytaj cytat otwierający. Następnie, podczas gdy następne cytaty przychodzą parami, są dosłownymi cytatami. Jeśli nie, jest to cytat zamykający. Alternatywnie możesz podzielić je na zasadniczo mniejsze ciągi - """:""" staje się "" ":" "". Następnie po prostu połącz wszystkie łańcuchy razem z cudzysłowami
somebody
Moja kompletna formuła jest w rzeczywistości = CONCAT (CHAR (34), A4, „” ”:„ ””, D4, „” ”,„, ”) podczas tworzenia łańcucha JSON w kolumnie G z danych w kolumnie A i kolumna D. Czy poleciłbyś tę formułę? = "" "" i amp; A4 i "" ":" "" i amp; D4 & amp; "" "," Chcę, aby wynik wyglądał następująco: "witaj": "Bienvenue!",
Gabriel
@Gabriel, czy próbowałeś zobaczyć, co dostałeś? :-) To wygląda dobrze, chociaż w twoim żądanym wyjściu w komentarzu wygląda na to, że po dwukropku jest spacja, którą należałoby dołączyć, jeśli to prawda:. . . ( """: """ vs. """:""" ). Osobista preferencja, czy używać CONCAT z przecinkami vs. znaki handlowe; tak samo z """" vs. CHAR (34) dla pojedynczego połączonego cytatu. Zatem wersja formuły w twoim komentarzu do odpowiedzi Hannu również będzie działać (ten sam punkt z widoczną przestrzenią po dwukropku: ": " vs. ":" ).
fixer1234
@ fixer1234 Oh, widziałem teraz, że nie dostałem miejsca, dzięki! :-). Tak, potrzebuję spacji po przecinku. Próbuję tylko znaleźć formułę, którą każdy, kto korzysta z pliku Excel, łatwo zrozumie, i łatwo może się zmienić, więc chcę po prostu skorzystać ze standardowej praktyki Excela.
Gabriel
4

Te dwa są równoważne i oba tworzą oczekiwany ciąg:

=CONCAT(CHAR(34),A4,CHAR(34),":",CHAR(34),D4,CHAR(34))

Zauważ, że , wewnątrz wywołań funkcji, ponieważ może to wymagać zmiany na ; w zależności od lokalizacji.

=CHAR(34) &A4 &CHAR(34) &":" &CHAR(34) &D4 &CHAR(34)

Możesz dołączyć podwójne cytaty w ciągu znaków, ponieważ dostępne jest „łatwe dopasowanie”, ale w połączeniu z faktem, że łańcuchy zaczynają się i kończą podwójnym cytatem, szybko stają się brzydkie i trudne do utrzymania; na przykład ="""welcome"":""Bienvenue!""" - potrzebujesz więcej cytatów, aby dodać odnośniki do komórek powyżej; =""""&A4&""":"""&D4&"""" ... łatwo się mylić.

UWAGA: zaktualizowane w.r.t. cytat ucieka.

Hannu
źródło
Nie ma nic złego w 4 podwójnych cudzysłowach w rzędzie innym niż wygląda brzydko
Carl Witthoft
1
@ CarlWitthoft, chyba że musisz zdiagnozować błąd pisania w długiej formule pełnej potrójnych i poczwórnych cudzysłowów. To jedna z dwóch rzeczy, które mogą cię oślepić. :-)
fixer1234
@ fixer1234 Prawda - lub 7-głębokie nawiasy
Carl Witthoft
Moja pełna formuła jest w rzeczywistości = CONCAT (CHAR (34), A4, „” ”:„ ””, D4, „” ”,„, ”), ponieważ tworzę ciąg JSON w kolumnie G z danych w kolumnie A i kolumna D. Czy poleciłbyś tę formułę? = CONCAT (CHAR (34), A4, CHAR (34), „:”, CHAR (34), D4, CHAR (34), „,”,) Chcę, aby wynik wyglądał tak: „welcome”: „ Bienvenue! ”,
Gabriel
Naprawdę, wybór należy do ciebie. Trudno mi uwierzyć, że wybory powodują znaczną zmianę prędkości, przynajmniej nie w przypadku korzystania z umiarkowanych ilości danych. Może jednak istnieć różnica, jeśli masz duże ilości danych. Chciałbym uzyskać dobrą czytelność - aby późniejszy przegląd (po około roku) był łatwiejszy; na przykład jeśli próbujesz zmienić.
Hannu
1

Nie jestem pewien, o co tu chodzi w zamieszaniu: być może próbowałeś zawrzeć wszystkie argumenty CONCAT z podwójnymi cudzysłowami? Łączysz kilka łańcuchów i każdy musi spełniać zasady Excela. Każdy ciąg musi być następnie oddzielony podwójnym cytatem na każdym końcu. Tak więc, w przypadku każdego ciągu, musisz napisać

"the_string" 

Jeśli twój ciąg zawiera podwójny cytat, ten podwójny cytat musi być „uciekł”, powtarzając go,

"the""string"   

Tak więc w każdym przypadku ciągu w konkatenacji postępuj zgodnie z tą regułą. Pomyśl o swoich pierwszych i ostatnich ciągach jako

$DELIMITER""$DELIMITER

Ponieważ wartość $ DELIMITER jest podwójnym cytatem, wygląda brzydko, ale jest zgodna z zasadami.

Carl Witthoft
źródło
Świetna odpowiedź Carl, to dla mnie doskonały sens!
Michthan