Преглед садржаја
Желите да рукујете празнинама на најефикаснији начин? Користите регуларне изразе да бисте уклонили све размаке у ћелији, заменили више размака једним знаком, смањили само размаке између бројева и још много тога.
Које год улазне податке користите, тешко да ћете наићи на скуп података без размака. У већини случајева, размак је добар – користите га да визуелно одвојите различите делове информација како бисте их лакше уочили. У неким ситуацијама, међутим, то може постати зао – додатни размаци могу покварити ваше формуле и учинити ваше радне листове готово неуправљивим.
Зашто користити регуларни израз да бисте смањили размаке у Екцел-у?
Пре него што уронимо у суштину коришћења регуларних израза за уклањање празнина у Екцел радним листовима, желео бих да се позабавим питањем које нам прво пада на памет – зашто су нам потребни регуларни изрази када Екцел већ има ТРИМ функција?
Да бисмо разумели разлику, хајде да видимо шта се у сваком случају сматра размаком:
- Уграђена функција ТРИМ може да одвоји само размак који има вредност 32 у 7-битном АСЦИИ систему.
- Регуларни изрази могу да идентификују неколико различитих облика размака, као што су размак ( ), таб (\т), повратак на црту (\р) и нови линија (\н). Поред тога, постоји размак (\с) који одговара свим овим типовима и који је изузетно користан за чишћење сировог уносаподаци.
Знајући тачно шта се дешава иза сцене, много је лакше пронаћи решење, зар не?
Како омогућити регуларне изразе у Екцел-у
Добро је позната чињеница да готови Екцел не подржава регуларне изразе. Да бисте их омогућили, потребно је да креирате прилагођену ВБА функцију. Срећом, већ имамо један, под називом РегЕкпРеплаце . Чекај, зашто "замена" док говоримо о уклањању? У Екцел језику, „уклони“ је само још једна реч за „замени са празним стрингом“ :)
Да бисте додали функцију у свој Екцел, само копирајте њен код са ове странице, налепите га у ВБА едитор , и сачувајте своју датотеку као радну свеску са омогућеним макроима (.клсм).
Ево синтаксе функције за вашу референцу:
РегЕкпРеплаце(текст, образац, замена, [број_инстанце] , [матцх_цасе])Прва три аргумента су обавезна, последња два су опциона.
Где:
- Текст - оригинални стринг за тражи у.
- Узорак - редовни израз за претрагу.
- Замена - текст за замену. Да бисте уклонили размаке , овај аргумент бисте поставили на:
- празан стринг ("") да бисте скратили апсолутно све размаке
- размак знак (" ") за замену више размака са једним знаком за размак
- Број_инстанце (опционо) - број инстанце. У већини случајева ћете га изоставити да бисте заменили све инстанце(подразумевано).
- Матцх_цасе (опционо) - Боолеан вредност која показује да ли се подудара (ТРУЕ) или игнорисати (ФАЛСЕ) велика и мала слова текста. За размак је небитан и стога је изостављен.
За више информација погледајте функцију РегЕкпРеплаце.
Како уклонити размак помоћу регуларног израза - примери
Са Функција РегЕкпРеплаце је додата у вашу радну свеску, хајде да се позабавимо различитим сценаријима један по један.
Уклоните све размаке користећи регек
Да бисте уклонили све размаке у низу, једноставно потражите било који знак размака, укључујући размак, табулатор, повратни знак и извод реда и замените их празним стрингом ("").
Образац : \с+
Замена : ""
Под претпоставком да је изворни низ у А5, формула у Б5 је:
=RegExpReplace(A5, "\s+", "")
Да би се олакшало управљање вашим обрасцима , можете да унесете регуларни израз у унапред дефинисану ћелију и да га унесете у формулу користећи апсолутну референцу као што је $А$2, тако да ће адреса ћелије остати непромењена када копирате формулу низ колону.
=RegExpReplace(A5, $A$2, "")
Уклоните више од једног размака
Да бисте уклонили додатни размак (тј. више од н један узастопни размак), користите исти регуларни израз \с+ али замените пронађена подударања са једним знаком за размак.
Образац : \с+
Замена : " "
=RegExpReplace(A5, "\s+", " ")
Обратите пажњу да ова формула задржава један размак не само измеђуиспод скупа података, претпоставимо да желите да исечете све почетне/завршне размаке и све осим једног између размака, задржавајући више редова нетакнутим. Да бисте испунили задатак, биће вам потребне две различите функције РегЕкпРеплаце.
Прва функција замењује више размака једним знаком за размак.
=RegExpReplace(A5, " +", " ")
Друга уклања размаке од почетка и краја реда:
=RegExpReplace(A5, "^ +| +$", "")
Само угнездите две функције једну у другу:
=RegExpReplace(RegExpReplace(A5, " +", " "), "^ +| +$", "")
И добићете савршен резултат:
Регек за замену више размака једним знаком
У случају да желите да уклоните све размаке из стринга и замените сваку групу узастопних размака са одређеним карактером, ово је оно што треба да урадите:
Прво, користите овај регуларни израз да скрате размаке на почетку и на крају:
=RegExpReplace(A8, "^[\s]+|[\s]+$", "")
Затим, послужите горњу функцију у аргумент тект другог РегЕкпРеплаце-а који замењује један или више узастопних размака са карактером који наведете, нпр. цртица:
Образац : \с+
Замена : -
Под претпоставком да је изворни низ у А8, формула поприма овај облик:
=RegExpReplace(RegExpReplace(A8, "^[\s]+|[\s]+$", ""), "\s+", "-")
Или можете да унесете обрасце и замене у засебне ћелије као што је приказано на снимку екрана:
Регек да уклоните празне редове
Ево питања које корисници који имају више редова у једној ћелији често постављају: „У мојим ћелијама има пуно празних редова. Постоји ли начин даослободити их се осим да пролазите кроз сваку ћелију и ручно бришете сваки ред?" Одговор: То је лако!
Упарити празне редове који немају ниједан знак од почетка ^ текућег реда до следећи ред \н, регуларни израз је:
Образац : ^\н
Ако ваши визуелно празни редови садрже размаке или табулаторе, користите овај регуларни израз:
Образац : ^[\т ]*\н
Само замените регуларни израз празним стрингом користећи ову формулу и сви празни редови ће нестати одједном!
=RegExpReplace(A5, $A$2, "")
Уклањање размака помоћу алата за регуларне изразе
Горе наведени примери су показали само мали део дивних могућности које пружају регуларни изрази. Нажалост, нису сви карактеристике класичних регуларних израза су доступне у ВБА.
Срећом, РегЕк алати укључени у наш Ултимате Суите немају ових ограничења пошто их обрађује Мицрософтов .НЕТ РегЕк механизам. Ово вам омогућава да конструишете софистицираније обрасце који ВБА РегЕкп не подржава Бело в наћи ћете пример таквог регуларног израза.
Регек за уклањање размака између бројева
У алфанумеричком низу, претпоставимо да желите да уклоните размаке само између бројева, тако да стринг као што је „А 1 2 Б“ постаје „А 12 Б“.
Да бисте ускладили размак између било које две цифре, можете да користите следеће прегледе:
Образац : (?&лт;=\д)\с+(?=\д)
Да бисте креирали формулу засновануна горњим регуларним изразима, ево два лака корака за извођење:
- На картици Аблебитс Дата , у групи Тект , кликните на Регек Тоолс .
- У окну Регек Тоолс изаберите изворне податке, унесите свој регуларни израз, изаберите Ремове опцију и притисните Уклони .
Да бисте добили резултате као формуле, а не вредности, не заборавите да ставите квачицу у поље за потврду Убаци као формулу .
За тренутак ћете видети функцију АблебитсРегекРемове уметнуту у нову колону десно од оригиналних података.
Алтернативно, можете да унесете регуларни израз у неку ћелију , рецимо А5, и уметните формулу директно у ћелију користећи Инсерт Фунцтион оквир за дијалог, где је АблебитсРегекРемове категорисан под АблебитсУДФс .
Како је ова функција специјално дизајнирана за уклањање стрингова, потребна су јој само два аргумента - улазни стринг и регек:
=AblebitsRegexRemove(A5, $A$2)
Тако се уклањају размаци у Екцел користећи регуларне изразе. Захваљујем вам на читању и радујем се што ћу вас видети на нашем блогу следеће недеље!
Доступна преузимања
Уклоните размак помоћу регуларног израза - примери (.клсм датотека)
Ултимате Суите - пробна верзија (.еке датотека)
речи али и на почетку и на крају низа, што није добро. Да бисте се решили водећих и завршних размака, угнездите горњу формулу у другу функцију РегЕкпРеплаце која уклања размаке од почетка и краја: =RegExpReplace(RegExpReplace(A5, "\s+", " "), "^[\s]+|[\s]+$", "")
Регек у уклоните водећи и завршни размак
Да бисте тражили размак на почетку или крају реда, користите сидра за почетак ^ и крај $.
Предводни размак:
Образац : ^[\с]+
Завршни размак:
Образац : [\с ]+$
Водећи и завршни размак:
Образац : ^[\с]+