Выдаліце ​​прабелы і пустыя радкі ў Excel з дапамогай Regex

  • Падзяліцца Гэтым
Michael Brown

Жадаеце апрацоўваць прабелы найбольш эфектыўным спосабам? Выкарыстоўвайце рэгулярныя выразы, каб выдаліць усе прабелы ў ячэйцы, замяніць некалькі прабелаў адным сімвалам, скараціць прабелы толькі паміж лічбамі і многае іншае.

Якія б уводныя дадзеныя вы ні выкарыстоўвалі, вы наўрад ці сутыкнецеся з набор даных без прабелаў. У большасці выпадкаў прабел добры - вы выкарыстоўваеце яго для візуальнага падзелу розных частак інфармацыі, каб зрабіць яе лягчэй успрымаць. Аднак у некаторых сітуацыях гэта можа стаць злом - лішнія прабелы могуць сапсаваць вашыя формулы і зрабіць працоўныя аркушы амаль некіравальнымі.

    Перш чым мы паглыбімся ў дробязі выкарыстання рэгулярных выразаў для выдалення прабелаў у працоўных аркушах Excel, я хацеў бы задаць пытанне, якое ў першую чаргу прыходзіць на розум - навошта нам рэгулярныя выразы, калі ў Excel ужо ёсць TRIM

    Каб зразумець розніцу, давайце паглядзім, што лічыцца прабелам у кожным выпадку:

    • Убудаваная функцыя TRIM можа выдаляць толькі прабел які мае значэнне 32 у 7-бітнай сістэме ASCII.
    • Рэгулярныя выразы могуць ідэнтыфікаваць некалькі розных формаў прабелаў, такіх як прабел (), табуляцыя (\t), вяртанне карэткі (\r) і новы лінія (\n). Акрамя таго, існуе прабел (\s), які адпавядае ўсім гэтым тыпам і надзвычай карысны для ачысткі неапрацаванага ўводуданых.

    Дакладна ведаючы, што адбываецца за кулісамі, нашмат прасцей знайсці рашэнне, так?

    Як уключыць рэгулярныя выразы ў Excel

    Агульнавядомы факт, што Excel не падтрымлівае рэгулярныя выразы. Каб уключыць іх, вам трэба стварыць карыстальніцкую функцыю VBA. На шчасце, у нас ужо ёсць адзін пад назвай RegExpReplace . Пачакайце, навошта "замяняць", калі мы гаворым пра выдаленне? У мове Excel "выдаліць" - гэта проста іншае слова для "замяніць пустым радком" :)

    Каб дадаць функцыю ў ваш Excel, проста скапіруйце яе код з гэтай старонкі, устаўце яго ў рэдактар ​​VBA , і захавайце файл як рабочую кнігу з падтрымкай макрасаў (.xlsm).

    Вось сінтаксіс функцыі для даведкі:

    RegExpReplace(тэкст, шаблон, замена, [нумер_экземпляра] , [match_case])

    Першыя тры аргументы з'яўляюцца абавязковымі, апошнія два - неабавязковымі.

    Дзе:

    • Тэкст - зыходны радок для пошук у.
    • Шаблон - рэгулярны выраз для пошуку.
    • Замена - тэкст, якім трэба замяніць. Каб выдаліць прабелы , вы павінны ўсталяваць для гэтага аргумента:
      • пусты радок (""), каб выразаць абсалютна ўсе прабелы
      • прабел сімвал (" "), каб замяніць некалькі прабелаў адным прабелам
    • Нумар_экземпляра (неабавязкова) - нумар асобніка. У большасці выпадкаў вы прапусціце яго, каб замяніць усе асобнікі(па змаўчанні).
    • Match_case (неабавязкова) - лагічнае значэнне, якое паказвае, супадаць (TRUE) ці ігнараваць (FALSE) рэгістр тэксту. Для прабелаў ён не мае значэння і таму апускаецца.

    Для атрымання дадатковай інфармацыі глядзіце функцыю RegExpReplace.

    Як выдаліць прабелы з дапамогай рэгулярных выразаў - прыклады

    З дапамогай Функцыя RegExpReplace дададзена ў вашу кнігу, давайце разбярэмся з рознымі сцэнарыямі па чарзе.

    Выдаліце ​​ўсе прабелы з дапамогай рэгулярнага выразу

    Каб выдаліць усе прабелы ў радку, вы проста шукаеце любы прабел, у тым ліку прабел, табуляцыя, знак вяртання карэткі і перавод радка і замяніць іх пустым радком ("").

    Шаблон : \s+

    Замена : ""

    Калі выказаць здагадку, што зыходны радок знаходзіцца ў A5, формула ў B5:

    =RegExpReplace(A5, "\s+", "")

    Каб палегчыць кіраванне шаблонамі , вы можаце ўвесці рэгулярны выраз у прадвызначаную ячэйку і паставіць яго ў формулу, выкарыстоўваючы абсалютную спасылку, напрыклад $A$2, так што адрас ячэйкі застанецца нязменным пры капіраванні формулы ўніз па слупку.

    =RegExpReplace(A5, $A$2, "")

    Выдаліць больш за адзін прабел

    Каб выдаліць лішнія прабелы (г.зн. больш за n адзін прабел запар), выкарыстоўвайце той жа рэгулярны выраз \s+, але заменіце знойдзеныя супадзенні адным прабелам.

    Шаблон : \s+

    Замена : " "

    =RegExpReplace(A5, "\s+", " ")

    Звярніце ўвагу, што гэтая формула захоўвае адзін прабел не толькі паміжніжэй набору даных, выкажам здагадку, што вы жадаеце абрэзаць усе прабелы ў пачатку і ў канцы і ўсе прабелы паміж імі, акрамя аднаго, захаваўшы некалькі радкоў некранутымі. Каб выканаць задачу, вам спатрэбяцца дзве розныя функцыі RegExpReplace.

    Першая функцыя замяняе некалькі прабелаў адным прабелам.

    =RegExpReplace(A5, " +", " ")

    Другая выдаляе прабелы. ад пачатку і канца радка:

    =RegExpReplace(A5, "^ +| +$", "")

    Проста ўкладзіце дзве функцыі адну ў іншую:

    =RegExpReplace(RegExpReplace(A5, " +", " "), "^ +| +$", "")

    І вы атрымаеце ідэальны вынік:

    Рэгулярны выраз для замены некалькіх прабелаў адным сімвалам

    Калі вы хочаце выдаліць усе прабелы з радка і замяніць кожную групу прабелаў запар з пэўным сімвалам, гэта тое, што вам трэба зрабіць:

    Спачатку выкарыстайце гэты рэгулярны выраз, каб абрэзаць прабелы ў пачатку і ў канцы:

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

    Затым выканайце вышэйзгаданую функцыю да аргумента тэкст іншага RegExpReplace, які замяняе адзін або некалькі паслядоўных прабелаў сімвалам, які вы ўказваеце, напрыклад. злучок:

    Шаблон : \s+

    Замена : -

    Пры ўмове, што зыходны радок знаходзіцца ў A8, формула прымае наступную форму:

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

    Або вы можаце ўвесці ўзоры і замены ў асобных ячэйках, як паказана на скрыншоце:

    Regex каб выдаліць пустыя радкі

    Вось пытанне, якое часта задаюць карыстальнікі, якія маюць некалькі радкоў у адной ячэйцы: "У маіх ячэйках шмат пустых радкоў. Ці ёсць спосаб атрымацьпазбавіцца ад іх, акрамя прагляду кожнай ячэйкі і выдалення кожнага радка ўручную?" Адказ: гэта лёгка!

    Каб знайсці пустыя радкі, якія не маюць ніводнага сімвала ад пачатку ^ бягучага радка да наступны радок \n, рэгулярны выраз:

    Шаблон : ^\n

    Калі вашы візуальна пустыя радкі ўтрымліваюць прабелы або табуляцыі, выкарыстоўвайце гэты рэгулярны выраз:

    Шаблон : ^[\t ]*\n

    Проста заменіце рэгулярны выраз пустым радком з дапамогай гэтай формулы, і ўсе пустыя радкі адразу знікнуць!

    =RegExpReplace(A5, $A$2, "")

    Выдаленне прабелаў з дапамогай інструментаў рэгулярных выразаў

    Вышэйпрыведзеныя прыклады прадэманстравалі толькі невялікую частку цудоўных магчымасцей рэгулярных выразаў. На жаль, не ўсе асаблівасці класічных рэгулярных выразаў даступныя ў VBA.

    На шчасце, RegEx Tools, якія ўваходзяць у наш Ultimate Suite, не маюць гэтых абмежаванняў, паколькі яны апрацоўваюцца механізмам Microsoft .NET RegEx. Гэта дазваляе ствараць больш складаныя шаблоны, якія не падтрымліваюцца VBA RegExp w вы знойдзеце прыклад такога рэгулярнага выразу.

    Рэгулярны выраз для выдалення прабелаў паміж лічбамі

    У літарна-лічбавым радку выкажам здагадку, што вы хочаце выдаліць прабелы толькі паміж лічбамі, таму радок, такі як "A 1 2 B" становіцца "A 12 B".

    Каб знайсці прабел паміж любымі дзвюма лічбамі, вы можаце выкарыстоўваць наступны агляд:

    Шаблон : (?<=\d)\s+(?=\d)

    Каб стварыць формулу на асноведля прыведзеных вышэй рэгулярных выразаў, вось два простых кроку для выканання:

    1. На ўкладцы Ablebits Data у групе Text націсніце Regex Інструменты .

    2. На панэлі Інструменты рэгулярных выразаў выберыце зыходныя дадзеныя, увядзіце рэгулярны выраз, абярыце Выдаліць і націсніце Выдаліць .

      Каб атрымаць вынікі ў выглядзе формул, а не значэнняў, не забудзьце паставіць галачку ў полі Уставіць як формулу .

    Праз імгненне вы ўбачыце функцыю AblebitsRegexRemove , устаўленую ў новы слупок справа ад зыходных даных.

    Як варыянт, вы можаце ўвесці рэгулярны выраз у якую-небудзь ячэйку , скажам, A5, і ўстаўце формулу непасрэдна ў ячэйку з дапамогай дыялогавага акна Уставіць функцыю , дзе AblebitsRegexRemove аднесена да катэгорыі AblebitsUDFs .

    Паколькі гэтая функцыя спецыяльна распрацавана для выдалення радкоў, ёй патрэбны толькі два аргументы - радок уводу і рэгулярны выраз:

    =AblebitsRegexRemove(A5, $A$2)

    Вось як выдаліць прабелы ў Excel з выкарыстаннем рэгулярных выразаў. Я дзякую вам за чытанне і з нецярпеннем чакаю сустрэчы з вамі ў нашым блогу на наступным тыдні!

    Даступныя спампоўкі

    Выдаліце ​​прабелы з дапамогай рэгулярных выразаў - прыклады (файл .xlsm)

    Ultimate Suite - пробная версія (файл .exe)

    слоў, але і ў пачатку і ў канцы радка, што нядобра. Каб пазбавіцца ад прабелаў у пачатку і ў канцы, укладзіце прыведзеную вышэй формулу ў іншую функцыю RegExpReplace, якая выдаляе прабелы з пачатку і канца:

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

    Regex to выдаліць прабелы ў пачатку і ў канцы

    Каб шукаць прабелы ў пачатку або ў канцы радка, выкарыстоўвайце прывязкі пачатку ^ і канца $.

    Пачатак прабел:

    Шаблон : ^[\s]+

    Завяршальны прабел:

    Шаблон : [\s ]+$

    Пачатак і замыканне прабел:

    Шаблон : ^[\s]+

    Майкл Браўн - адданы энтузіяст тэхналогій, які любіць спрашчэнне складаных працэсаў з дапамогай праграмных інструментаў. Маючы больш чым дзесяцігадовы досвед працы ў індустрыі тэхналогій, ён удасканальваў свае навыкі ў Microsoft Excel і Outlook, а таксама ў Google Sheets і Docs. Блог Майкла прысвечаны таму, каб падзяліцца сваімі ведамі і вопытам з іншымі, даючы простыя ў выкананні парады і падручнікі для павышэння прадукцыйнасці і эфектыўнасці. Незалежна ад таго, з'яўляецеся вы дасведчаным прафесіяналам або пачаткоўцам, блог Майкла прапануе каштоўную інфармацыю і практычныя парады, каб атрымаць максімальную аддачу ад гэтых неабходных праграмных інструментаў.