Уклоните размаке и празне редове у Екцел-у користећи Регек

  • Деле Ово
Michael Brown

Желите да рукујете празнинама на најефикаснији начин? Користите регуларне изразе да бисте уклонили све размаке у ћелији, заменили више размака једним знаком, смањили само размаке између бројева и још много тога.

Које год улазне податке користите, тешко да ћете наићи на скуп података без размака. У већини случајева, размак је добар – користите га да визуелно одвојите различите делове информација како бисте их лакше уочили. У неким ситуацијама, међутим, то може постати зао – додатни размаци могу покварити ваше формуле и учинити ваше радне листове готово неуправљивим.

    Зашто користити регуларни израз да бисте смањили размаке у Екцел-у?

    Пре него што уронимо у суштину коришћења регуларних израза за уклањање празнина у Екцел радним листовима, желео бих да се позабавим питањем које нам прво пада на памет – зашто су нам потребни регуларни изрази када Екцел већ има ТРИМ функција?

    Да бисмо разумели разлику, хајде да видимо шта се у сваком случају сматра размаком:

    • Уграђена функција ТРИМ може да одвоји само размак који има вредност 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 Б“.

    Да бисте ускладили размак између било које две цифре, можете да користите следеће прегледе:

    Образац : (?&лт;=\д)\с+(?=\д)

    Да бисте креирали формулу засновануна горњим регуларним изразима, ево два лака корака за извођење:

    1. На картици Аблебитс Дата , у групи Тект , кликните на Регек Тоолс .

    2. У окну Регек Тоолс изаберите изворне податке, унесите свој регуларни израз, изаберите Ремове опцију и притисните Уклони .

      Да бисте добили резултате као формуле, а не вредности, не заборавите да ставите квачицу у поље за потврду Убаци као формулу .

    За тренутак ћете видети функцију АблебитсРегекРемове уметнуту у нову колону десно од оригиналних података.

    Алтернативно, можете да унесете регуларни израз у неку ћелију , рецимо А5, и уметните формулу директно у ћелију користећи Инсерт Фунцтион оквир за дијалог, где је АблебитсРегекРемове категорисан под АблебитсУДФс .

    Како је ова функција специјално дизајнирана за уклањање стрингова, потребна су јој само два аргумента - улазни стринг и регек:

    =AblebitsRegexRemove(A5, $A$2)

    Тако се уклањају размаци у Екцел користећи регуларне изразе. Захваљујем вам на читању и радујем се што ћу вас видети на нашем блогу следеће недеље!

    Доступна преузимања

    Уклоните размак помоћу регуларног израза - примери (.клсм датотека)

    Ултимате Суите - пробна верзија (.еке датотека)

    речи али и на почетку и на крају низа, што није добро. Да бисте се решили водећих и завршних размака, угнездите горњу формулу у другу функцију РегЕкпРеплаце која уклања размаке од почетка и краја:

    =RegExpReplace(RegExpReplace(A5, "\s+", " "), "^[\s]+|[\s]+$", "")

    Регек у уклоните водећи и завршни размак

    Да бисте тражили размак на почетку или крају реда, користите сидра за почетак ^ и крај $.

    Предводни размак:

    Образац : ^[\с]+

    Завршни размак:

    Образац : [\с ]+$

    Водећи и завршни размак:

    Образац : ^[\с]+

    Мајкл Браун је посвећен технолошки ентузијаста са страшћу за поједностављење сложених процеса помоћу софтверских алата. Са више од деценије искуства у технолошкој индустрији, усавршио је своје вештине у Мицрософт Екцел-у и Оутлоок-у, као и у Гоогле табеле и документима. Мајклов блог посвећен је дељењу свог знања и стручности са другима, пружајући једноставне савете и упутства за побољшање продуктивности и ефикасности. Без обзира да ли сте искусан професионалац или почетник, Мајклов блог нуди вредне увиде и практичне савете како да на најбољи начин искористите ове основне софтверске алате.