Alisin ang mga whitespace at walang laman na linya sa Excel gamit ang Regex

  • Ibahagi Ito
Michael Brown

Nais na pangasiwaan ang mga whitespace sa pinakamabisang paraan? Gumamit ng mga regular na expression upang alisin ang lahat ng mga puwang sa isang cell, palitan ang maramihang mga puwang ng isang character, i-trim ang mga puwang sa pagitan ng mga numero lamang, at higit pa.

Alinmang input data ang iyong ginagamit, halos hindi ka makakatagpo ng isang dataset na walang mga puwang. Sa karamihan ng mga kaso, maganda ang whitespace - ginagamit mo ito upang biswal na paghiwalayin ang iba't ibang piraso ng impormasyon para mas madaling makita. Sa ilang sitwasyon, gayunpaman, maaari itong maging masama - maaaring guluhin ng mga sobrang espasyo ang iyong mga formula at gawing halos hindi mapangasiwaan ang iyong mga worksheet.

    Bakit gagamit ng regular na expression upang i-trim ang mga whitespace sa Excel?

    Bago tayo sumisid sa napakagandang paggamit ng mga regular na expression para mag-alis ng mga whitespace sa Excel worksheet, gusto kong tugunan ang tanong na pumasok sa isip sa unang lugar - bakit kailangan natin ng mga regex kung mayroon nang TRIM ang Excel function?

    Upang maunawaan ang pagkakaiba, tingnan natin kung ano ang itinuturing na whitespace sa bawat kaso:

    • Maaari lang alisin ng built-in na TRIM function ang space character na may value na 32 sa 7-bit na ASCII system.
    • Maaaring makilala ng mga regular na expression ang ilang iba't ibang anyo ng whitespace gaya ng space ( ), tab (\t), carriage return (\r), at bago linya (\n). Bukod pa rito, mayroong whitespace character (\s) na tumutugma sa lahat ng mga uri na ito at lubos na nakakatulong para sa paglilinis ng raw inputdata.

    Kapag alam kung ano mismo ang nangyayari sa likod ng mga eksena, mas madaling gumawa ng solusyon, di ba?

    Paano i-enable ang mga regular na expression sa Excel

    Ito ay isang kilalang katotohanan na ang out-of-the-box na Excel ay hindi sumusuporta sa mga regular na expression. Upang paganahin ang mga ito, kailangan mong lumikha ng isang pasadyang VBA function. Sa kabutihang palad, mayroon na kaming isa, na pinangalanang RegExpReplace . Teka, bakit "palitan" habang pinag-uusapan natin ang tungkol sa pag-alis? Sa wikang Excel, ang "remove" ay isa lamang salita para sa "replace with an empty string" :)

    Upang idagdag ang function sa iyong Excel, kopyahin lang ang code nito mula sa page na ito, i-paste ito sa VBA editor , at i-save ang iyong file bilang isang macro-enabled na workbook (.xlsm).

    Narito ang syntax ng function para sa iyong sanggunian:

    RegExpReplace(text, pattern, replacement, [instance_num] , [match_case])

    Ang unang tatlong argumento ay kinakailangan, ang huling dalawa ay opsyonal.

    Saan:

    • Text - ang orihinal na string sa maghanap.
    • Pattern - ang regex na hahanapin.
    • Palitan - ang text na papalitan. Upang alisin mga whitespace , itatakda mo ang argument na ito sa alinman sa:
      • walang laman na string ("") upang ganap na putulin ang lahat ng mga puwang
      • space character (" ") para palitan ang maramihang mga space ng isang space character
    • Instance_num (opsyonal) - ang numero ng halimbawa. Sa karamihan ng mga kaso, aalisin mo ito upang palitan ang lahat ng mga pagkakataon(default).
    • Match_case (opsyonal) - isang Boolean value na nagsasaad kung tutugma (TRUE) o balewalain (FALSE) text case. Para sa whitespace, ito ay walang kaugnayan at samakatuwid ay tinanggal.

    Para sa higit pang impormasyon, pakitingnan ang RegExpReplace function.

    Paano mag-alis ng whitespace gamit ang regex - mga halimbawa

    Gamit ang RegExpReplace function na idinagdag sa iyong workbook, talakayin natin ang iba't ibang mga sitwasyon nang paisa-isa.

    Alisin ang lahat ng mga whitespace gamit ang regex

    Upang alisin ang lahat ng mga puwang sa isang string, maghanap ka lang ng anumang whitespace na character, kasama ang isang space, isang tab, isang carriage return, at isang line feed, at palitan ang mga ito ng isang walang laman na string ("").

    Pattern : \s+

    Palitan : ""

    Ipagpalagay na ang source string ay nasa A5, ang formula sa B5 ay:

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

    Upang gawing mas madaling pamahalaan ang iyong mga pattern , maaari mong ipasok ang regex sa isang paunang natukoy na cell at ibigay ito sa formula gamit ang isang ganap na sanggunian tulad ng $A$2, kaya ang cell address ay mananatiling hindi nagbabago kapag kinokopya ang formula sa column.

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

    Mag-alis ng higit sa isang whitespace

    Upang alisin ang dagdag na whitespace (ibig sabihin, higit pa sa n isang magkakasunod na espasyo), gumamit ng parehong regex \s+ ngunit palitan ang mga nakitang tugma ng isang character na espasyo.

    Pattern : \s+

    Palitan : " "

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

    Pakipansin na ang formula na ito ay nagpapanatili ng isang character na espasyo hindi lamang sa pagitansa ibaba ng dataset, ipagpalagay na gusto mong i-trim ang lahat ng nangunguna/trailing na espasyo at lahat maliban sa isang nasa pagitan ng mga puwang, na pinananatiling buo ang maraming linya. Upang matupad ang gawain, kakailanganin mo ng dalawang magkaibang RegExpReplace function.

    Pinapalitan ng unang function ang maraming espasyo ng isang character na espasyo.

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

    Ang isa naman ay nag-strip ng mga puwang. mula sa simula at dulo ng isang linya:

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

    I-nest lang ang dalawang function sa isa't isa:

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

    At makakakuha ka ng perpektong resulta:

    Regex upang palitan ang maramihang mga puwang ng isang character

    Kung sakaling gusto mong alisin ang lahat ng mga puwang mula sa isang string at palitan ang bawat pangkat ng magkakasunod na mga puwang na may partikular na karakter, ito ang kailangan mong gawin:

    Una, gamitin ang regex na ito para i-trim ang mga nangunguna at sumusunod na mga whitespace:

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

    Pagkatapos, ihatid ang function sa itaas sa text argument ng isa pang RegExpReplace na pumapalit sa isa o higit pang magkakasunod na whitespace ng character na iyong tinukoy, hal. isang gitling:

    Pattern : \s+

    Palitan : -

    Ipagpalagay na ang source string ay nasa A8, ang formula ganito ang hugis:

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

    O maaari mong ilagay ang mga pattern at kapalit sa magkahiwalay na mga cell tulad ng ipinapakita sa screenshot:

    Regex upang alisin ang mga walang laman na linya

    Narito ang isang tanong na madalas itanong ng mga user na mayroong maraming linya sa isang cell: "Maraming blangko ang mga linya sa aking mga cell. Mayroon bang anumang paraan upang makuhaalisin ang mga ito maliban sa pagdaan sa bawat cell at pagtanggal ng bawat linya nang manu-mano?" Ang sagot: Madali lang iyon!

    Upang tumugma sa mga walang laman na linya na walang isang karakter mula sa simula ^ ng kasalukuyang linya hanggang sa susunod na linya \n, ang regex ay:

    Pattern : ^\n

    Kung ang iyong mga visually blank na linya ay naglalaman ng mga puwang o tab, gamitin ang regular na expression na ito:

    Pattern : ^[\t ]*\n

    Palitan lang ang regex ng walang laman na string gamit ang formula na ito, at lahat ng blangko na linya ay mawawala nang sabay-sabay!

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

    Pag-alis ng mga whitespace gamit ang RegEx Tools

    Ang mga halimbawa sa itaas ay nagpakita lamang ng maliit na bahagi ng magagandang posibilidad na ibinigay ng mga regexe. Sa kasamaang palad, hindi lahat Ang mga feature ng classic na regular na expression ay available sa VBA.

    Sa kabutihang-palad, ang RegEx Tools na kasama sa aming Ultimate Suite ay libre sa mga limitasyong ito dahil pinoproseso ang mga ito ng .NET RegEx engine ng Microsoft. Hinahayaan ka nitong bumuo ng mas sopistikadong mga pattern na ay hindi sinusuportahan ng VBA RegExp. Belo w makakahanap ka ng halimbawa ng ganoong regular na expression.

    Regex para mag-alis ng espasyo sa pagitan ng mga numero

    Sa isang alphanumeric string, ipagpalagay na gusto mong alisin ang mga whitespace sa pagitan ng mga numero lamang, kaya isang string gaya ng Ang "A 1 2 B" ay nagiging "A 12 B".

    Upang tumugma sa isang whitespace sa pagitan ng alinmang dalawang digit, maaari mong gamitin ang mga sumusunod na look-around:

    Pattern : (?<=\d)\s+(?=\d)

    Upang gumawa ng formula bataysa mga regex sa itaas, narito ang dalawang madaling hakbang na gagawin:

    1. Sa tab na Ablebits Data , sa grupong Text , i-click ang Regex Mga Tool .

    2. Sa pane ng Regex Tools , piliin ang source data, ilagay ang iyong regex, piliin ang Alisin opsyon, at pindutin ang Alisin .

      Upang makuha ang mga resulta bilang mga formula, hindi mga halaga, tandaan na maglagay ng tsek sa Ipasok bilang isang formula check box.

    Sa ilang sandali, makikita mo ang function na AblebitsRegexRemove na ipinasok sa isang bagong column sa kanan ng orihinal na data.

    Bilang kahalili, maaari mong ipasok ang regex sa ilang cell , sabihin ang A5, at direktang ipasok ang formula sa isang cell gamit ang Insert Function dialog box, kung saan ang AblebitsRegexRemove ay nakategorya sa ilalim ng AblebitsUDFs .

    Dahil espesyal na idinisenyo ang function na ito para sa pag-alis ng mga string, nangangailangan lamang ito ng dalawang argumento - ang input string at regex:

    =AblebitsRegexRemove(A5, $A$2)

    Ganito kung paano mag-alis ng mga puwang sa Excel gamit ang mga regular na expression. Salamat sa pagbabasa at umaasa akong makita ka sa aming blog sa susunod na linggo!

    Mga available na download

    Alisin ang whitespace na may regex - mga halimbawa (.xlsm file)

    Ultimate Suite - trial na bersyon (.exe file)

    mga salita kundi pati na rin sa simula at dulo ng isang string, na hindi maganda. Upang maalis ang nangunguna at sumusunod na whitespace, ilagay ang formula sa itaas sa isa pang function na RegExpReplace na kumukuha ng mga puwang mula sa simula at dulo:

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

    Regex sa alisin ang leading at trailing na whitespace

    Upang maghanap ng whitespace sa simula o dulo ng isang linya, gamitin ang start ^ at end $ anchors.

    Nangunguna whitespace:

    Pattern : ^[\s]+

    Trailing whitespace:

    Pattern : [\s ]+$

    Nangunguna at nakasunod whitespace:

    Pattern : ^[\s]+

    Si Michael Brown ay isang dedikadong mahilig sa teknolohiya na may hilig sa pagpapasimple ng mga kumplikadong proseso gamit ang mga tool sa software. Sa higit sa isang dekada ng karanasan sa industriya ng tech, hinasa niya ang kanyang mga kasanayan sa Microsoft Excel at Outlook, pati na rin ang Google Sheets at Docs. Ang blog ni Michael ay nakatuon sa pagbabahagi ng kanyang kaalaman at kadalubhasaan sa iba, na nagbibigay ng madaling sundan na mga tip at mga tutorial para sa pagpapabuti ng pagiging produktibo at kahusayan. Isa ka mang batikang propesyonal o baguhan, nag-aalok ang blog ni Michael ng mahahalagang insight at praktikal na payo para masulit ang mahahalagang software tool na ito.