Regex көмегімен Excel бағдарламасындағы бос орындар мен бос жолдарды алып тастаңыз

  • Мұны Бөлісіңіз
Michael Brown

Бос орындарды ең тиімді жолмен өңдегіңіз келе ме? Ұяшықтағы барлық бос орындарды алып тастау, бірнеше бос орындарды бір таңбамен ауыстыру, тек сандар арасындағы бос орындарды қысқарту және т.б. үшін тұрақты өрнектерді пайдаланыңыз.

Қандай енгізу деректерін пайдалансаңыз да, сіз әрең кездестіресіз. бос орындарсыз деректер жинағы. Көп жағдайда бос орын жақсы - оны қабылдауды жеңілдету үшін әртүрлі ақпарат бөліктерін көрнекі түрде бөлу үшін пайдаланасыз. Кейбір жағдайларда, алайда, ол зиянды болуы мүмкін - қосымша бос орындар формулаларыңызды шатастырып, жұмыс парақтарыңызды дерлік басқаруға болмайтын етеді.

    Неге Excel бағдарламасындағы бос орындарды кесу үшін тұрақты өрнекті пайдалану керек?

    Excel жұмыс парақтарындағы бос орындарды жою үшін тұрақты өрнектерді пайдаланудың егжей-тегжейлерімен таныспас бұрын, мен бірінші кезекте ойға келетін сұраққа тоқталғым келеді - Excel бағдарламасында TRIM бұрыннан бар болса, бізге регекстер не үшін қажет? функциясы?

    Айырмашылықты түсіну үшін әр жағдайда не бос орын деп есептелетінін көрейік:

    • Кірістірілген TRIM функциясы бос орын таңбасын ғана алып тастай алады 7-биттік ASCII жүйесінде 32 мәні бар.
    • Тұрақты өрнектер бос орын ( ), қойынды (\t), каретканы қайтару (\r) және жаңа сияқты бос орынның бірнеше түрлі пішіндерін анықтай алады. жол (\n). Оған қоса, осы түрлердің барлығына сәйкес келетін бос орын таңбасы (\s) бар және өңделмеген енгізуді тазалау үшін өте пайдалы болады.деректер.

    Сахна артында не болып жатқанын білу, шешімді әзірлеу әлдеқайда оңай, солай емес пе?

    Excel бағдарламасында тұрақты өрнектерді қалай қосуға болады

    Қолданбалы Excel бағдарламасы тұрақты өрнектерді қолдамайтыны белгілі. Оларды қосу үшін теңшелетін VBA функциясын жасау керек. Бақытымызға орай, бізде RegExpReplace деп аталатын біреуі бар. Күте тұрыңыз, біз алып тастау туралы айтып жатқанда, неге «ауыстыру» керек? Excel тілінде «жою» - «бос жолмен ауыстыру» дегенді білдіретін басқа сөз :)

    Функцияны Excel бағдарламасына қосу үшін оның кодын осы беттен көшіріп, оны VBA редакторына қойыңыз. , және файлыңызды макрос қосылған жұмыс кітабы (.xlsm) ретінде сақтаңыз.

    Анықтама үшін функцияның синтаксисі берілген:

    RegExpReplace(мәтін, үлгі, ауыстыру, [дана_саны] , [матч_жағдай])

    Алғашқы үш аргумент қажет, соңғы екеуі міндетті емес.

    Мұнда:

    • Мәтін - бастапқы жол іздеу.
    • Үлгі - ізделетін регекс.
    • Ауыстыру - ауыстырылатын мәтін. жою бос орындар үшін бұл аргументті мынаның біреуіне орнату керек:
      • бос жол ("") абсолютті барлық бос орындарды қию үшін
      • бос орын таңба (" ") бірнеше бос орындарды бір бос орын таңбасымен ауыстыру үшін
    • Дана_саны (қосымша) - дананың нөмірі. Көп жағдайда барлық даналарды ауыстыру үшін оны өткізіп жібересіз(әдепкі).
    • Сәйкестік_регистрі (міндетті емес) - мәтін регистріне сәйкес (ШЫН) немесе елемеу (ЖАЛҒАН) екенін көрсететін логикалық мән. Бос орын үшін ол маңызды емес, сондықтан өткізілмейді.

    Қосымша ақпарат алу үшін RegExpReplace функциясын қараңыз.

    Бос орынды regex көмегімен жою жолы – мысалдар

    Жұмыс кітабыңызға RegExpReplace функциясы қосылды, әр түрлі сценарийлерді бір-бірден шешейік.

    Регекс көмегімен барлық бос орындарды жою

    Жолдағы барлық бос орындарды жою үшін жай бос орын таңбасын, соның ішінде кез келген бос орын таңбасын іздейсіз. бос орын, қойынды, каретка қайтару және жол беру және оларды бос жолмен ("") ауыстырыңыз.

    Үлгі : \s+

    Ауыстыру : ""

    Бастапқы жол A5 форматында болса, B5-тегі формула:

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

    Үлгілерді басқаруды жеңілдету үшін , сіз алдын ала анықталған ұяшыққа regex мәнін енгізіп, оны $A$2 сияқты абсолютті сілтеме арқылы формулаға жеткізе аласыз, осылайша формуланы бағанға көшіру кезінде ұяшық мекенжайы өзгеріссіз қалады.

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

    Бірнеше бос орынды жою

    қосымша бос орынды жою үшін (яғни. n бір бос орын), бірдей regex \s+ пайдаланыңыз, бірақ табылған сәйкестіктерді бір бос орын таңбасымен ауыстырыңыз.

    Үлгі : \s+

    Ауыстыру : " "

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

    Бұл формула тек арасында ғана емес, бір бос орын таңбасын сақтайтынына назар аударыңыз.деректер жиынының астында, бірнеше жолды сақтай отырып, барлық алдыңғы/арттағы бос орындарды және бір бос орындардан басқасының барлығын кескіңіз келеді делік. Тапсырманы орындау үшін сізге екі түрлі RegExpReplace функциясы қажет.

    Бірінші функция бірнеше бос орындарды бір бос орын таңбасымен ауыстырады.

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

    Екіншісі бос орындарды алып тастайды. жолдың басынан және соңынан:

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

    Екі функцияны бір-біріне салыңыз:

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

    Және сіз мынаны аласыз тамаша нәтиже:

    Бір таңбамен бірнеше бос орындарды ауыстыру үшін regex

    Жолдан барлық бос орындарды алып тастағыңыз келсе және дәйекті бос орындардың әрбір тобын ауыстырғыңыз келсе белгілі бір таңбамен мынаны істеу керек:

    Біріншіден, алдыңғы және кейінгі бос орындарды кесу үшін осы регексті пайдаланыңыз:

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

    Содан кейін жоғарыдағы функцияны орындаңыз. Бір немесе бірнеше қатардағы бос орындарды сіз көрсеткен таңбамен ауыстыратын басқа RegExpReplace файлының мәтін аргументіне, мысалы. сызықша:

    Үлгі : \s+

    Ауыстыру : -

    Бастапқы жол A8 форматында болса, формула мына пішінді алады:

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

    Немесе скриншотта көрсетілгендей бөлек ұяшықтарға үлгілер мен ауыстыруларды енгізуге болады:

    Regex бос жолдарды жою

    Бір ұяшықта бірнеше жол бар пайдаланушылар жиі қоятын сұрақ: "Менің ұяшықтарымда бос жолдар көп. Оны алудың кез келген жолы бар ма?әр ұяшықты аралап, әр жолды қолмен жоюдан басқа олардан құтылу керек пе?" Жауап: Бұл оңай!

    Бірде-бір таңбасы жоқ бос жолдарды ағымдағы жолдың басынан ^ бастап келесіге дейін сәйкестендіру үшін келесі жол \n, регекс:

    Үлгі : ^\n

    Егер көрнекі бос жолдарыңызда бос орындар немесе қойындылар болса, мына тұрақты өрнекті пайдаланыңыз:

    Үлгі : ^[\t ]*\n

    Осы формуланы пайдаланып регексті бос жолға ауыстырыңыз, сонда барлық бос жолдар бірден жойылады!

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

    RegEx құралдарының көмегімен бос орындарды жою

    Жоғарыда келтірілген мысалдар регекстермен қамтамасыз етілген тамаша мүмкіндіктердің аз ғана бөлігін көрсетті. Өкінішке орай, бәрі бірдей емес. классикалық тұрақты өрнектердің мүмкіндіктері VBA-да қол жетімді.

    Бақытымызға орай, Ultimate Suite құрамына кіретін RegEx құралдары бұл шектеулерден бос, өйткені олар Microsoft корпорациясының .NET RegEx қозғалтқышымен өңделеді. Бұл сізге күрделірек үлгілерді құруға мүмкіндік береді. VBA RegExp.Belo қолданбасында қолдау көрсетілмейді w сіз осындай тұрақты өрнектің мысалын таба аласыз.

    Сандар арасындағы бос орынды жоюға арналған регекс

    Әріптік-цифрлық жолда тек сандар арасындағы бос орындарды алып тастағыңыз келеді делік. "A 1 2 B" "A 12 B" болады.

    Кез келген екі сан арасындағы бос орынды сәйкестендіру үшін келесі көріністерді пайдалануға болады:

    Үлгі : (?<=\d)\s+(?=\d)

    Негізінде формула жасау үшінжоғарыдағы регекстерде орындалатын екі оңай қадам бар:

    1. Ablebits Data қойындысындағы Мәтін тобында Регекс түймесін басыңыз. Құралдар .

    2. Regex құралдары тақтасында бастапқы деректерді таңдаңыз, регексіңізді енгізіңіз, Жою опциясын таңдаңыз. опциясын таңдап, Жою түймесін басыңыз.

      Нәтижелерді мәндер емес, формулалар ретінде алу үшін Формула ретінде кірістіру құсбелгісін қоюды ұмытпаңыз.

    Біраз уақыттан кейін бастапқы деректердің оң жағындағы жаңа бағанға енгізілген AblebitsRegexRemove функциясын көресіз.

    Немесе, кейбір ұяшыққа regex мәнін енгізуге болады. , A5 деп айтыңыз және формуланы тікелей ұяшыққа Функцияны кірістіру тілқатысу терезесі арқылы енгізіңіз, мұнда AblebitsRegexRemove AblebitsUDFs астында санатталған.

    Бұл функция жолдарды жою үшін арнайы жасалғандықтан, ол тек екі аргументті қажет етеді - кіріс жолы және regex:

    =AblebitsRegexRemove(A5, $A$2)

    Осылайша бос орындарды жоюға болады. Тұрақты өрнектерді қолданатын Excel. Оқығаныңыз үшін алғыс айтамын және сізді келесі аптада біздің блогта күтемін!

    Қолжетімді жүктеп алулар

    Регекс көмегімен бос орынды жою - мысалдар (.xlsm файлы)

    Ultimate Suite - сынақ нұсқасы (.exe файлы)

    сөздер, сонымен қатар жолдың басында және соңында, бұл жақсы емес. Бастапқы және кейінгі бос орындардан құтылу үшін жоғарыдағы формуланы басынан және аяғынан бос орындарды ажырататын басқа RegExpReplace функциясына кірістіріңіз:

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

    Regex алдыңғы және кейінгі бос орындарды алып тастаңыз

    Жолдың басынан немесе соңында бос орынды іздеу үшін $ бастапқы ^ және соңындағы анкерлерді пайдаланыңыз.

    Алдыңғы бос орын:

    Үлгі : ^[\s]+

    Арттағы бос орын:

    Үлгі : [\s ]+$

    Алдыңғы және арттағы бос орын:

    Үлгі : ^[\s]+

    Майкл Браун - бағдарламалық құралдарды пайдалана отырып, күрделі процестерді жеңілдетуге құмарлығы бар арнайы технология әуесқойы. Технологиялық индустрияда он жылдан астам тәжірибесі бар ол Microsoft Excel және Outlook, сондай-ақ Google Sheets және Docs бағдарламаларында өз дағдыларын жетілдірді. Майклдың блогы өз білімі мен тәжірибесін басқалармен бөлісуге, өнімділік пен тиімділікті арттыруға арналған оңай орындалатын кеңестер мен оқулықтар беруге арналған. Сіз тәжірибелі кәсіпқой болсаңыз да, жаңадан бастаушы болсаңыз да, Майклдың блогы осы маңызды бағдарламалық құралдарды барынша пайдалану үшін құнды түсініктер мен практикалық кеңестер ұсынады.