Преглед садржаја
Водич показује како да истакнете дупликате речи или текстуалне низове у ћелији користећи ВБА.
Екцел условно форматирање омогућава истицање дупликата на сваки могући начин који вам падне на памет: са или без 1. појављивања, у једној колони или више колона, узастопних дупликата ћелија и целих редова на основу идентичних вредности у кључној колони. Али, као и обично, постоји "али". Правила условног обликовања функционишу на нивоу ћелије, док ћете можда желети да истакнете дуплирани текст уместо целе ћелије. Ово се може урадити само помоћу макроа. Чак и ако немате искуства са ВБА, немојте журити да затворите ову страницу. Овде ћете наћи примере кодова спремне за употребу и детаљна упутства о томе како да их користите у својим радним листовима.
Означите дупле речи у ћелији игноришући велика и мала слова
Овај пример показује како да засенчите дуплиране речи или текстуалне низове унутар ћелије црвеном бојом фонта као што је приказано на слици испод. Имајте на уму да се мала и велика слова третирају као исти знакови. На пример, оранге , ОРАНГЕ и Оранге се сматрају истом речју.
Тхе код макроа је следећи:
Публиц Суб ХигхлигхтДупесЦасеИнсенситиве() Затамњена ћелија као опсег Затамњена граничник као стринг Делимитер = ИнпутБок( "Унесите граничник који раздваја вредности у ћелији" , "Делимитер" , ", " ) За сваку ћелију уАпплицатион.Селецтион Цалл ХигхлигхтДупеВордсИнЦелл(Целл, Делимитер, Фалсе ) Нект Енд Суб Суб ХигхлигхтДупеВордсИнЦелл(Целл Ас Ранге, Оптионал Делимитер Ас Стринг = " " , Опционо Осетљив на велика и мала слова као Боолеан = Труе ) Затамњен текст Као Стринг Дим речи () Стринг Дим вордИндек, матцхЦоунт, поситионИнТект Као цео број Ако је осетљив на велика и мала слова Тада су речи = Сплит(Целл.Валуе, Делимитер) Остале речи = Сплит(ЛЦасе(Целл.Валуе), Делимитер) Енд Иф Фор вордИндек = ЛБоунд (речи) То УБоунд (речи) - 1 ворд = вордс(вордИндек) матцхЦоунт = 0 Фор нектВордИндек = вордИндек + 1 То УБоунд (вордс) Иф ворд = вордс(нектВордИндек) Тхен матцхЦоунт = матцхЦоунт + 1 Енд Иф Нект нектВордИндек Иф матцхЦоунт &гт; 0 Затим тект = "" За индекс = ЛБоунд (речи) До УБоунд (речи) тект = тект &амп; речи(Индекс) Ако (речи(Индекс) = реч) Онда Ћелија.Знакови(Лен(текст) - Лен(реч) + 1, Лен(реч)).Фонт.Боја = вбРед Крај Ако је текст = текст &амп; Разграничење Следећи крај Иф Нект вордИндек Енд СубОзначите дупликат текста у ћелији осетљив на велика и мала слова
У већини ситуација имамо тенденцију да игноришемо велика слова када радимо са уносима текста у Екцел-у. Под одређеним околностима, међутим, случај текста је важан. На пример, ако имате посла са ИД-овима, лозинкама или другим записима те врсте, стрингови као што су 1-АА , 1-аа и 1-Аа нису дупликати и не би требало да буду истакнути:
У овом случају,користите следећу верзију кода:
Публиц Суб ХигхлигхтДупесЦасеСенситиве() Дим Целл Ас Ранге Дим Делимитер Ас Стринг Делимитер = ИнпутБок( "Унесите граничник који раздваја вредности у ћелији" , "Делимитер" , ", " ) За сваку Целл Ин Апплицатион.Селецтион Цалл ХигхлигхтДупеВордсИнЦелл(Целл, Делимитер, Труе ) Нект Енд Суб Суб ХигхлигхтДупеВордсИнЦелл(Целл Ас Ранге, Оптионал Делимитер Ас Стринг = " " , Оптионал ЦасеСенситиве Ас Боолеан = Труе ) Затамњен текст () Као Стринг Дим речи ворд Ас Стринг Дим вордИндек, матцхЦоунт, поситионИнТект Као цео број Ако је осетљив на велика и мала слова Тада речи = Сплит(Целл.Валуе, Делимитер) Остале речи = Сплит(ЛЦасе(Целл.Валуе), Делимитер) Енд Иф Фор вордИндек = ЛБоунд (речи) То УБоунд ( речи) - 1 реч = речи(индекс речи) матцхЦоунт = 0 За следећи индекс речи = индекс речи + 1 до УБоунд (речи) Ако је реч = речи(нектВордИндек) Онда матцхЦоунт = матцхЦоунт + 1 Енд Ако следећи следећи индекс речи Ако матцхЦоунт &гт; 0 Затим тект = "" За индекс = ЛБоунд (речи) До УБоунд (речи) тект = тект &амп; речи(Индекс) Ако (речи(Индекс) = реч) Онда Ћелија.Знакови(Лен(текст) - Лен(реч) + 1, Лен(реч)).Фонт.Боја = вбРед Крај Ако је текст = текст &амп; Разграничење Нект Енд Иф Нект вордИндек Енд СубКако користити макрое за истицање дупликата речи у Екцел-у
Ако сте почетник у коришћењу ВБА, следећа упутства корак по корак ће вас удобно провести кроз . Искусни корисници могусамо изаберите везу за преузимање и прескочите остатак :)
Додајте код у своју радну свеску
Почињете са уметањем кода макроа у вашу Екцел радну свеску. Ево како:
- Отворите радну свеску у којој желите да истакнете преваре.
- Притисните Алт + Ф11 да бисте отворили Висуал Басиц Едитор.
- У левом окну, кликните десним тастером миша на Ова радна свеска и изаберите Инсерт &гт; Модуле из контекстног менија.
- Налепите код у прозор кода.
- Да бисте сачували макро за будућу употребу, обавезно сачувајте своју радну свеску као .клсм датотеку са омогућеним макроима.
Алтернативно, можете да преузмете наш пример радне свеске и одатле покренете макро. Пример радне свеске садржи следеће макрое:
- ХигхлигхтДупесЦасеИнсенситиве - сенчи дупликате унутар ћелије игноришући велика слова.
- ХигхлигхтДупесЦасеСенситиве - истицање дупес у ћелији узимајући у обзир велика и мала слова.
За више информација, погледајте Како да уметнете ВБА код у Екцел.
Покрените макро
Са кодом додат у вашу сопствену радну свеску или наш пример датотеке преузете и отворене, покрените макро на овај начин:
- У свом радном листу изаберите ћелије у којима желите да истакнете дупликат текста. Ово може бити један опсег или више несуседних опсега.
- Притисните Алт + Ф8 .
- Изаберите макро који вас занима и кликните на Покрени .
- Макро ће од вас тражити да наведете граничниккоји раздваја вредности у изабраним ћелијама. Унапред подешени граничник (зарез и размак у нашем случају) ће се аутоматски појавити у пољу за унос. У зависности од ваших потреба, можете да оставите подразумевани граничник или унесете други, а затим да кликнете на ОК.
Тренутак касније, сви дуплирани стрингови у изабраном ћелије ће бити осенчене црвеном бојом (или било којом другом бојом фонта која је подешена у вашем коду).
Савет. Да бисте брзо уклонили дупликате унутар ћелије, можете да користите Ремове Дуплицате Субстрингс, једну од многих алатки за уштеду времена укључених у наш Ултимате Суите.
Како да прилагодите код својим потребама
Са овим напоменама о употреби и врло основним знањем о ВБА (или само пажљиво пратећи упутства у наставку), можете лако да модификујете кодове у складу са вашим потребама.
Поставите на исти модул
Као што можете приметити, оба макроа ( ХигхлигхтДупесЦасеСенситиве и ХигхлигхтДупесЦасеИнсенситиве ) позивају функцију ХигхлигхтДупеВордсИнЦелл . Разлика између ова два макроа је само у 3. параметру (ЦасеСенситиве) који је прослеђен поменутој функцији.
За претрагу осетљиву на велика и мала слова, подешено је на ТРУЕ:
Call HighlightDupeWordsInCell(Cell, Delimiter, True)
За претрагу без обзира на велика и мала слова, постављено је на ФАЛСЕ:
Call HighlightDupeWordsInCell(Cell, Delimiter, False)
Да би макрои радили, код функције ХигхлигхтДупеВордсИнЦелл мора бити постављен на исти модул као имакрои.
Разгранич
Када се покрене, макро ће од вас тражити да наведете граничник који раздваја речи/стрингове у изабраним ћелијама. Подразумевани граничник је зарез и размак (", ") и унапред је постављен у ИнпутБок-у:
Delimiter = InputBox("Specify the delimiter that separates values in a cell", "Delimiter", ", ")
У вашем коду можете слободно да користите било који други карактер(е) као унапред дефинисани граничник.
Боја
Подразумевано, функција ХигхлигхтДупеВордсИнЦелл нијансира дупликате црвеном бојом фонта. Боја је дефинисана у овом реду:
Cell.Characters(positionInText, Len(word)).Font.Color = vbRed
Овде, вбРед је врста ВБА константе боје. Да бисте приказали преваре у другој боји, можете заменити вбРед са другом константом као што је вбГреен, вбИеллов, вбБлуе, итд. Т листу подржаних константи боја можете пронаћи овде.
То је како истаћи дупликате речи у Екцел ћелијама. Захваљујем вам на читању и надам се да се видимо на нашем блогу следеће недеље!
Доступна преузимања
Примери кода за истицање дупликата у ћелији (.клсм датотека)
Ултимате Комплетна 14-дневна потпуно функционална верзија (.еке датотека)