Spis treści
Istnieją trzy sposoby wyszukiwania i usuwania duplikatów w obrębie komórki w programie Excel. Wystarczy wybrać ten, który działa najlepiej dla Ciebie.
Jeśli chodzi o usuwanie zduplikowanych wartości lub wierszy, to Microsoft Excel oferuje szereg różnych opcji. Ale jeśli chodzi o usuwanie identycznego tekstu w obrębie danej komórki, to Excel nie oferuje... nic. Żadnych narzędzi, żadnych funkcji, żadnych formuł, nic. Czy przeszkodzi nam to w osiągnięciu naszego celu? W żadnym wypadku. Jeśli Excel nie ma funkcji, której potrzebujemy, to napiszmy własną :)
Jak usunąć powtarzające się słowa w komórce programu Excel
Problem : Masz w komórce te same słowa lub ciągi tekstowe i chciałbyś usunąć drugie i wszystkie kolejne powtórzenia.
Rozwiązanie : niestandardowa funkcja zdefiniowana przez użytkownika lub makro VBA.
Funkcja zdefiniowana przez użytkownika do usuwania duplikatów w obrębie komórki
Aby wyeliminować duplikaty tekstu w komórce, można użyć następującej funkcji zdefiniowanej przez użytkownika (UDF) o nazwie RemoveDupeWords :
Function RemoveDupeWords(text As String , Optional delimiter As String = " " ) As String Dim dictionary As Object Dim x, part Set dictionary = CreateObject ( "Scripting.Dictionary" ) dictionary.CompareMode = vbTextCompare For Each x In Split(text, delimiter) part = Trim(x) If part "" And Not dictionary.Exists(part) Then dictionary.Add part, Nothing End If Next If dictionary.Count> 0 Then.RemoveDupeWords = Join(dictionary.keys, delimiter) Else RemoveDupeWords = "" End If Set dictionary = Nothing End FunctionJak wstawić kod funkcji do swojego skoroszytu
Aby dodać powyższy kod do swojego Excela, oto co musisz zrobić:
- Naciśnij Alt + F11, aby otworzyć edytor Visual Basic.
- W lewym panelu kliknij prawym przyciskiem myszy ThisWorkbook i wybrać Wkładka > Moduł .
- Wklej powyższy kod do Kod okno.
Więcej informacji znajdziesz w rozdziale Jak wstawić kod VBA w programie Excel.
Składnia funkcji RemoveDupeWords
Nasza nowo utworzona funkcja do usuwania zduplikowanego tekstu w komórce ma następującą składnię:
RemoveDupeWords(text, [delimiter])Gdzie:
- Tekst (wymagane) - ciąg znaków lub komórka, z której chcemy usunąć powtarzający się tekst.
- Delimiter (opcjonalne) - ogranicznik, którym będzie oddzielony powtarzany tekst. Jeżeli jest pominięty, to ogranicznikiem jest spacja.
Funkcja to. niewrażliwy na wielkość liter , co oznacza, że małe i duże litery są traktowane jako te same znaki.
Jak używać funkcji RemoveDupeWords
Po dodaniu kodu funkcji do swojego skoroszytu możesz używać jej w swoich formułach w taki sam sposób, jak używasz wbudowanych funkcji Excela.
Po prostu zacznij wpisywać nazwę funkcji po znaku równości, a pojawi się ona w intellisense formuły. Kliknij dwukrotnie na funkcję, a będziesz miał ją wstawioną do komórki. Zdefiniuj argumenty, wpisz nawias zamykający, naciśnij Enter , a twoja formuła jest gotowa.
Na przykład, aby usunąć z A2 zduplikowane słowa oddzielone przecinkiem i spacją, wprowadź poniższą formułę w B2, a następnie przeciągnij ją w dół przez tyle komórek, ile potrzeba:
=RemoveDupeWords(A2, ", ")
W rezultacie otrzymasz listę unikalnych słów lub podciągów oddzielonych znakiem przecinek i spacja :
Jeśli wolisz otrzymać listę oddzieloną przecinkami, użyj tylko przecinek dla delimitera:
=RemoveDupeWords(A2, ",")
Jeśli dane źródłowe są oddzielone znakiem przestrzeń , drugi argument powinien być " " lub pominięty:
=RemoveDupeWords(A2)
Jak każda inna funkcja Excela, nasz UDF przelicza się automatycznie, gdy zmieniają się dane źródłowe, więc Twoje wyniki będą zawsze aktualne.
Makro VBA do usuwania zduplikowanego tekstu z wielu komórek jednocześnie
Jeśli chcesz usunąć powtarzający się tekst z wielu komórek za jednym razem, to możesz wywołać polecenie RemoveDupeWords W tym przypadku separator jest zakodowany na sztywno i będziesz musiał aktualizować kod makra za każdym razem, gdy zmieni się separator. Alternatywnie możesz napisać kilka wariantów kodu dla najpopularniejszych separatorów, np. spacji, przecinka lub przecinka i spacji, i nadać makrom sensowne nazwy, np. RemoveDupesDelimSpace .
Kod makra wygląda następująco:
Public Sub RemoveDupeWords2() Dim cell As Range For Each cell In Application.Selection cell.Value = RemoveDupeWords(cell.Value, ", " ) Next End SubW powyższym kodzie delimiterem jest znak przecinek i spacja Aby użyć innego delimitera, zastąp ", " innym znakiem(ami) w tej linii kodu:
cell.Value = RemoveDupeWords(cell.Value, ", ")
Uwaga. Aby makro działało, jego kod i kod funkcji RemoveDupeWords muszą być umieszczone w tym samym module.
Jak używać makra
Wstaw kod makra do własnego skoroszytu lub otwórz nasz przykładowy skoroszyt z kodem, a następnie wykonaj następujące czynności, aby uruchomić makro.
- Zaznacz zakres komórek, z których chcesz usunąć powtarzający się tekst.
- Naciśnij Alt + F8, aby otworzyć Makro okno dialogowe.
- Na liście makr wybierz RemoveDupeWords2 .
- Kliknij Uruchom .
Więcej szczegółów znajdziesz w rozdziale Jak uruchomić makro w programie Excel.
Uwaga. Ponieważ działanie makra nie można cofnąć Zalecamy zapisanie skoroszytu tuż przed użyciem makra. W ten sposób, jeśli coś pójdzie nie tak, można po prostu zamknąć i ponownie otworzyć skoroszyt, a następnie wrócić dokładnie do miejsca, w którym się znajdowałeś. Możesz też po prostu zrobić kopię arkusza (arkuszy), którego (których) makro może dotyczyć.
Jak usunąć zduplikowane znaki w komórce
Problem : Masz wiele wystąpień tego samego znaku w komórce, podczas gdy każda komórka powinna zawierać tylko jedno wystąpienie danego znaku.
Rozwiązanie : niestandardowa funkcja zdefiniowana przez użytkownika lub makro VBA.
Funkcja zdefiniowana przez użytkownika do usuwania powtarzających się znaków
Aby usunąć zduplikowane znaki w obrębie komórki z zachowaniem tylko pierwszych wystąpień, można użyć następującej funkcji zdefiniowanej przez użytkownika o nazwie RemoveDupeChars :
Function RemoveDupeChars(text As String ) As String Dim dictionary As Object Dim char As String Dim result As String Set dictionary = CreateObject ( "Scripting.Dictionary" ) For i = 1 To Len(text) char = Mid(text, i, 1) If Not dictionary.Exists(char) Then dictionary.Add char, Nothing result = result & char End If Next RemoveDupeChars = result Set dictionary = Nothing End FunctionAby wstawić kod funkcji do swojego skoroszytu, kroki są dokładnie takie same jak w poprzednim przykładzie.
Składnia funkcji RemoveDupeChars
Składnia tej niestandardowej funkcji jest tak prosta, jak to tylko możliwe - wymagany jest tylko jeden argument:
RemoveDupeChars(text)Gdzie tekst to ciąg lub komórka, z której chcesz usunąć zduplikowane znaki.
Funkcja to. rozróżnianie wielkości liter i traktuje małe i duże litery jako różne znaki.
Jak używać funkcji RemoveDupeChars
Wszystko co powiedzieliśmy o użyciu RemoveDupeWords jest prawdziwe dla RemoveDupeChars Zatem, nie zagłębiając się zbytnio w teorię, przejdźmy od razu do przykładu.
Aby usunąć zduplikowane znaki z kolumny A zaczynającej się w A2, wprowadź tę formułę w B2 i skopiuj ją w dół:
=RemoveDupeChars(A2)
Jak widać na poniższym obrazku, funkcja z powodzeniem obsługuje różne typy znaków, w tym litery, cyfry i symbole specjalne:
Wskazówka. Jeśli twoje postacie są oddzielone od siebie jakimś delimiter jak np. spacja, przecinek lub myślnik, to należy użyć RemoveDupeWords funkcja, jak pokazano w poprzednim przykładzie.
Makro VBA do usuwania takich samych znaków z komórki
Jak RemoveDupeWords , RemoveDupeChars Funkcja może być również wywołana z wnętrza makra:
Public Sub RemoveDupeChars2() Dim cell As Range For Each cell In Application.Selection cell.Value = RemoveDupeChars(cell.Value) Next End SubPonieważ ten FROM nie używa żadnego delimitera, nie będziesz musiał wprowadzać żadnych poprawek w kodzie.
Uwaga. Aby makro działało, jego kod i kod FROM RemoveDupeChars muszą być umieszczone w tym samym module w edytorze VBA.
Jak używać makra
Zakładając, że wstawiłeś już kod makra do swojego skoroszytu lub otworzyłeś nasz przykładowy skoroszyt zawierający kod, uruchom makro w ten sposób.
- Wybierz zakres komórek, z których chcesz usunąć powtarzające się znaki.
- Naciśnij Alt + F8, aby otworzyć Makro okno dialogowe.
- Na liście makr wybierz RemoveDupeChars2 .
- Kliknij Uruchom .
Usuń zduplikowane podłańcuchy za pomocą Ultimate Suite
Na początku tego poradnika wspomniano, że Microsoft Excel nie ma wbudowanej funkcji usuwania duplikatów w komórce. Ale nasz Ultimate Suite ma!
Można je znaleźć w. Usuwacz duplikatów menu rozwijane na Dane Ablebits zakładka, w Dedupe grupa. Jeśli Usuń zduplikowane podłańcuchy opcja nie pojawia się w Twoim Excelu, upewnij się, że masz zainstalowaną najnowszą wersję Ultimate Suite (darmową wersję próbną można pobrać tutaj).
Aby usunąć powtarzające się słowa lub tekst z wielu komórek w 5 sekund (sekunda na krok :), oto co musisz zrobić:
- Wybierz swoje dane źródłowe i uruchom Usuń zduplikowane podłańcuchy narzędzie.
- Określ. delimiter .
- Określenie, czy leczyć kolejne delimitery jako jeden (domyślnie).
- Wybierz, czy chcesz wykonać rozróżnianie wielkości liter lub bez rozróżniania wielkości liter wyszukiwanie.
- Kliknij Usuń .
Gotowe! Żadnej zabawy z VBA czy formułami, tylko szybkie i dokładne wyniki.
Aby dowiedzieć się więcej o tym wspaniałym dodatku, odwiedź jego stronę główną. Albo jeszcze lepiej, pobierz wersję ewaluacyjną poniżej i wypróbuj ją!
Oto jak usunąć zduplikowany tekst w komórce. Dziękuję za przeczytanie i mam nadzieję, że zobaczymy się na naszym blogu za tydzień!
Dostępne pliki do pobrania
Przykłady usuwania duplikatów w komórce (plik .xlsm)
Ultimate Suite 14-dniowa w pełni funkcjonalna wersja (plik .exe)