Съдържание
Съществуват три начина за намиране и изтриване на дубликати в клетка в Excel. Просто изберете този, който работи най-добре за вас.
Когато става въпрос за премахване на дублиращи се стойности или редове, Microsoft Excel предлага множество различни възможности. Но когато става въпрос за премахване на идентичен текст в дадена клетка, Excel не предлага... нищо. Никакви инструменти, никакви функции, никакви формули, нищо. Ще ни попречи ли това да постигнем целта си? В никакъв случай. Ако Excel не разполага с функцията, от която се нуждаем, нека напишем своя собствена :)
Как да премахнете повтарящи се думи в клетка на Excel
Проблем : Имате едни и същи думи или текстови низове в клетка и искате да премахнете второто и всички следващи повторения.
Решение : потребителска функция, дефинирана от потребителя, или макрос VBA.
Дефинирана от потребителя функция за премахване на дубликати в клетка
За да премахнете дублирания текст в клетка, можете да използвате следната дефинирана от потребителя функция (UDF), наречена RemoveDupeWords :
Функция 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 ThenRemoveDupeWords = Join(dictionary.keys, delimiter) В противен случай RemoveDupeWords = "" End If Set dictionary = Nothing End FunctionКак да вмъкнете кода на функцията в работната си книга
За да добавите горния код в Excel, трябва да направите следното:
- Натиснете Alt + F11, за да отворите редактора на Visual Basic.
- В левия прозорец щракнете с десния бутон на мишката върху Тази работна книга и изберете Вмъкване на > Модул .
- Поставете горния код в Код прозорец.
За повече информация вижте Как да вмъкнем VBA код в Excel.
Синтаксис на функцията RemoveDupeWords
Новосъздадената ни функция за премахване на дублиран текст в клетка има следния синтаксис:
RemoveDupeWords(text, [delimiter])Къде:
- Текст (задължително) - низ или клетка, от която искате да изтриете повтарящ се текст.
- Разделител (незадължително) - разделителят, с който се разделя повтарящият се текст. Ако не се посочи, за разделител се използва интервал.
Функцията е не е чувствителен към големи и малки букви , което означава, че малките и големите букви се третират като едни и същи символи.
Как да използвате функцията RemoveDupeWords
След като кодът на функцията е добавен в работната книга, можете да я използвате във формулите си по същия начин, както използвате вградените функции на Excel.
Просто започнете да въвеждате името на функцията след знака за равенство и то ще се появи в интелисиенса на формулата. Щракнете два пъти върху функцията и тя ще бъде вмъкната в клетка. Определете аргументите, въведете затварящата скоба, натиснете Enter , и формулата ви е завършена.
Например, за да изтриете дублиращи се думи, разделени със запетая и интервал, от A2, въведете следната формула в B2 и след това я плъзнете надолу през толкова клетки, колкото е необходимо:
=RemoveDupeWords(A2, ", ")
В резултат на това ще получите списък с уникални думи или поднизове, разделени със знака запетая и интервал :
Ако предпочитате да получите списък, разделен със запетая, използвайте само запетая за разделител:
=RemoveDupeWords(A2, ",")
Ако изходните ви данни са разделени с пространство , вторият аргумент трябва да бъде " " или да се пропусне:
=RemoveDupeWords(A2)
Подобно на всяка друга функция на Excel, нашият UDF се преизчислява автоматично при промяна на изходните данни, така че резултатите ви винаги ще бъдат актуални.
Макрос на VBA за изтриване на дублиран текст от няколко клетки наведнъж
Ако искате да премахнете повтарящ се текст от няколко клетки наведнъж, можете да извикате RemoveDupeWords В този случай разделителят е твърдо кодиран и ще трябва да актуализирате кода на макроса всеки път, когато разделителят се промени. Като алтернатива можете да напишете няколко варианта на кода за най-често срещаните разделители, например интервал, запетая или запетая и интервал, и да дадете на макросите си смислени имена, напр. RemoveDupesDelimSpace .
Кодът на макроса е следният:
Public Sub RemoveDupeWords2() Dim cell As Range For Each cell In Application.Selection cell.Value = RemoveDupeWords(cell.Value, ", " ) Next End SubВ горния код разделителят е запетая и интервал За да използвате друг разделител, заменете ", " с друг символ(и) в този ред:
cell.Value = RemoveDupeWords(cell.Value, ", ")
Забележка: За да работи макросът, неговият код и кодът на функцията RemoveDupeWords трябва да бъдат поставени в един и същ модул.
Как се използва макросът
Поставете кода на макроса в собствената си работна книга или отворете нашата примерна работна книга с кода, след което изпълнете следните стъпки, за да стартирате макроса.
- Изберете диапазон от клетки, от които искате да премахнете повтарящия се текст.
- Натиснете Alt + F8, за да отворите Macro диалогов прозорец.
- В списъка с макроси изберете RemoveDupeWords2 .
- Кликнете върху Изпълнявайте .
За повече информация вижте Как да стартирате макрос в Excel.
Забележка. Тъй като действието на макроса не може да бъде върнат , силно препоръчваме да запазите работната си книга непосредствено преди използването на макроса. По този начин, ако нещо се обърка, можете просто да затворите и отворите работната книга и да се върнете точно там, където сте били. Или можете просто да направите копие на работния(те) лист(и), който(ито) може да бъде(ат) засегнат(и) от макроса.
Как да премахнете дублиращите се символи в клетка
Проблем : В една клетка има няколко срещания на един и същ символ, докато всяка клетка трябва да съдържа само едно срещане на даден символ.
Решение : потребителска функция, дефинирана от потребителя, или макрос VBA.
Дефинирана от потребителя функция за изтриване на повтарящи се символи
За да премахнете дублираните знаци в клетка, като запазите само първите срещания, можете да използвате следната дефинирана от потребителя функция, наречена RemoveDupeChars :
Функция 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 FunctionЗа да вмъкнете кода на функцията в работната си книга, стъпките са абсолютно същите като в предишния пример.
Синтаксис на функцията RemoveDupeChars
Синтаксисът на тази потребителска функция е възможно най-прост - изисква се само един аргумент:
RemoveDupeChars(текст)Къде: текст е низ или клетка, от която искате да премахнете дублиращите се символи.
Функцията е отчитане на малки и големи букви и третира малките и големите букви като различни символи.
Как да използвате функцията RemoveDupeChars
Всичко, което казахме за използването на RemoveDupeWords, е вярно и за RemoveDupeChars . И така, без да се задълбочаваме в теорията, нека преминем направо към един пример.
За да изтриете дублиращите се символи от колона А, започвайки от А2, въведете тази формула в B2 и я копирайте надолу:
=RemoveDupeChars(A2)
Както можете да видите на изображението по-долу, функцията успешно обработва различни типове символи, включително букви, цифри и специални символи:
Съвет. Ако героите ви са разделени един от друг с разделител като интервал, запетая или тире, използвайте RemoveDupeWords както е показано в предишния пример.
Макрос на VBA за премахване на едни и същи символи от клетка
Като RemoveDupeWords . RemoveDupeChars функцията може да бъде извикана и от макрос:
Public Sub RemoveDupeChars2() Dim cell As Range For Each cell In Application.Selection cell.Value = RemoveDupeChars(cell.Value) Next End SubТъй като този UDF не използва разделител, не се налага да правите никакви промени в кода.
Забележка. За да работи макросът, неговият код и кодът на RemoveDupeChars UDF трябва да бъдат поставени в един и същ модул в редактора VBA.
Как се използва макросът
Ако вече сте вмъкнали кода на макроса в работната си книга или сте отворили нашата примерна работна книга, съдържаща кода, стартирайте макроса по този начин.
- Изберете диапазон от клетки, от които искате да премахнете повтарящи се символи.
- Натиснете Alt + F8, за да отворите Macro диалогов прозорец.
- В списъка с макроси изберете RemoveDupeChars2 .
- Кликнете върху Изпълнявайте .
Премахване на дублиращи се поднизове с Ultimate Suite
В началото на този урок беше споменато, че Microsoft Excel не разполага с вградена функция за премахване на дубликати в клетка. Но нашият Ultimate Suite разполага с такава!
Можете да го намерите в Премахване на дубликати в падащото меню на Данни от Ablebits в раздела Dedupe група. Ако Премахване на дублиращи се поднизове не се появява във вашия Excel, уверете се, че имате инсталирана най-новата версия на Ultimate Suite (безплатна пробна версия може да бъде изтеглена от тук).
За да премахнете повтарящи се думи или текст от няколко клетки за 5 секунди (по една секунда на стъпка :), трябва да направите следното:
- Изберете изходните си данни и стартирайте Премахване на дублиращи се поднизове инструмент.
- Посочете разделител .
- Определете дали да лекувате последователни разделители като единица (по подразбиране).
- Изберете дали да извършите отчитане на малки и големи букви или без значение на размера на буквите търсене.
- Кликнете върху Премахване на .
Готово! Без да се занимавате с VBA или формули, само с бързи и точни резултати.
За да научите повече за тази страхотна добавка, посетете началната ѝ страница. Или още по-добре, изтеглете версията за оценка по-долу и я изпробвайте!
Ето как да премахнете дублиран текст в клетка. Благодаря ви, че прочетохте, и се надявам да се видим в нашия блог следващата седмица!
Налични изтегляния
Примери за премахване на дубликати в клетка (.xlsm файл)
Ultimate Suite 14-дневна напълно функционална версия (.exe файл)