ເອົາຊ່ອງຫວ່າງແລະເສັ້ນຫວ່າງຢູ່ໃນ Excel ໂດຍໃຊ້ Regex

  • ແບ່ງປັນນີ້
Michael Brown

ຕ້ອງການຈັດການຊ່ອງຫວ່າງດ້ວຍວິທີທີ່ມີປະສິດທິພາບທີ່ສຸດບໍ? ໃຊ້ສຳນວນປົກກະຕິເພື່ອລຶບຊ່ອງຫວ່າງທັງໝົດໃນຕາລາງ, ແທນທີ່ຫຼາຍຊ່ອງດ້ວຍຕົວອັກສອນຕົວດຽວ, ຕັດຍະຫວ່າງລະຫວ່າງຕົວເລກເທົ່ານັ້ນ, ແລະອື່ນໆອີກ.

ການປ້ອນຂໍ້ມູນອັນໃດທີ່ທ່ານກໍາລັງໃຊ້, ທ່ານບໍ່ຄ່ອຍຈະພົບກັບ ຊຸດຂໍ້ມູນທີ່ບໍ່ມີຊ່ອງຫວ່າງ. ໃນກໍລະນີຫຼາຍທີ່ສຸດ, ຊ່ອງຫວ່າງແມ່ນດີ - ທ່ານໃຊ້ມັນເພື່ອແຍກຂໍ້ມູນທີ່ແຕກຕ່າງກັນໂດຍສາຍຕາເພື່ອເຮັດໃຫ້ມັນງ່າຍຕໍ່ການຮັບຮູ້. ແນວໃດກໍ່ຕາມ, ໃນບາງສະຖານະການ, ມັນອາດຈະກາຍເປັນສິ່ງທີ່ຊົ່ວຮ້າຍ - ຊ່ອງຫວ່າງເພີ່ມເຕີມສາມາດເຮັດໃຫ້ສູດຂອງທ່ານສັບສົນແລະເຮັດໃຫ້ແຜ່ນວຽກຂອງທ່ານເກືອບບໍ່ສາມາດຈັດການໄດ້.

    ເປັນຫຍັງໃຊ້ການສະແດງອອກປົກກະຕິເພື່ອຕັດຍະຫວ່າງໃນ Excel?

    ກ່ອນທີ່ພວກເຮົາຈະເຂົ້າໄປໃນ nitty-gritty ຂອງການນໍາໃຊ້ການສະແດງອອກປົກກະຕິເພື່ອເອົາ whitespaces ໃນ Excel worksheets, ຂ້າພະເຈົ້າຕ້ອງການທີ່ຈະແກ້ໄຂຄໍາຖາມທີ່ມາໃນທໍາອິດ - ເປັນຫຍັງພວກເຮົາຕ້ອງການ regexes ເມື່ອ Excel ມີ TRIM ແລ້ວ. ຟັງຊັນ?

    ເພື່ອເຂົ້າໃຈຄວາມແຕກຕ່າງ, ໃຫ້ເບິ່ງສິ່ງທີ່ຖືກພິຈາລະນາເປັນຊ່ອງຫວ່າງໃນແຕ່ລະກໍລະນີ:

    • ຟັງຊັນ TRIM ທີ່ມີໃນຕົວສາມາດລອກອອກໄດ້ພຽງແຕ່ ຕົວອັກສອນຊ່ອງ ທີ່ມີຄ່າ 32 ໃນລະບົບ 7-bit ASCII.
    • ການສະແດງອອກແບບປົກກະຕິສາມາດລະບຸຮູບແບບຕ່າງໆຂອງຊ່ອງຫວ່າງຕ່າງໆ ເຊັ່ນ: space ( ), tab (\t), carriage return (\r), ແລະໃຫມ່ ແຖວ (\n). ນອກຈາກນັ້ນ, ຍັງມີ ຕົວອັກສອນຊ່ອງຂາວ (\s) ທີ່ກົງກັບທຸກປະເພດເຫຼົ່ານີ້ ແລະເປັນປະໂຫຍດທີ່ສຸດສໍາລັບການທໍາຄວາມສະອາດວັດສະດຸປ້ອນດິບ.ຂໍ້ມູນ.

    ຮູ້ສິ່ງທີ່ເກີດຂຶ້ນຢູ່ເບື້ອງຫຼັງຢ່າງແນ່ນອນ, ມັນງ່າຍຂຶ້ນຫຼາຍທີ່ຈະແກ້ໄຂບັນຫາ, ບໍ່ແມ່ນບໍ?

    ວິທີເປີດໃຊ້ການສະແດງອອກປົກກະຕິໃນ Excel

    ມັນເປັນຄວາມຈິງທີ່ຮູ້ກັນດີວ່າ Excel ຢູ່ນອກກ່ອງບໍ່ສະຫນັບສະຫນູນການສະແດງອອກປົກກະຕິ. ເພື່ອເປີດໃຊ້ພວກມັນ, ທ່ານຈໍາເປັນຕ້ອງສ້າງຟັງຊັນ VBA ແບບກໍານົດເອງ. ໂຊກດີ, ພວກເຮົາມີອັນໜຶ່ງແລ້ວ, ຊື່ວ່າ RegExpReplace . ລໍຖ້າ, ເປັນຫຍັງ "ທົດແທນ" ໃນຂະນະທີ່ພວກເຮົາເວົ້າກ່ຽວກັບການຖອນອອກ? ໃນພາສາ Excel, "remove" ແມ່ນພຽງແຕ່ຄໍາສັບອື່ນສໍາລັບ "replace with an empty string" :)

    ເພື່ອເພີ່ມຟັງຊັນໃນ Excel ຂອງທ່ານ, ພຽງແຕ່ຄັດລອກລະຫັດຂອງມັນຈາກຫນ້ານີ້, ວາງມັນຢູ່ໃນຕົວແກ້ໄຂ VBA. , ແລະບັນທຶກໄຟລ໌ຂອງທ່ານເປັນ Macro-enabled workbook (.xlsm).

    ນີ້ແມ່ນ syntax ຂອງຟັງຊັນສໍາລັບການອ້າງອີງຂອງທ່ານ:

    RegExpReplace(ຂໍ້ຄວາມ, ຮູບແບບ, ການທົດແທນ, [instance_num] , [match_case])

    ສາມ argument ທໍາອິດແມ່ນຕ້ອງການ, ສອງອັນສຸດທ້າຍແມ່ນທາງເລືອກ.

    Where:

    • Text - string the original to ຄົ້ນຫາໃນ.
    • ຮູບແບບ - regex ເພື່ອຊອກຫາ. ເພື່ອ ລຶບ ຍະຫວ່າງ , ທ່ານ​ຕ້ອງ​ຕັ້ງ​ອາກິວເມັນ​ນີ້​ເປັນ:
      • ສະ​ຕຣິງ​ຫວ່າງ​ເປົ່າ ("") ເພື່ອ​ຕັດ​ຍະ​ຫວ່າງ​ທັງ​ໝົດ​ຢ່າງ​ແທ້​ຈິງ<11
      • ຍະຫວ່າງ ຕົວອັກສອນ (" ") ເພື່ອປ່ຽນແທນທີ່ຫຼາຍຍະຫວ່າງດ້ວຍຕົວອັກສອນຍະຫວ່າງຕົວດຽວ
  • Instance_num (ທາງເລືອກ) - ຕົວເລກຕົວຢ່າງ. ໃນກໍລະນີຫຼາຍທີ່ສຸດ, ທ່ານຈະຍົກເລີກມັນເພື່ອທົດແທນທຸກກໍລະນີ(ຄ່າເລີ່ມຕົ້ນ).
  • Match_case (ທາງເລືອກ) - ຄ່າ Boolean ທີ່ລະບຸວ່າຈະກົງກັນ (TRUE) ຫຼື ignore (FALSE). ສຳລັບຊ່ອງຫວ່າງ, ມັນບໍ່ກ່ຽວຂ້ອງ ແລະຖືກລະເວັ້ນ.
  • ສຳລັບຂໍ້ມູນເພີ່ມເຕີມ, ກະລຸນາເບິ່ງຟັງຊັນ RegExpReplace.

    ວິທີລຶບຊ່ອງຫວ່າງດ້ວຍ regex - ຕົວຢ່າງ

    ດ້ວຍ ຟັງຊັນ RegExpReplace ທີ່ເພີ່ມໃສ່ປຶ້ມວຽກຂອງທ່ານ, ໃຫ້ພວກເຮົາແກ້ໄຂສະຖານະການຕ່າງໆເທື່ອລະອັນ.

    ລຶບຊ່ອງຫວ່າງທັງໝົດອອກໂດຍໃຊ້ regex

    ເພື່ອລຶບຊ່ອງຫວ່າງທັງໝົດໃນສະຕຣິງໃດໜຶ່ງ, ທ່ານພຽງແຕ່ຊອກຫາຕົວອັກສອນທີ່ມີຊ່ອງຫວ່າງທັງໝົດ, ລວມທັງ ຊ່ອງຫວ່າງ, ແຖບ, ການສົ່ງຄືນ carriage ແລະເສັ້ນ feed, ແລະປ່ຽນແທນພວກມັນດ້ວຍສະຕຣິງຫວ່າງເປົ່າ ("").

    Pattern : \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 ເພື່ອທົດແທນການຍະຫວ່າງຫຼາຍຊ່ອງດ້ວຍຕົວອັກສອນຕົວດຽວ

    ໃນກໍລະນີທີ່ທ່ານຕ້ອງການລຶບຊ່ອງຫວ່າງທັງໝົດອອກຈາກສະຕຣິງ ແລະປ່ຽນແທນແຕ່ລະກຸ່ມຊ່ອງຫວ່າງຕິດຕໍ່ກັນ ດ້ວຍລັກສະນະສະເພາະ, ນີ້ແມ່ນສິ່ງທີ່ທ່ານຕ້ອງເຮັດ:

    ກ່ອນອື່ນໝົດ, ໃຊ້ regex ນີ້ເພື່ອຕັດຊ່ອງຫວ່າງທາງໜ້າ ແລະຕໍ່ທ້າຍ:

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

    ຈາກນັ້ນ, ໃຫ້ໃຊ້ໜ້າທີ່ຂ້າງເທິງ. ກັບ ຂໍ້ຄວາມ argument ຂອງ RegExpReplace ອື່ນທີ່ແທນທີ່ຫນຶ່ງຫຼືຫຼາຍຊ່ອງຫວ່າງຕິດຕໍ່ກັນດ້ວຍຕົວອັກສອນທີ່ທ່ານລະບຸ, ເຊັ່ນ:. a hyphen:

    Pattern : \s+

    Replacement : -

    ສົມມຸດວ່າສະຕຣິງຕົ້ນສະບັບຢູ່ໃນ A8, ສູດຄຳນວນ ເອົາຮູບແບບນີ້:

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

    ຫຼືທ່ານສາມາດໃສ່ຮູບແບບແລະການທົດແທນໃນຕາລາງແຍກຕ່າງຫາກເຊັ່ນ: ສະແດງໃຫ້ເຫັນໃນຫນ້າຈໍ:

    Regex ເພື່ອເອົາເສັ້ນເປົ່າອອກ

    ນີ້ແມ່ນຄໍາຖາມທີ່ຜູ້ໃຊ້ທີ່ມີຫຼາຍເສັ້ນຢູ່ໃນເຊລຫນຶ່ງຖາມເລື້ອຍໆ: "ມີເສັ້ນຫວ່າງຫຼາຍຢູ່ໃນເຊລຂອງຂ້ອຍ. ມີວິທີໃດທີ່ຈະໄດ້ກໍາຈັດພວກມັນນອກຈາກຈະຜ່ານແຕ່ລະເຊລ ແລະລຶບແຕ່ລະແຖວດ້ວຍຕົນເອງບໍ?” ຄໍາຕອບ: ນັ້ນງ່າຍ!

    ເພື່ອຈັບຄູ່ແຖວຫວ່າງທີ່ບໍ່ມີຕົວອັກສອນດຽວຕັ້ງແຕ່ຕົ້ນ ^ ​​ຂອງແຖວປັດຈຸບັນເຖິງ. ແຖວຕໍ່ໄປ \n, regex ແມ່ນ:

    Pattern : ^\n

    ຖ້າເສັ້ນຫວ່າງທາງສາຍຕາຂອງທ່ານມີຊ່ອງຫວ່າງ ຫຼືແຖບ, ໃຫ້ໃຊ້ການສະແດງອອກປົກກະຕິນີ້:

    Pattern : ^[\t ]*\n

    ພຽງແຕ່ແທນທີ່ regex ດ້ວຍສະຕຣິງຫວ່າງເປົ່າໂດຍໃຊ້ສູດນີ້, ແລະເສັ້ນຫວ່າງທັງໝົດຈະໝົດໄປພ້ອມກັນ!

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

    ການເອົາຊ່ອງຫວ່າງອອກດ້ວຍເຄື່ອງມື RegEx

    ຕົວຢ່າງຂ້າງເທິງໄດ້ສະແດງໃຫ້ເຫັນເຖິງຄວາມເປັນໄປໄດ້ອັນດີເລີດທີ່ສະໜອງໃຫ້ໂດຍ regexes. ແຕ່ໜ້າເສຍດາຍ, ບໍ່ແມ່ນທັງໝົດ. ຄຸນສົມບັດຂອງການສະແດງຜົນແບບປົກກະຕິແບບຄລາສສິກແມ່ນມີຢູ່ໃນ VBA.

    ໂຊກດີ, ເຄື່ອງມື RegEx ທີ່ມາພ້ອມກັບ Ultimate Suite ຂອງພວກເຮົາແມ່ນບໍ່ມີຂໍ້ຈຳກັດເຫຼົ່ານີ້ ເນື່ອງຈາກພວກມັນຖືກປະມວນຜົນໂດຍເຄື່ອງຈັກ .NET RegEx ຂອງ Microsoft. ນີ້ຊ່ວຍໃຫ້ທ່ານສ້າງຮູບແບບທີ່ຊັບຊ້ອນຫຼາຍຂຶ້ນ. ບໍ່ຮອງຮັບໂດຍ VBA RegExp. Belo w ທ່ານຈະເຫັນຕົວຢ່າງຂອງການສະແດງຜົນປົກກະຕິດັ່ງກ່າວ.

    Regex ເພື່ອເອົາຊ່ອງຫວ່າງລະຫວ່າງຕົວເລກ

    ໃນສະຕຣິງທີ່ເປັນຕົວອັກສອນ ແລະຕົວເລກ, ສົມມຸດວ່າທ່ານຕ້ອງການລຶບຊ່ອງຫວ່າງລະຫວ່າງຕົວເລກເທົ່ານັ້ນ, ດັ່ງນັ້ນ string ເຊັ່ນ: "A 1 2 B" ກາຍເປັນ "A 12 B." : (?<=\d)\s+(?=\d)

    ເພື່ອສ້າງສູດໂດຍອີງໃສ່ໃນ regexes ຂ້າງເທິງ, ນີ້ແມ່ນສອງຂັ້ນຕອນງ່າຍໆເພື່ອປະຕິບັດ:

    1. ໃນແຖບ Ablebits Data , ໃນກຸ່ມ ຂໍ້ຄວາມ , ຄລິກ Regex Tools .

    2. ໃນແຖບ Regex Tools , ເລືອກແຫຼ່ງຂໍ້ມູນ, ໃສ່ regex ຂອງທ່ານ, ເລືອກ ເອົາອອກ ທາງເລືອກ, ແລະກົດ ເອົາອອກ .

      ເພື່ອໃຫ້ໄດ້ຜົນລັບທີ່ເປັນສູດ, ບໍ່ແມ່ນຄ່າ, ຢ່າລືມໃສ່ເຄື່ອງໝາຍຕິກໃສ່ໃນປ່ອງ Insert as a formula .

    ໃນອີກບໍ່ດົນ, ທ່ານຈະເຫັນຟັງຊັນ AblebitsRegexRemove ແຊກຢູ່ໃນຖັນໃໝ່ທາງຂວາຂອງຂໍ້ມູນຕົ້ນສະບັບ.

    ອີກທາງເລືອກໜຶ່ງ, ທ່ານສາມາດໃສ່ regex ໃນບາງເຊລໄດ້. , ເວົ້າ A5, ແລະໃສ່ສູດໂດຍກົງໃນຕາລາງໂດຍໃຊ້ກ່ອງໂຕ້ຕອບ Insert Function , ບ່ອນທີ່ AblebitsRegexRemove ຖືກຈັດປະເພດພາຍໃຕ້ AblebitsUDFs .

    ເນື່ອງຈາກຟັງຊັນນີ້ຖືກອອກແບບມາເປັນພິເສດສໍາລັບການຖອນ strings, ມັນຕ້ອງການພຽງແຕ່ສອງ argument - string input ແລະ regex:

    =AblebitsRegexRemove(A5, $A$2)

    ນັ້ນຄືວິທີລຶບ spaces ໃນ Excel ການ​ນໍາ​ໃຊ້​ສໍາ​ນວນ​ປົກ​ກະ​ຕິ​. ຂ້າພະເຈົ້າຂໍຂອບໃຈທ່ານສໍາລັບການອ່ານແລະຫວັງວ່າຈະໄດ້ພົບທ່ານໃນ blog ຂອງພວກເຮົາໃນອາທິດຕໍ່ໄປ!

    ມີໃຫ້ດາວໂຫລດ

    ລຶບ whitespace ດ້ວຍ regex - ຕົວຢ່າງ (ໄຟລ໌ .xlsm)

    Ultimate Suite - ລຸ້ນທົດລອງ (ໄຟລ໌ .exe)

    ຄໍາສັບຕ່າງໆແຕ່ຍັງຢູ່ໃນຕອນຕົ້ນແລະທ້າຍຂອງຊ່ອຍແນ່, ເຊິ່ງບໍ່ດີ. ເພື່ອກໍາຈັດຊ່ອງຫວ່າງຊັ້ນນໍາ ແລະ ຕິດຕາມ, ວາງສູດຂ້າງເທິງໃສ່ໃນຟັງຊັນ RegExpReplace ອື່ນທີ່ຕັດຊ່ອງຫວ່າງຈາກຕົ້ນ ແລະ ທ້າຍ:

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

    Regex ກັບ ເອົາຊ່ອງຫວ່າງທີ່ນຳໜ້າ ແລະຕາມຫຼັງອອກ

    ເພື່ອຄົ້ນຫາພື້ນທີ່ຂາວໃນຕອນຕົ້ນ ຫຼື ທ້າຍແຖວ, ໃຫ້ໃຊ້ຈຸດເລີ່ມຕົ້ນ ^ ​​ແລະສິ້ນສຸດ $ anchors.

    ນຳໜ້າ ຊ່ອງຫວ່າງ:<3

    Pattern : ^[\s]+

    Trailing whitespace:

    Pattern : [\s ]+$

    ນຳໜ້າ ແລະ ຕາມຫຼັງ ຊ່ອງຫວ່າງ:

    ຮູບແບບ : ^[\s]+

    Michael Brown ເປັນຜູ້ທີ່ມີຄວາມກະຕືລືລົ້ນທາງດ້ານເທກໂນໂລຍີທີ່ອຸທິດຕົນທີ່ມີຄວາມກະຕືລືລົ້ນໃນຂະບວນການທີ່ສັບສົນໂດຍນໍາໃຊ້ເຄື່ອງມືຊອບແວ. ດ້ວຍປະສົບການຫຼາຍກວ່າໜຶ່ງທົດສະວັດໃນອຸດສາຫະກຳເທັກໂນໂລຍີ, ລາວໄດ້ເນັ້ນທັກສະໃນ Microsoft Excel ແລະ Outlook, ເຊັ່ນດຽວກັນກັບ Google Sheets ແລະ Docs. blog ຂອງ Michael ແມ່ນອຸທິດຕົນເພື່ອແບ່ງປັນຄວາມຮູ້ແລະຄວາມຊໍານານຂອງລາວກັບຜູ້ອື່ນ, ສະຫນອງຄໍາແນະນໍາແລະຄໍາແນະນໍາທີ່ງ່າຍຕໍ່ການຕິດຕາມເພື່ອປັບປຸງຜົນຜະລິດແລະປະສິດທິພາບ. ບໍ່ວ່າທ່ານຈະເປັນມືອາຊີບທີ່ມີລະດູການຫຼືຜູ້ເລີ່ມຕົ້ນ, blog ຂອງ Michael ສະເຫນີຄວາມເຂົ້າໃຈທີ່ມີຄຸນຄ່າແລະຄໍາແນະນໍາພາກປະຕິບັດສໍາລັບການໄດ້ຮັບປະໂຫຍດສູງສຸດຈາກເຄື່ອງມືຊອບແວທີ່ຈໍາເປັນເຫຼົ່ານີ້.