Regex ашиглан Excel дээрх хоосон зай болон хоосон мөрүүдийг арилгана уу

  • Үүнийг Хуваалц
Michael Brown

Хоосон зайг хамгийн үр дүнтэй аргаар зохицуулахыг хүсч байна уу? Нүдний бүх хоосон зайг арилгах, олон орон зайг нэг тэмдэгтээр солих, зөвхөн тоонуудын хоорондох зайг багасгах болон бусад зүйлийг хийхийн тулд ердийн хэллэгийг ашиглана уу.

Та ямар ч оролтын өгөгдөл ашиглаж байгаа хамаагүй, та ямар ч өгөгдөлтэй таарахгүй. хоосон зайгүй мэдээллийн багц. Ихэнх тохиолдолд хоосон зай сайн байдаг - та үүнийг ойлгоход хялбар болгохын тулд өөр өөр мэдээллийг нүдээр салгахад ашигладаг. Гэсэн хэдий ч зарим тохиолдолд энэ нь муу болж магадгүй - нэмэлт зай нь таны томьёог эмх замбараагүй болгож, ажлын хуудсыг удирдах боломжгүй болгож болзошгүй.

    Яагаад Excel-ийн хоосон зайг багасгахын тулд ердийн илэрхийлэл ашигладаг вэ?

    Бид Excel-ийн ажлын хуудсан дээрх хоосон зайг арилгахын тулд ердийн илэрхийлэл ашиглах нарийн ширийнийг судлахын өмнө би юун түрүүнд санаанд орж ирдэг асуултыг авч үзэхийг хүсч байна - Excel-д TRIM аль хэдийн байгаа үед бидэнд яагаад regexes хэрэгтэй вэ? функц уу?

    Ялгааг ойлгохын тулд тухайн тохиолдол бүрт юуг хоосон зай гэж тооцдогийг харцгаая:

    • Суурилуулсан TRIM функц нь зөвхөн зайны тэмдэгтийг арилгах боломжтой Энэ нь 7 битийн ASCII системд 32 утгатай байна.
    • Тогтмол илэрхийлэл нь зай ( ), tab (\t), цуваа буцах (\r) болон шинэ гэх мэт хэд хэдэн төрлийн хоосон зайг тодорхойлох боломжтой. мөр (\n). Нэмж дурдахад эдгээр бүх төрлүүдэд тохирох хоосон зайны тэмдэгт (\s) байгаа бөгөөд түүхий оролтыг цэвэрлэхэд маш их тустай.өгөгдөл.

    Хөшигний ард яг юу болдгийг мэдэх нь шийдлийг гаргахад илүү хялбар байдаг, тийм ээ?

    Excel дээр ердийн илэрхийллийг хэрхэн идэвхжүүлэх вэ

    Бэлэн болсон Excel нь ердийн хэллэгийг дэмждэггүй нь мэдэгдэж байгаа баримт юм. Тэдгээрийг идэвхжүүлэхийн тулд та тусгай VBA функцийг үүсгэх хэрэгтэй. Аз болоход, бидэнд аль хэдийн RegExpReplace нэртэй нэг байгаа. Хүлээгээрэй, арилгах тухай ярьж байхад яагаад "солих" гэж? Excel хэл дээр "remove" гэдэг нь "хоосон тэмдэгт мөрөөр солих" гэсэн өөр үг юм :)

    Энэ функцийг Excel-дээ нэмэхийн тулд энэ хуудаснаас кодыг нь хуулж аваад VBA засварлагч руу оруулна уу. , файлаа макро идэвхжүүлсэн ажлын ном (.xlsm) болгон хадгална уу.

    Таны лавлагааны функцийн синтакс энд байна:

    RegExpReplace(текст, загвар, солих, [instance_num] , [тэмцэх_тохиолдол])

    Эхний гурван аргумент шаардлагатай, сүүлийн хоёр нь нэмэлт.

    Үүнд:

    • Текст - эх мөр хайна уу.
    • Загвар - хайх регекс.
    • Орлуулах - орлуулах текст. хоосон зай -г арилгахын тулд та энэ аргументыг дараах байдлаар тохируулна:
      • хоосон мөр ("") бүх хоосон зайг багасгахын тулд
      • зай тэмдэгт (" ") олон зайг нэг хоосон тэмдэгтээр орлуулах
    • Жишээний_тоо (заавал биш) - жишээний дугаар. Ихэнх тохиолдолд та бүх тохиолдлыг орлуулахын тулд үүнийг орхих болно(өгөгдмөл).
    • Тохицуулах_хэрэгслэл (заавал биш) - Текстийн том үсгийг тааруулах (ҮНЭН) эсвэл үл тоомсорлох (БУДАЛ) эсэхийг илтгэх логик утга. Хоосон зайны хувьд энэ нь хамааралгүй тул орхигдуулсан байна.

    Дэлгэрэнгүй мэдээллийг RegExpReplace функцээс үзнэ үү.

    Хэрхэн regex ашиглан хоосон зайг арилгах - жишээнүүд

    RegExpReplace функцийг таны ажлын дэвтэрт нэмсэн тул өөр хувилбаруудыг нэг нэгээр нь шийдэцгээе.

    Бүх хоосон зайг regex ашиглан арилгана

    Мөр дэх бүх хоосон зайг арилгахын тулд та зүгээр л ямар ч хоосон зайны тэмдэгт хайхад хангалттай. хоосон зай, таб, тэрэгний буцах хэсэг, мөрийн тэжээлийг оруулаад тэдгээрийг хоосон тэмдэгт мөрөөр ("") солино.

    Хэв маяг : \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, regex нь:

    Загвар : ^\n

    Хэрэв таны харагдахуйц хоосон мөрөнд хоосон зай эсвэл таб байгаа бол энэ энгийн илэрхийллийг ашиглана уу:

    Загвар : ^[\t ]*\n

    Энэ томьёог ашиглан регексийг хоосон тэмдэгтээр солиход л бүх хоосон мөрүүд нэг дор алга болно!

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

    RegEx хэрэгслүүдийн тусламжтайгаар хоосон зайг арилгах

    Дээрх жишээнүүд нь regex-уудын өгсөн гайхалтай боломжуудын багахан хэсгийг харуулсан. Харамсалтай нь бүгд тийм биш. сонгодог тогтмол илэрхийллийн онцлогуудыг VBA-д ашиглах боломжтой.

    Аз болоход манай Ultimate Suite-д багтсан RegEx хэрэгслүүд нь Microsoft-ын .NET RegEx хөдөлгүүрээр боловсруулагдсан тул эдгээр хязгаарлалтгүй. Энэ нь танд илүү боловсронгуй загваруудыг бүтээх боломжийг олгоно. VBA RegExp Belo дэмждэггүй Ийм тогтмол илэрхийллийн жишээг та олох болно.

    Тоонуудын хоорондох зайг арилгах регекс

    Үсэг, тоон мөрт та зөвхөн тоонуудын хоорондох хоосон зайг арилгахыг хүсэж байна гэж бодъё. "A 1 2 B" нь "A 12 B" болж хувирна.

    Дурын хоёр цифрийн хоорондох хоосон зайг тааруулахын тулд та дараах тоймыг ашиглаж болно:

    Загвар : (?<=\d)\s+(?=\d)

    Үндэслэн томъёо үүсгэхДээрх регексүүд дээр гүйцэтгэх хоёр хялбар алхам байна:

    1. Ablebits Data табын Text бүлгийн Regex дээр дарна уу. Хэрэгслүүд .

    2. Regex Tools самбараас эх өгөгдлийг сонгоод өөрийн регексийг оруулаад Устгах -г сонгоно уу. гэсэн сонголтыг хийгээд Устгах -г дарна уу.

      Үр дүнг утгыг биш томьёо болгон авахын тулд Томьёо болгон оруулах нүдэн дээр тэмдэглэгээ хийхээ мартуузай.

    Хөгшин зуур та анхны өгөгдлийн баруун талд байгаа шинэ баганад AblebitsRegexRemove функцийг оруулахыг харах болно.

    Өөр нэг тохиолдолд та зарим нүдэнд регексийг оруулж болно. , 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 дээр ур чадвараа дээшлүүлсэн. Майклын блог нь өөрийн мэдлэг, туршлагаа бусадтай хуваалцах, бүтээмж, үр ашгийг дээшлүүлэхэд хялбар зөвлөмж, зааварчилгаа өгөх зорилготой юм. Та туршлагатай мэргэжилтэн эсвэл анхлан суралцаж байгаа эсэхээс үл хамааран Майклын блог нь эдгээр чухал програм хангамжийн хэрэгслээс хамгийн их ашиг хүртэх талаар үнэ цэнэтэй ойлголт, практик зөвлөгөөг санал болгодог.