Како филтрирати ћелије које садрже дупле текстуалне низове (речи) у себи

Један од мојих пријатеља ради у здравственој аналитичкој компанији. Често се повезује са мном о неким стварним проблемима са којима се суочава док ради са подацима у Екцелу.

Много пута претварам његове упите у Екцел водиче на овој веб локацији, јер би то могло бити од помоћи и мојим другим читаоцима.

Ово је такође један такав водич.

Прошле недеље ме је звао мој пријатељ са следећим проблемом:

Подаци о адреси се налазе у колони у Екцелу и желим да идентификујем/филтрирам ћелије у којима адреса садржи дупле текстуалне низове (речи).

Ево сличног скупа података у којем је желео да филтрира ћелије које имају дупли текстуални низ (оне са црвеним стрелицама):

Оно што ово отежава је то што нема доследности у овим подацима. Пошто је ово компилација скупа података који су ручно креирали продајни представници, могу доћи до варијација у скупу података.

Размотрити ово:

  • Било који текстуални низ се може поновити у овом скупу података. На пример, то може бити назив области или назив града или обоје.
  • Речи су раздвојене размаком и нема доследности у томе да ли би се назив града нашао после шест речи или осам речи.
  • Оваквих записа има на хиљаде, а потребно је филтрирати те записе у којима постоје дупли текстуални низови.

Након разматрања многих опција (као што су текст у колоне и формуле), коначно сам одлучио да употребим ВБА да бих то постигао.

Тако сам створио прилагођену ВБА функцију („ИдДуплицате“) за анализу ових ћелија и дај ми ТРУЕ ако постоји дуплирана реч у текстуалном низу, и ФАЛСЕ у случају да нема понављања (као што је приказано испод):

Ова прилагођена функција анализира сваку реч у текстуалном низу и проверава колико се пута појављује у тексту. Ако је број већи од 1, враћа ТРУЕ; иначе враћа ФАЛСЕ.

Такође, креиран је да броји само речи веће од три знака.

Када добијем ТРУЕ/ФАЛСЕ податке, могу лако филтрирати све записе који су ТРУЕ.

Сада ћу вам показати како то учинити у Екцелу.

ВБА код за прилагођену функцију

Ово се постиже креирањем прилагођене функције у ВБА. Ова функција се тада може користити као било која друга функција радног листа у Екцелу.

Ево ВБА кода за то:

Функција ИдДуплицатес (рнг Ас Ранге) Ас Стринг Дим СтрингтоАнализе Ас Вариант Дим и Ас Интегер Дим ј Ас Интегер Цонст минВордЛен Ас Интегер = 4 СтрингтоАнализе = Сплит (УЦасе (рнг.Валуе), "") Фор и = УБоунд (СтрингтоАнализе) То 0 Корак -1 Ако је Лен (СтрингтоАнализе (и)) <минВордЛен Затим идите на СкипА за ј = 0 На и - 1 Ако је СтрингтоАнализе (ј) = СтрингтоАнализе (и) Затим ИдДуплицатес = "ТРУЕ" Иди на СкипБ Крај ако је следећи СкипА: Следећи и ИдДуплицатес = "ФАЛСЕ" СкипБ: Заврши функцију

Хвала Валтеру што је предложио бољи приступ овом коду!

Како се користи овај ВБА код

Сада када имате ВБА код, морате га поставити у позадину програма Екцел, тако да може радити као редовна функција радног листа.

Испод су кораци за постављање ВБА кода на позадину:

  1. Идите на картицу Девелопер.
  2. Кликните на Висуал Басиц (можете користити и тастерску пречицу АЛТ + Ф11)
  3. У задњем делу ВБ уређивача који се отвори кликните десним тастером миша на било који објект радне свеске.
  4. Идите на „Уметни“ и кликните на „Модул“. Ово ће уметнути објект модула за радну свеску.
  5. У прозору кода модула копирајте и залепите горе поменути ВБА код.

Када имате ВБА код на задњој страни, можете користити функцију - „ИдДуплицатес“ као и било коју другу редовну функцију радног листа.

Ова функција узима један једини аргумент, а то је референца ћелије ћелије у којој имате текст.

Резултат функције је ТРУЕ (ако у њој постоје дуплиране речи) или ФАЛСЕ (ако нема дупликата). Када добијете ову листу ТРУЕ/ФАЛСЕ, можете филтрирати оне са ТРУЕ да бисте добили све ћелије које садрже дуплиране текстуалне низове.

Напомена: Код сам створио само да бих узео у обзир оне речи које имају више од три знака. Ово осигурава да, ако у текстуалном низу постоје речи дужине 1, 2 или 3 знака (попут 12 А, К Г М или Л Д А), оне се занемарују при пребројавању дупликата. Ако желите, ово можете лако променити у коду.

Ова функција ће бити доступна само у радној свесци где сте копирали код у модулу. У случају да желите да ово буде доступно и у другим радним свескама, морате да копирате и залепите овај код у те радне свеске. Алтернативно, можете да креирате и додатак (омогућујући тако да ова функција буде доступна у свим радним свескама на вашем систему).

Такође, не заборавите да сачувате ову радну свеску у .клсм екстензији (пошто у њој има макро код).

Ви ће помоћи развој сајта, дељење страницу са пријатељима

wave wave wave wave wave