Spis treści
Samouczek wyjaśnia funkcje Excel REPLACE i SUBSTITUTE wraz z przykładami zastosowań. Zobacz jak używać funkcji REPLACE z ciągami tekstowymi, liczbami i datami oraz jak zagnieżdżać kilka funkcji REPLACE lub SUBSTITUTE w ramach jednej formuły.
W zeszłym tygodniu omówiliśmy różne sposoby korzystania z funkcji FIND i SEARCH w obrębie arkuszy Excela. Dziś przyjrzymy się głębiej dwóm innym funkcjom pozwalającym zastąpić tekst w komórce na podstawie jego lokalizacji lub zastąpić jeden ciąg tekstowy innym na podstawie treści. Jak zapewne się domyślasz, mówię o funkcjach Excel REPLACE i SUBSTITUTE.
Funkcja REPLACE w programie Excel
Funkcja REPLACE w Excelu umożliwia zamianę jednego lub kilku znaków w ciągu tekstowym na inny znak lub zestaw znaków.
REPLACE(stary_tekst, start_num, num_chars, nowy_tekst)Jak widzisz, funkcja REPLACE w Excelu ma 4 argumenty, z których wszystkie są wymagane.
- Stary_tekst - oryginalny tekst (lub odwołanie do komórki z oryginalnym tekstem), w którym chcesz zastąpić niektóre znaki.
- Start_num - pozycja pierwszego znaku w old_text, który chcesz zastąpić.
- Num_chars - liczba znaków, które chcesz zastąpić.
- Nowy_tekst - tekst zastępczy.
Na przykład, aby zmienić słowo " słońce " do " syn ", można skorzystać z następującego wzoru:
=REPLACE("sun", 2, 1, "o")
A jeśli umieścisz oryginalne słowo w jakiejś komórce, powiedzmy A2, możesz dostarczyć odpowiednie odniesienie do komórki w argumencie old_text:
=REPLACE(A2, 2, 1, "o")
Uwaga. Jeśli argument start_num lub num_chars jest ujemny lub nienumeryczny, formuła Excel Replace zwraca błąd #VALUE!
Używanie funkcji REPLACE programu Excel z wartościami numerycznymi
Funkcja REPLACE w Excelu została zaprojektowana do pracy z ciągami tekstowymi. Oczywiście możesz jej użyć np. do zastąpienia znaków numerycznych, które są częścią ciągu tekstowego:
=REPLACE(A2, 7, 4, "2016")
Zauważ, że zamykamy "2016" w podwójnym cudzysłowie, jak to zwykle robisz z wartościami tekstowymi.
W podobny sposób można zastąpić jedną lub więcej cyfr w obrębie liczby. Na przykład:
=REPLACE(A4, 4, 4, "6")
I znowu musisz zamknąć wartość zastępczą w podwójnych cudzysłowach ("6").
Uwaga. Formuła REPLACE w Excelu zawsze zwraca wartość ciąg tekstowy Na powyższym zrzucie ekranu zauważ lewe wyrównanie zwróconej wartości tekstowej w B2 i porównaj ją z wyrównaną do prawej oryginalną liczbą w A2. A ponieważ jest to wartość tekstowa, nie będziesz mógł jej użyć w innych obliczeniach, chyba że przekonwertujesz ją z powrotem na liczbę, na przykład przez pomnożenie przez 1 lub za pomocą innej metody opisanej w Jak przekonwertować tekst na liczbę.
Używanie funkcji REPLACE w Excelu z datami
Jak właśnie zauważyłeś, funkcja REPLACE działa dobrze z liczbami, z tym że zwraca ciąg tekstowy :) Pamiętając, że w wewnętrznym systemie Excela daty są przechowywane jako liczby, możesz próbować używać niektórych formuł Replace na datach. Wyniki byłyby dość kłopotliwe.
Na przykład, masz datę w A2, powiedzmy 1-Oct-14, i chcesz zmienić " Oct " do " Nov ". Piszesz więc formułę REPLACE(A2, 4, 3, "Nov"), która każe Excelowi zastąpić 3 znaki w komórkach A2 zaczynając od 4. znaku... i dostałeś następujący wynik:
Dlaczego tak jest? Ponieważ "01-Oct-14" jest tylko wizualną reprezentacją podstawowego numeru seryjnego (41913), który reprezentuje datę. Tak więc, nasza formuła Replace zmienia ostatnie 3 cyfry w powyższym numerze seryjnym na " Nov " i zwraca ciąg tekstowy "419Nov".
Aby funkcja REPLACE programu Excel poprawnie działała z datami, można najpierw przekonwertować daty na ciągi tekstowe za pomocą funkcji TEXT lub innej techniki przedstawionej w Jak przekonwertować datę na tekst w programie Excel. Alternatywnie można osadzić funkcję TEXT bezpośrednio w argumencie old_text funkcji REPLACE:
=REPLACE(TEXT(A2, "dd-mmm-yy"), 4, 3, "Nov")
Proszę pamiętać, że wynikiem powyższego wzoru jest. ciąg tekstowy Jeśli potrzebujesz dat, a nie ciągów tekstowych, użyj funkcji DATEVALUE, aby zamienić wartości zwrócone przez funkcję REPLACE w Excelu na daty:
=DATEVALUE(REPLACE(TEXT(A2, "dd-mmm-yy")), 4, 3, "Nov"))
Zagnieżdżone funkcje REPLACE do wykonywania wielu zamian w komórce
Często zdarza się, że trzeba wykonać więcej niż jedno zastąpienie w tej samej komórce. Oczywiście można wykonać jedno zastąpienie, wyprowadzić wynik pośredni do dodatkowej kolumny, a następnie ponownie użyć funkcji REPLACE. Jednak lepszym i bardziej profesjonalnym sposobem jest użycie zagnieżdżone funkcje REPLACE które pozwalają na wykonanie kilku zamian za pomocą jednej formuły. W tym kontekście "zagnieżdżanie" oznacza umieszczanie jednej funkcji w drugiej.
Rozważmy następujący przykład. Załóżmy, że masz listę numerów telefonów w kolumnie A sformatowaną jako "123456789" i chcesz, aby wyglądały one bardziej jak numery telefonów poprzez dodanie myślników. Innymi słowy, twoim celem jest przekształcenie "123456789" w "123-456-789".
Wstawienie pierwszego myślnika jest proste. Piszesz zwykłą formułę Excel Replace, która zastępuje zero znaków z myślnikiem, czyli dodaje myślnik na 4 pozycji w komórce:
=REPLACE(A2,4,0,"-")
Wynik powyższego wzoru Replace jest następujący:
No dobrze, a teraz musimy wstawić jeszcze jeden myślnik na pozycji 8. Aby to zrobić, umieszczasz powyższą formułę wewnątrz innej funkcji Excela REPLACE.Dokładniej, osadzasz ją w stary_tekst argument drugiej funkcji, tak aby druga funkcja REPLACE obsługiwała wartość zwróconą przez pierwszą REPLACE, a nie wartość w komórce A2:
=REPLACE(REPLACE(A2,4,0,"-"),8,0,"-")
W rezultacie otrzymujesz numery telefonów w pożądanym formatowaniu:
W podobny sposób można użyć zagnieżdżonych funkcji REPLACE, aby ciągi tekstowe wyglądały jak daty, dodając w odpowiednich miejscach ukośnik do przodu (/):
=(REPLACE(REPLACE(A2,3,0,"/"),6,0,"/"))
Ponadto można konwertować ciągi tekstowe na rzeczywiste daty, owijając powyższą formułę REPLACE funkcją DATEVALUE:
=DATEVALUE(REPLACE(REPLACE(A2,3,0,"/"),6,0,"/"))
I naturalnie nie jesteś ograniczony liczbą funkcji, które możesz zagnieździć w ramach jednej formuły (nowoczesne wersje Excela 2010, 2013 i 2016 pozwalają na użycie do 8192 znaków i do 64 zagnieżdżonych funkcji w formule).
Na przykład możesz użyć 3 zagnieżdżonych funkcji REPLACE, aby liczba w A2 pojawiła się jak data i czas:
=REPLACE(REPLACE(REPLACE(A2,3,0,"/") ,6,0,"/"), 9,0, " "), 12,0, ":")
Zastępowanie ciągu, który pojawia się w innej pozycji w każdej komórce
Do tej pory we wszystkich przykładach mieliśmy do czynienia z wartościami o podobnym charakterze i dokonywaliśmy zamian w tej samej pozycji w każdej komórce.Jednak zadania w prawdziwym życiu są często bardziej skomplikowane niż to.W Twoich arkuszach roboczych znaki do zastąpienia nie muszą występować w tym samym miejscu w każdej komórce, a zatem będziesz musiał znaleźć pozycję pierwszego znaku który powinien zostać zastąpiony. Poniższy przykład zademonstruje, o czym mówię.
Załóżmy, że masz listę adresów e-mail w kolumnie A. I nazwa jednej firmy zmieniła się z "ABC" na, powiedzmy, "BCA". Musisz więc odpowiednio zaktualizować adresy e-mail wszystkich klientów.
Problem polega jednak na tym, że nazwy klientów są różnej długości i dlatego nie możesz określić dokładnie miejsca, w którym zaczyna się nazwa firmy. Innymi słowy, nie wiesz, jaką wartość podać w argumencie start_num funkcji REPLACE Excela. Aby się tego dowiedzieć, użyj funkcji FIND Excela do określenia pozycji pierwszego znaku w ciągu "@abc":
=FIND("@abc",A2)
A następnie dostarcz powyższą funkcję FIND w argumencie start_num swojej formuły REPLACE:
=REPLACE(A2, FIND("@abc",A2), 4, "@bca")
Wskazówka. Włączamy "@" do naszej formuły Znajdź i zamień w Excelu, aby uniknąć przypadkowego zastąpienia części nazwy w adresach e-mail. Oczywiście istnieje bardzo mała szansa, że takie dopasowania będą miały miejsce, a mimo to możesz chcieć być po bezpiecznej stronie.
Jak widać na poniższym zrzucie ekranu, formuła nie ma problemu z odnalezieniem i zastąpieniem starego tekstu nowym. Jeśli jednak ciąg tekstowy, który ma zostać zastąpiony, nie zostanie znaleziony, formuła zwraca błąd #VALUE!
I chcemy, aby formuła zwróciła oryginalny adres e-mail zamiast błędu. Zatem obudźmy naszą formułę FIND & REPLACE w funkcji IFERROR:
=IFERROR(REPLACE(A2, FIND("@abc",A2), 4, "@bca"),A2)
I ta ulepszona formuła sprawdza się doskonale, prawda?
Innym praktycznym zastosowaniem funkcji REPLACE jest zmiana wielkości pierwszej litery w komórce. Gdy masz do czynienia z listą nazwisk, produktów i tym podobnych, możesz użyć powyższej formuły, aby zmienić pierwszą literę na UPPERCASE.
Wskazówka. Jeśli chcesz dokonać zamian w oryginalnych danych, łatwiejszym sposobem byłoby użycie okna dialogowego Excel FIND and REPLACE.
Funkcja SUBSTITUTE w programie Excel
Funkcja SUBSTITUTE w programie Excel zastępuje jeden lub więcej przypadków danego znaku lub ciągu tekstowego określonym znakiem (znakami).
Składnia funkcji SUBSTITUTE w Excelu jest następująca:
SUBSTITUTE(text, old_text, new_text, [instance_num])Pierwsze trzy argumenty są wymagane, a ostatni jest opcjonalny.
- Tekst - oryginalny tekst, w którym chcesz zastąpić znaki. Może być dostarczony jako ciąg testowy, odwołanie do komórki lub wynik innej formuły.
- Stary_tekst - znak(i), który(e) chcesz zastąpić.
- Nowy_tekst - nowy znak (znaki), którym należy zastąpić stary_tekst.
- Liczba instancji - wystąpienie starego tekstu, które chcesz zastąpić. Jeśli pominięto, każde wystąpienie starego tekstu zostanie zmienione na nowy tekst.
Na przykład wszystkie poniższe formuły zastępują "1" przez "2" w komórce A2, ale zwracają różne wyniki w zależności od tego, jaką liczbę podasz w ostatnim argumencie:
=SUBSTITUTE(A2, "1", "2", 1)
- Zastępuje pierwsze wystąpienie "1" przez "2".
=SUBSTITUTE(A2, "1", "2", 2)
- Zastępuje drugie wystąpienie "1" przez "2".
=SUBSTITUTE(A2, "1", "2")
- Zastępuje wszystkie wystąpienia "1" przez "2".
W praktyce funkcja SUBSTITUTE jest również wykorzystywana do usuwania niechcianych znaków z komórek. Przykłady z życia wzięte można znaleźć w:
- Jak usunąć znaki lub słowa z ciągu znaków
- Jak usunąć niechciane znaki z komórek
Uwaga. Funkcja SUBSTITUTE w Excelu to. rozróżnianie wielkości liter Na przykład poniższa formuła zastępuje wszystkie przypadki wielkiej litery "X" przez "Y" w komórce A2, ale nie zastąpi żadnych przypadków małej litery "x".
Zastąp wiele wartości jedną formułą (zagnieżdżone SUBSTITUTE)
Podobnie jak w przypadku funkcji REPLACE w Excelu, można zagnieździć kilka funkcji SUBSTITUTE w ramach jednej formuły, aby wykonać kilka podstawień jednocześnie, czyli zastąpić kilka znaków lub podciągów jedną formułą.
Załóżmy, że masz ciąg tekstowy taki jak " PR1, ML1, T1 " w komórce A2, gdzie "PR" oznacza "Projekt, "ML" - "Kamień milowy", a "T" - "Zadanie". To, czego chcesz, to zastąpienie trzech kodów pełnymi nazwami. Aby to osiągnąć, możesz napisać 3 różne formuły SUBSTITUTE:
=SUBSTITUTE(A2, "PR", "Projekt ")
=SUBSTITUTE(A2, "ML", "Kamień milowy ")
=SUBSTITUTE(A2, "T", "Zadanie ")
A potem zagnieździć je w sobie:
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2, "PR", "Project "), "ML", "Milestone "), "T", "Task ")
Zauważ, że dodaliśmy spację na końcu każdego argumentu new_text dla lepszej czytelności.
Aby poznać inne sposoby zastępowania wielu wartości jednocześnie, zobacz Jak wykonać masowe wyszukiwanie i zastępowanie w programie Excel.
Excel REPLACE a Excel SUBSTITUTE
Funkcje Excel REPLACE i SUBSTITUTE są bardzo podobne do siebie w tym sensie, że obie są przeznaczone do zamiany ciągów tekstowych. Różnice między tymi dwoma funkcjami są następujące:
- SUBSTITUTE zastępuje jeden lub więcej instancje danego znaku lub ciągu tekstowego. Jeśli więc znasz tekst, który ma być zastąpiony, użyj funkcji SUBSTITUTE w Excelu.
- REPLACE zmienia znaki w określonym stanowisko łańcucha tekstowego. Jeśli więc znasz pozycję znaku (znaków), który ma być zastąpiony, użyj funkcji REPLACE w Excelu.
- Funkcja SUBSTITUTE w Excelu umożliwia dodanie opcjonalnego parametru (instance_num), który określa, która wystąpienie starego_tekstu należy zmienić na nowy_tekst.
W ten sposób używasz funkcji SUBSTITUTE i REPLACE w Excelu. Mam nadzieję, że te przykłady okażą się przydatne w rozwiązywaniu Twoich zadań. Dziękuję za lekturę i mam nadzieję, że zobaczymy się na naszym blogu za tydzień!
Pobierz zeszyt ćwiczeń
Przykłady formuł REPLACE i SUBSTITUTE (plik .xlsx)