Змест
Жадаеце апрацоўваць прабелы найбольш эфектыўным спосабам? Выкарыстоўвайце рэгулярныя выразы, каб выдаліць усе прабелы ў ячэйцы, замяніць некалькі прабелаў адным сімвалам, скараціць прабелы толькі паміж лічбамі і многае іншае.
Якія б уводныя дадзеныя вы ні выкарыстоўвалі, вы наўрад ці сутыкнецеся з набор даных без прабелаў. У большасці выпадкаў прабел добры - вы выкарыстоўваеце яго для візуальнага падзелу розных частак інфармацыі, каб зрабіць яе лягчэй успрымаць. Аднак у некаторых сітуацыях гэта можа стаць злом - лішнія прабелы могуць сапсаваць вашыя формулы і зрабіць працоўныя аркушы амаль некіравальнымі.
Навошта выкарыстоўваць рэгулярныя выразы для выдалення прабелаў у Excel?
Перш чым мы паглыбімся ў дробязі выкарыстання рэгулярных выразаў для выдалення прабелаў у працоўных аркушах 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)
Каб стварыць формулу на асноведля прыведзеных вышэй рэгулярных выразаў, вось два простых кроку для выканання:
- На ўкладцы Ablebits Data у групе Text націсніце Regex Інструменты .
- На панэлі Інструменты рэгулярных выразаў выберыце зыходныя дадзеныя, увядзіце рэгулярны выраз, абярыце Выдаліць і націсніце Выдаліць .
Каб атрымаць вынікі ў выглядзе формул, а не значэнняў, не забудзьце паставіць галачку ў полі Уставіць як формулу .
Праз імгненне вы ўбачыце функцыю 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]+