Excel Regex: ຈັບຄູ່ສະຕຣິງໂດຍໃຊ້ການສະແດງຜົນປົກກະຕິ

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

ໃນບົດສອນນີ້, ພວກເຮົາຈະເບິ່ງລະອຽດກ່ຽວກັບວິທີການໃຊ້ regex ເພື່ອຈັບຄູ່ສະຕຣິງໃນ Excel.

ເມື່ອທ່ານຕ້ອງການຊອກຫາຄ່າທີ່ແນ່ນອນໃນຂອບເຂດໃດໜຶ່ງ. ຂອງຕາລາງ, ເຈົ້າຈະໃຊ້ຟັງຊັນ MATCH ຫຼື XMATCH. ເມື່ອຊອກຫາສະຕຣິງສະເພາະໃນເຊລ, ຟັງຊັນ FIND ແລະ SEARCH ມີປະໂຫຍດ. ແລະເຈົ້າຮູ້ໄດ້ແນວໃດວ່າເຊລມີຂໍ້ມູນທີ່ກົງກັບຮູບແບບທີ່ໃຫ້ໄວ້? ແນ່ນອນ, ໂດຍໃຊ້ການສະແດງອອກເປັນປົກກະຕິ. ແຕ່ອອກຈາກກ່ອງ Excel ບໍ່ສະຫນັບສະຫນູນ regexes! ບໍ່ຕ້ອງເປັນຫ່ວງ, ພວກເຮົາຈະບັງຄັບມັນໃຫ້ :)

    ຟັງຊັນ Excel VBA Regex ເພື່ອຈັບຄູ່ສະຕຣິງ

    ເນື່ອງຈາກວ່າມັນຊັດເຈນຫຼາຍຈາກຫົວຂໍ້, ເພື່ອໃຊ້ການສະແດງອອກປົກກະຕິ. ໃນ Excel, ທ່ານຈໍາເປັນຕ້ອງສ້າງຫນ້າທີ່ຂອງທ່ານເອງ. ໂຊກດີ, VBA ຂອງ Excel ມີ inbuilt RegExp object, ທີ່ທ່ານສາມາດນໍາໃຊ້ໃນລະຫັດຂອງທ່ານດັ່ງທີ່ສະແດງຂ້າງລຸ່ມນີ້:

    Public Function RegExpMatch(input_range As Range, pattern As String , Optional match_case As Boolean = True ) As Variant Dim arRes() As Variant 'array ເພື່ອເກັບຜົນໄດ້ຮັບ Dim iInputCurRow, iInputCurCol, cntInputRows, cntInputCols As Long 'index of the current row in the source range, index of the current column in the source range, count of row, count of columns On Error GoTo ErrHandl RegExpMatch = arRes ຕັ້ງ regex = CreateObject ( "VBScript.RegExp" ) regex.pattern = ຮູບແບບ regex.Global = True regex.MultiLine = True ຖ້າ True = match_case ຫຼັງຈາກນັ້ນ regex.ignorecase = False Else regex. ຈົບການສະແດງຜົນ.

    ຮູບແບບ : \b[\w\.\-]+@[A-Za-z0-9]+[A-Za-z0-9\.\- ]*[A-Za-z0-9]+\.[A-Za-z]{2,24}\b

    ເພື່ອເຂົ້າໃຈສິ່ງທີ່ກຳລັງເກີດຂຶ້ນຢູ່ນີ້, ໃຫ້ເຮົາພິຈາລະນາເບິ່ງແຕ່ລະພາກສ່ວນ :

    • ຊື່ຜູ້ໃຊ້ ອາດຈະລວມເອົາຕົວອັກສອນ, ຕົວເລກ, ຂີດກ້ອງ, ຈຸດ ແລະ ຂີດຕໍ່. ຈົ່ງຈື່ໄວ້ວ່າ \w ກົງກັບຕົວອັກສອນ, ຕົວເລກ ຫຼື ຂີດກ້ອງ, ພວກເຮົາໄດ້ຮັບ regex ຕໍ່ໄປນີ້: [\w\.\-]+
    • ຊື່ໂດເມນ ອາດຈະປະກອບມີຕົວພິມໃຫຍ່ ແລະ ໂຕພິມນ້ອຍ, digits, hyphens (ແຕ່ບໍ່ແມ່ນຢູ່ໃນຕໍາແຫນ່ງທໍາອິດຫຼືສຸດທ້າຍ) ແລະຈຸດ (ໃນກໍລະນີຂອງ subdomains). ເນື່ອງຈາກບໍ່ອະນຸຍາດໃຫ້ມີຂີດກ້ອງ, ແທນທີ່ຈະ \w ພວກເຮົາໃຊ້ 3 ຊຸດຕົວອັກສອນທີ່ແຕກຕ່າງກັນ: [A-Za-z0-9]+[A-Za-z0-9\.\-]*[A-Za-z0-9 ]+
    • ໂດເມນລະດັບສູງສຸດ ປະກອບດ້ວຍຈຸດທີ່ຕາມດ້ວຍຕົວພິມໃຫຍ່ ແລະ ໂຕພິມນ້ອຍ. ມັນສາມາດບັນຈຸໄດ້ຕັ້ງແຕ່ 2 ຫາ 24 ຕົວອັກສອນ (TLD ທີ່ຍາວທີ່ສຸດໃນປະຈຸບັນ): \.[A-Za-z]{2,24}

    ໝາຍເຫດ. ຮູບແບບດັ່ງກ່າວສົມມຸດວ່າຊື່ໂດເມນມີ 2 ຕົວອັກສອນ ຫຼືຫຼາຍກວ່ານັ້ນ.

    ດ້ວຍຂໍ້ຄວາມຕົ້ນສະບັບໃນ A5 ແລະຮູບແບບໃນ A5, ສູດຈະໃຊ້ຮູບຮ່າງນີ້:

    =RegExpMatch(A5, $A$2)

    ຫຼື ທ່ານສາມາດໃຊ້ແບບປົກກະຕິທີ່ງ່າຍກວ່າ. ການສະແດງຜົນສໍາລັບການກວດສອບອີເມວດ້ວຍຕົວພິມນ້ອຍ ຫຼືຕົວພິມໃຫຍ່:

    ຮູບແບບ : \b[\w\.\-]+@[a-z0-9]+[a- z0-9\.\-]*[a-z0-9]+\.[a-z]{2,24}\b

    ແຕ່ເຮັດໃຫ້ສູດຄຳນວນຂອງທ່ານບໍ່ລະອຽດອ່ອນ:

    =RegExpMatch(A5, $A$2, FALSE)

    ສູດ Excel IF ກັບ regex ກົງກັນ

    ອັນເນື່ອງມາຈາກຄວາມຈິງທີ່ວ່າ inbuilt ແລະ customຟັງຊັນຕ່າງໆໄປພ້ອມໆກັນ, ບໍ່ມີຫຍັງທີ່ຈະກີດກັນເຈົ້າຈາກການໃຊ້ພວກມັນຮ່ວມກັນໃນສູດດຽວ.

    ເພື່ອສົ່ງຄືນ ຫຼືຄຳນວນບາງຢ່າງຫາກການສະແດງອອກປົກກະຕິຖືກຈັບຄູ່ ແລະອັນອື່ນຖ້າມັນບໍ່ກົງກັນ, ໃຫ້ຝັງ RegExpMatch ແບບກຳນົດເອງ. ຟັງຊັນໃນຂໍ້ຄວາມຕາມເຫດຜົນຂອງ IF:

    IF(RegExpMatch(…), [value_if_true], [value_if_false])

    ຕົວຢ່າງ, ຖ້າສະຕຣິງໃນ A5 ມີທີ່ຢູ່ອີເມວທີ່ຖືກຕ້ອງ, ທ່ານສາມາດສົ່ງຄືນ "ແມ່ນແລ້ວ"; ຖ້າບໍ່ດັ່ງນັ້ນ "ບໍ່".

    =IF(RegExpMatch(A5, $A$2,), "Yes", "No")

    ນັບວ່າ regex ຖືກຈັບຄູ່

    ເພາະວ່າຟັງຊັນ Excel ເດີມບໍ່ຮອງຮັບການສະແດງອອກປົກກະຕິ, ມັນແມ່ນ. ບໍ່ສາມາດໃສ່ regex ໂດຍກົງໃນຟັງຊັນ COUNTIS ຫຼື COUNTIFS. ໂຊກດີ, ທ່ານສາມາດຈໍາລອງການທໍາງານນີ້ໂດຍໃຊ້ຟັງຊັນທີ່ກໍາຫນົດເອງຂອງພວກເຮົາ.

    ສົມມຸດວ່າທ່ານໄດ້ໃຊ້ regex ເພື່ອຈັບຄູ່ເບີໂທລະສັບແລະສົ່ງຜົນໄດ້ຮັບໃນຖັນ B. ເພື່ອຄົ້ນຫາຈໍານວນຈຸລັງທີ່ມີເບີໂທລະສັບ, ທ່ານພຽງແຕ່ຕ້ອງການ ເພື່ອນັບຄ່າ TRUE ໃນ B5:B9. ແລະນັ້ນສາມາດເຮັດໄດ້ງ່າຍໂດຍໃຊ້ສູດມາດຕະຖານ COUNTIF:

    =COUNTIF(B5:B9, TRUE)

    ບໍ່ຕ້ອງການຖັນເພີ່ມເຕີມໃນແຜ່ນງານຂອງເຈົ້າບໍ? ບໍ່ມີບັນຫາ. ຈື່ໄວ້ວ່າຟັງຊັນທີ່ກຳນົດເອງຂອງພວກເຮົາສາມາດປະມວນຜົນຫຼາຍເຊວໃນເວລາດຽວກັນ ແລະ SUM ຂອງ Excel ສາມາດເພີ່ມຄ່າໃນອາເຣໄດ້, ນີ້ແມ່ນສິ່ງທີ່ທ່ານເຮັດ:

    • ສະໜອງຂອບເຂດອ້າງອີງເຖິງ RegExpMatch, ດັ່ງນັ້ນມັນຈຶ່ງສົ່ງຄືນຄ່າ array ຂອງຄ່າ TRUE ແລະ FALSE.
    • ໃຊ້ double negation (--) ເພື່ອບີບບັງຄັບຄ່າໂລຈິກໃຫ້ກັບອັນໜຶ່ງ ແລະສູນ.
    • ເອົາຟັງຊັນ SUM ເພື່ອເພີ່ມ 1's ແລະ 0's ໃນອາເຣຜົນໄດ້ຮັບ.

    =SUM(--RegExpMatch(A5:A9, $A$2))

    ການຈັບຄູ່ Regex ກັບ Ultimate Suite

    ຜູ້ໃຊ້ Ultimate Suite ຂອງພວກເຮົາສາມາດນຳໃຊ້ສີ່ໜ້າວຽກ Regex ທີ່ມີປະສິດທິພາບ ໂດຍບໍ່ຕ້ອງເພີ່ມລະຫັດ VBA ໃສ່ປຶ້ມວຽກຂອງເຂົາເຈົ້າ ເນື່ອງຈາກພວກມັນຖືກລວມເຂົ້າກັນຢ່າງຄ່ອງແຄ້ວໃນ Excel ໃນລະຫວ່າງການຕິດຕັ້ງ add-in. ຟັງຊັນແບບກຳນົດເອງຂອງພວກເຮົາຖືກປະມວນຜົນໂດຍເຄື່ອງຈັກ .NET RegEx ມາດຕະຖານ ແລະຮອງຮັບການສະແດງອອກແບບປົກກະຕິແບບຄລາສສິກເຕັມຮູບແບບ.

    ວິທີໃຊ້ຟັງຊັນ RegexMatch ແບບກຳນົດເອງ

    ສົມມຸດວ່າທ່ານມີ Ultimate Suite ເວີຊັນຫຼ້າສຸດຕິດຕັ້ງແລ້ວ ( 2021.4 ຫຼືຫຼັງຈາກນັ້ນ), ທ່ານສາມາດສ້າງສູດ Regex Match ໃນສອງຂັ້ນຕອນງ່າຍໆ:

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

  • ໃນແຖບ Regex Tools , ໃຫ້ເຮັດສິ່ງຕໍ່ໄປນີ້:
    • ເລືອກ ສະຕຣິງຕົ້ນສະບັບ.
    • ໃສ່ຮູບແບບຂອງທ່ານ.
    • ເລືອກ ການຈັບຄູ່ ທາງເລືອກ.
    • ເພື່ອໃຫ້ຜົນໄດ້ຮັບເປັນສູດ, ບໍ່ແມ່ນຄ່າ, ເລືອກ Insert as a formula check box.
    • ຄລິກທີ່ປຸ່ມ Match .

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

    ໃນຮູບໜ້າຈໍຂ້າງລຸ່ມນີ້, ຟັງຊັນຈະກວດເບິ່ງວ່າສະຕຣິງໃນຖັນ A ມີ 7 ຕົວເລກຫຼືບໍ່. ຕົວເລກຫຼືບໍ່.

    ເຄັດລັບ:

    • The func tion ສາມາດ ແຊກ ໄດ້ໂດຍກົງໃນຕາລາງ ໂດຍຜ່ານກ່ອງໂຕ້ຕອບມາດຕະຖານ Insert Function , ບ່ອນທີ່ມັນຖືກຈັດປະເພດພາຍໃຕ້ AblebitsUDFs .
    • ໂດຍຄ່າເລີ່ມຕົ້ນ, ການສະແດງອອກປົກກະຕິຈະຖືກເພີ່ມໃສ່ສູດ, ແຕ່ທ່ານຍັງສາມາດຮັກສາ ມັນຢູ່ໃນຫ້ອງແຍກຕ່າງຫາກ. ສຳລັບອັນນີ້, ພຽງແຕ່ໃຊ້ການອ້າງອີງເຊລສຳລັບອາກິວເມັນທີ 2.
    • ໂດຍຄ່າເລີ່ມຕົ້ນ, ຟັງຊັນແມ່ນ ຕົວພິມນ້ອຍໃຫຍ່ . ສຳລັບການຈັບຄູ່ຕົວພິມນ້ອຍ, ໃຫ້ໃຊ້ຮູບແບບ (?i).

    ສຳລັບຂໍ້ມູນເພີ່ມເຕີມ, ກະລຸນາເບິ່ງຟັງຊັນ AblebitsRegexMatch.

    ນັ້ນແມ່ນວິທີເຮັດການຈັບຄູ່ການສະແດງຜົນປົກກະຕິໃນ Excel. ຂ້າພະເຈົ້າຂໍຂອບໃຈທ່ານສໍາລັບການອ່ານແລະຫວັງວ່າຈະໄດ້ພົບທ່ານໃນ blog ຂອງພວກເຮົາໃນອາທິດຕໍ່ໄປ! ເວີຊັນທີ່ເຮັດວຽກເຕັມມື້ (ໄຟລ໌ .exe)

    ຖ້າ cntInputRows = input_range.Rows.Count cntInputCols = input_range.Columns.Count ReDim arRes(1 To cntInputRows, 1 To cntInputCols) ສໍາລັບ iInputCurRow = 1 To cntInputRows ສໍາລັບ iInputCurCol = 1 To cntInputCurregurCols .Cells(iInputCurRow, iInputCurCol).Value) ຕໍ່ໄປ ຕໍ່ໄປ RegExpMatch = arRes Exit Function ErrHandl: RegExpMatch = CVERr(xlErrValue) End Function

    ວາງລະຫັດໃສ່ໃນຕົວແກ້ໄຂ VBA, ແລະຟັງຊັນ RegExpMatch ໃໝ່ຂອງເຈົ້າ. ພ້ອມ​ສໍາ​ລັບ​ການ​ນໍາ​ໃຊ້​. ຖ້າທ່ານບໍ່ມີປະສົບການກັບ VBA ຫຼາຍ, ຄູ່ມືນີ້ອາດຈະເປັນປະໂຫຍດ: ວິທີການໃສ່ລະຫັດ VBA ໃນ Excel.

    ຫມາຍເຫດ. ຫຼັງ​ຈາກ​ໃສ່​ລະ​ຫັດ​, ຈື່​ຈໍາ​ທີ່​ຈະ​ບັນ​ທຶກ​ໄຟລ​໌​ຂອງ​ທ່ານ​ເປັນ ປຶ້ມ​ວຽກ​ທີ່​ເປີດ​ໃຊ້​ມະ​ក្រូ (.xlsm​)​.

    RegExpMatch syntax

    ຟັງຊັນ RegExpMatch ກວດເບິ່ງວ່າພາກສ່ວນໃດນຶ່ງຂອງສະຕຣິງຕົ້ນສະບັບກົງກັບການສະແດງຜົນປົກກະຕິ. ຜົນໄດ້ຮັບແມ່ນຄ່າ Boolean: TRUE ຖ້າພົບຢ່າງໜ້ອຍໜຶ່ງຄໍາທີ່ກົງກັນ, FALSE ຖ້າບໍ່ດັ່ງນັ້ນ.

    ຟັງຊັນແບບກຳນົດເອງຂອງພວກເຮົາມີ 3 argument - ຕ້ອງການສອງອັນທຳອິດ ແລະອັນສຸດທ້າຍແມ່ນທາງເລືອກ:

    RegExpMatch(text , pattern, [match_case])

    Where:

    • Text (required) - one or more strings to search in. can be supply as a cell or range reference.
    • ຮູບແບບ (ຕ້ອງການ) - ການສະແດງຜົນປົກກະຕິທີ່ຈະກົງກັນ. ເມື່ອວາງຢູ່ໃນສູດໂດຍກົງ, ຮູບແບບຕ້ອງຖືກໃສ່ໃນວົງຢືມຄູ່.
    • Match_case (ທາງເລືອກ) - ກໍານົດການຈັບຄູ່ປະເພດ. ຖ້າຖືກຕ້ອງ ຫຼືຖືກລະເວັ້ນ (ຄ່າເລີ່ມຕົ້ນ), ການຈັບຄູ່ຕົວພິມນ້ອຍໃຫຍ່ຖືກປະຕິບັດ; ຖ້າ FALSE - ບໍ່ມີຕົວພິມນ້ອຍໃຫຍ່.

    ຟັງຊັນໃຊ້ໄດ້ໃນທຸກລຸ້ນຂອງ Excel 365, Excel 2021, Excel 2019, Excel 2016, Excel 2013 ແລະ Excel 2010.

    3 ຢ່າງທີ່ທ່ານ ຄວນຈະຮູ້ກ່ຽວກັບ RegExpMatch

    ກ່ອນທີ່ພວກເຮົາຈະເຂົ້າຫາການຄໍານວນພາກປະຕິບັດ, ກະລຸນາສັງເກດຈຸດຕໍ່ໄປນີ້ທີ່ຊີ້ແຈງເຕັກນິກບາງຢ່າງ:

    1. ຟັງຊັນສາມາດປະມວນຜົນ ເຊລດຽວ ຫຼື ໄລຍະຂອງເຊລ . ໃນກໍລະນີສຸດທ້າຍ, ຜົນໄດ້ຮັບຈະຖືກສົ່ງຄືນໃນເຊລໃກ້ຄຽງໃນຮູບແບບຂອງ dynamic array, ຫຼື spill range, ດັ່ງທີ່ສະແດງໃນຕົວຢ່າງນີ້.
    2. ໂດຍຄ່າເລີ່ມຕົ້ນ, ຟັງຊັນແມ່ນ ຕົວພິມນ້ອຍໃຫຍ່ . ເພື່ອບໍ່ສົນໃຈຕົວພິມໃຫຍ່ຂໍ້ຄວາມ, ໃຫ້ຕັ້ງອາກິວເມັນ match_case ເປັນ FALSE. ເນື່ອງຈາກຂໍ້ຈໍາກັດຂອງ VBA Regexp, ຮູບແບບທີ່ບໍ່ລະອຽດອ່ອນຕົວພິມນ້ອຍ (?i) ບໍ່ໄດ້ຖືກຮອງຮັບ.
    3. ຖ້າບໍ່ພົບຮູບແບບທີ່ຖືກຕ້ອງ, ຟັງຊັນຈະສົ່ງຄືນ FALSE; ຖ້າ ຮູບແບບບໍ່ຖືກຕ້ອງ , ເປັນ #VALUE! ຄວາມຜິດພາດເກີດຂຶ້ນ.

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

    ສົມມຸດວ່າທ່ານມີເຊລຕ່າງໆ (A5:A9) ທີ່ມີລາຍລະອຽດຕ່າງໆກ່ຽວກັບບາງລາຍການ. ທ່ານຕ້ອງການຮູ້ວ່າຈຸລັງໃດມີ SKUs. ໂດຍສົມມຸດວ່າແຕ່ລະ SKU ປະກອບມີ 2 ໂຕພິມໃຫຍ່, ຂີດຫຍໍ້, ແລະ 3 ຕົວເລກ, ທ່ານສາມາດຈັບຄູ່ພວກມັນໄດ້ໂດຍໃຊ້ສຳນວນຕໍ່ໄປນີ້.

    ຮູບແບບ : \b[A-Z]{2}-\ d{3}\b

    ບ່ອນທີ່ [A-Z]{2} ຫມາຍເຖິງ 2 ຕົວພິມໃຫຍ່ຈາກ A ຫາ Z ແລະ \d{3} ຫມາຍເຖິງ 3 ຕົວເລກຈາກ 0 ຫາ 9. ຕົວອັກສອນ \b ຫມາຍເຖິງຄໍາສັບໃດຫນຶ່ງ ຂອບເຂດ, ຊຶ່ງຫມາຍຄວາມວ່າ SKU ເປັນຄໍາທີ່ແຍກຕ່າງຫາກ, ແລະບໍ່ແມ່ນສ່ວນຫນຶ່ງຂອງສະຕຣິງທີ່ໃຫຍ່ກວ່າເຊັ່ນ: 23-MAR-2022.

    ດ້ວຍຮູບແບບທີ່ສ້າງຂຶ້ນ, ພວກເຮົາສາມາດກ້າວໄປສູ່ການຂຽນສູດໄດ້. ໂດຍພື້ນຖານແລ້ວ, ການໃຊ້ຟັງຊັນທີ່ກໍາຫນົດເອງແມ່ນບໍ່ແຕກຕ່າງຈາກແບບພື້ນເມືອງ. ທັນທີທີ່ທ່ານເລີ່ມພິມສູດ, ຊື່ຂອງຟັງຊັນຈະປາກົດຢູ່ໃນລາຍການທີ່ແນະນໍາໂດຍ Excel's AutoComplete. ແນວໃດກໍ່ຕາມ, ມີບາງອັນໃນ Dynamic Array Excel (Microsoft 365 ແລະ Excel 2021) ແລະ Excel ແບບດັ້ງເດີມ (2019 ແລະເວີຊັນເກົ່າກວ່າ).

    ຈັບຄູ່ສະຕຣິງໃນເຊລດຽວ

    ເພື່ອຈັບຄູ່ສະຕຣິງໃດໜຶ່ງ. ໃນເຊລດຽວ, ອ້າງອີງເຖິງເຊລນັ້ນໃນການໂຕ້ຖຽງທຳອິດ. ອາກິວເມັນທີສອງຄວນມີການສະແດງຜົນປົກກະຕິ.

    =RegExpMatch(A5, "\b[A-Z]{2}-\d{3}\b")

    ຮູບແບບດັ່ງກ່າວຍັງສາມາດຖືກເກັບໄວ້ໃນຕາລາງທີ່ກໍານົດໄວ້ກ່ອນ, ເຊິ່ງຖືກລັອກດ້ວຍການອ້າງອີງຢ່າງແທ້ຈິງ ($A$2):

    =RegExpMatch(A5, $A$2)

    ຫຼັງຈາກໃສ່ສູດໃນຕາລາງທຳອິດ, ທ່ານສາມາດລາກມັນລົງໄປຫາແຖວອື່ນທັງໝົດໄດ້.

    ວິທີນີ້ໃຊ້ໄດ້ຢ່າງສວຍງາມໃນ ທຸກລຸ້ນ Excel .

    ຈັບຄູ່ສະຕຣິງໃນຫຼາຍຕາລາງພ້ອມກັນ

    ເພື່ອຈັບຄູ່ສະຕຣິງຫຼາຍອັນດ້ວຍສູດດຽວ, ປະກອບມີການອ້າງອິງ range ໃນ argument ທໍາອິດ:

    =RegExpMatch(A5:A9, "\b[A-Z]{2}-\d{3}\b")

    ໃນ Excel 365 ແລະ Excel 2021 ທີ່ຮອງຮັບ dynamic arrays, ມັນເຮັດວຽກແບບນີ້ - ທ່ານພິມສູດໃນຕາລາງທໍາອິດ, ກົດ Enter , ແລະສູດອັດຕະໂນມັດ spills ເຂົ້າໄປໃນຈຸລັງຂ້າງລຸ່ມນີ້.

    ໃນ Excel 2019 ແລະກ່ອນຫນ້ານັ້ນ, ມັນ. ພຽງແຕ່ເຮັດວຽກເປັນສູດ CSE array ແບບດັ້ງເດີມ, ເຊິ່ງຖືກໃສ່ຢູ່ໃນຂອບເຂດຂອງຕາລາງແລະສໍາເລັດໂດຍການກົດປຸ່ມ Ctrl + Shift + Enter ຮ່ວມກັນ.

    Regex ເພື່ອຈັບຄູ່ຕົວເລກ

    ເພື່ອຈັບຄູ່ຕົວເລກດຽວຈາກ 0 ຫາ 9, ໃຊ້ຕົວອັກສອນ \d ໃນ regex. ອີງຕາມວຽກງານສະເພາະຂອງທ່ານ, ເພີ່ມຕົວກໍານົດປະລິມານທີ່ເໝາະສົມ ຫຼືສ້າງຮູບແບບທີ່ຊັບຊ້ອນກວ່າ.

    Regex ເພື່ອໃຫ້ກົງກັບຕົວເລກໃດນຶ່ງ

    ເພື່ອຈັບຄູ່ຕົວເລກຂອງຄວາມຍາວໃດກໍ່ຕາມ, ໃຫ້ໃສ່ + quantifier ທັນທີຫຼັງຈາກ / d ຕົວອັກສອນ, ເຊິ່ງບອກວ່າໃຫ້ຊອກຫາຕົວເລກທີ່ມີ 1 ຕົວເລກ ຫຼືຫຼາຍກວ່ານັ້ນ.

    Pattern : \d+

    =RegExpMatch(A5:A9, "\d+")

    Regex ເພື່ອຈັບຄູ່ຕົວເລກຂອງຄວາມຍາວສະເພາະ

    ຖ້າເປົ້າໝາຍຂອງທ່ານແມ່ນເພື່ອຈັບຄູ່ຄ່າຕົວເລກທີ່ມີຕົວເລກທີ່ແນ່ນອນ, ຫຼັງຈາກນັ້ນໃຫ້ໃຊ້ \d ພ້ອມກັບຕົວກໍານົດປະລິມານທີ່ເຫມາະສົມ.

    ຕົວຢ່າງ, ເພື່ອໃຫ້ກົງກັບຕົວເລກໃບແຈ້ງໜີ້ທີ່ປະກອບດ້ວຍ 7 ຕົວເລກແທ້, ທ່ານໃຊ້ \d{7}. ຢ່າງໃດກໍ່ຕາມ, ກະລຸນາຈື່ໄວ້ວ່າມັນຈະກົງກັບ 7ຕາມທີ່ຄາດໄວ້:

    ໝາຍເຫດ:

    • ລະຫັດສາກົນບໍ່ໄດ້ຖືກກວດສອບ, ດັ່ງນັ້ນພວກມັນອາດມີ ຫຼືອາດຈະບໍ່ມີຢູ່.
    • ໃນສຳນວນປົກກະຕິ, \s ຫຍໍ້ມາຈາກຕົວອັກສອນທີ່ມີຊ່ອງຫວ່າງ ເຊັ່ນ: ຊ່ອງຫວ່າງ, ແຖບ, ການສົ່ງຄືນຄ່າຂົນສົ່ງ ຫຼືແຖວໃໝ່. ເພື່ອອະນຸຍາດໃຫ້ມີຊ່ອງຫວ່າງເທົ່ານັ້ນ, ໃຫ້ໃຊ້ [-\. ] ແທນ [-\.\s].
    • Regex to NOT match character

      ເພື່ອຊອກຫາສະຕຣິງທີ່ບໍ່ມີຕົວອັກສອນທີ່ແນ່ນອນ, ທ່ານສາມາດນໍາໃຊ້ຫ້ອງຮຽນຕົວອັກສອນທີ່ຖືກລົບ [^] ທີ່ກົງກັນ. ສິ່ງໃດທີ່ບໍ່ຢູ່ໃນວົງເລັບ. ຕົວຢ່າງ:

      • [^13] ຈະກົງກັບຕົວອັກສອນດຽວທີ່ບໍ່ແມ່ນ 1 ຫຼື 3.
      • [^1-3] ຈະກົງກັບຕົວອັກສອນດຽວທີ່ບໍ່ແມ່ນ 1, 2 ຫຼື 3 (ເຊັ່ນ: ຕົວເລກໃດໆກໍຕາມຈາກ 1 ຫາ 3).

      ໃນລາຍການເບີໂທລະສັບ, ສົມມຸດວ່າທ່ານຕ້ອງການຊອກຫາຕົວເລກທີ່ບໍ່ມີລະຫັດປະເທດ. ຈົ່ງຈື່ໄວ້ວ່າລະຫັດສາກົນໃດໆກໍຕາມປະກອບມີເຄື່ອງໝາຍ +, ທ່ານສາມາດໃຊ້ຕົວອັກສອນ [^\+] ເພື່ອຊອກຫາສະຕຣິງທີ່ບໍ່ມີເຄື່ອງໝາຍບວກ. ມັນເປັນສິ່ງສໍາຄັນທີ່ຈະຮັບຮູ້ວ່າການສະແດງອອກຂ້າງເທິງນີ້ກົງກັບຕົວອັກສອນດຽວທີ່ບໍ່ແມ່ນ +. ເນື່ອງຈາກວ່າເບີໂທລະສັບສາມາດຢູ່ບ່ອນໃດກໍໄດ້ໃນສະຕຣິງ, ບໍ່ຈໍາເປັນໃນຕອນເລີ່ມຕົ້ນ, * quantifier ຈະຖືກເພີ່ມເຂົ້າໃນການກວດສອບແຕ່ລະຕົວອັກສອນຕໍ່ໄປ. ການເລີ່ມຕົ້ນ ^ ​​ແລະສິ້ນສຸດ $ anchors ຮັບປະກັນວ່າ string ທັງຫມົດໄດ້ຖືກປຸງແຕ່ງ. ດັ່ງນັ້ນ, ພວກເຮົາຈຶ່ງໄດ້ຮັບຕົວສະແດງປົກກະຕິລຸ່ມນີ້ທີ່ບອກວ່າ "ບໍ່ກົງກັບຕົວອັກສອນ + ໃນຕໍາແໜ່ງໃດນຶ່ງໃນສະຕຣິງ".

      ຮູບແບບ :^[^\+]*$

      =RegExpMatch(A5, "^[^\+]*$")

      Regex to NOT match string

      ເຖິງແມ່ນວ່າຈະບໍ່ມີ syntax ຂອງ expression ປົກກະຕິພິເສດສຳລັບ ບໍ່ກົງກັບສະຕຣິງສະເພາະໃດໜຶ່ງ, ທ່ານສາມາດຈຳລອງພຶດຕິກຳນີ້ໂດຍການໃຊ້ການເບິ່ງທາງລົບ.

      ສົມມຸດວ່າທ່ານຕ້ອງການຊອກຫາສະຕຣິງທີ່ ບໍ່ມີ ຄຳວ່າ "ນາວ". ການສະແດງອອກແບບປົກກະຕິນີ້ຈະໃຊ້ໄດ້ຜົນ:

      ຮູບແບບ : ^((?!lemons).)*$

      ແນ່ນອນ, ຕ້ອງມີຄໍາອະທິບາຍບາງອັນຢູ່ບ່ອນນີ້. ການເບິ່ງທາງລົບ (?! ໝາກນາວ) ເບິ່ງໄປທາງຂວາເພື່ອເບິ່ງວ່າບໍ່ມີຄໍາວ່າ "ນາວ" ຢູ່ຂ້າງຫນ້າ. ຖ້າ "ນາວ" ບໍ່ຢູ່ທີ່ນັ້ນ, ຈຸດທີ່ກົງກັບຕົວລະຄອນໃດ ໜຶ່ງ ຍົກເວັ້ນເສັ້ນ. ການສະແດງຜົນຂ້າງເທິງນີ້ປະຕິບັດພຽງແຕ່ຫນຶ່ງການກວດສອບ, ແລະ * quantifier ເຮັດຊ້ໍາເປັນສູນຫຼືຫຼາຍຄັ້ງ, ຈາກຈຸດເລີ່ມຕົ້ນຂອງ string ຍຶດໂດຍ ^ ຈົນເຖິງທ້າຍຂອງ string ຍຶດໂດຍ $.

      ເພື່ອບໍ່ສົນໃຈຕົວພິມຂໍ້ຄວາມ, ພວກເຮົາຕັ້ງອາກິວເມັນທີ 3 ເປັນ FALSE ເພື່ອເຮັດໃຫ້ຟັງຊັນຂອງພວກເຮົາບໍ່ມີຕົວພິມນ້ອຍໃຫຍ່:

      =RegExpMatch(A5, $A$2, FALSE)

      ເຄັດລັບ ແລະບັນທຶກ:

      • regex ຂ້າງເທິງນີ້ໃຊ້ໄດ້ກັບ single-line strings ເທົ່ານັ້ນ. ໃນກໍລະນີຂອງສາຍສະຕຣິງ milti, ຕົວອັກສອນ ^ ແລະ $ ກົງກັບຈຸດເລີ່ມຕົ້ນແລະຈຸດສິ້ນສຸດຂອງແຕ່ລະແຖວແທນທີ່ຈະເປັນຈຸດເລີ່ມຕົ້ນແລະສິ້ນສຸດຂອງສາຍເຂົ້າ, ດັ່ງນັ້ນ regex ພຽງແຕ່ຊອກຫາຢູ່ໃນແຖວທໍາອິດ.
      • ເພື່ອຈັບຄູ່ສະຕຣິງທີ່ ບໍ່ເລີ່ມຕົ້ນ ດ້ວຍຂໍ້ຄວາມສະເພາະ , ໃຫ້ໃຊ້ສຳນວນປົກກະຕິເຊັ່ນ ^(?!lemons).*$
      • ເພື່ອຈັບຄູ່ສະຕຣິງທີ່ ບໍ່ສິ້ນສຸດ ກັບຂໍ້ຄວາມທີ່ແນ່ນອນ , ປະກອບຍຶດສະຕຣິງທ້າຍເຂົ້າໄປໃນຮູບແບບການຄົ້ນຫາ: ^((?!lemons$).)*$

      ການຈັບຄູ່ຕົວພິມນ້ອຍໃຫຍ່

      ໃນການສະແດງຜົນປົກກະຕິແບບຄລາສສິກ, ມີຮູບແບບພິເສດສໍາລັບ case-insensitive matching (?i), ເຊິ່ງບໍ່ຮອງຮັບໃນ VBA RegExp. ເພື່ອ​ເອົາ​ຊະ​ນະ​ຂໍ້​ຈໍາ​ກັດ​ນີ້​, ການ​ທໍາ​ງານ​ຂອງ​ພວກ​ເຮົາ​ຮັບ​ເອົາ​ການ​ໂຕ້​ຖຽງ​ທາງ​ເລືອກ​ທີ 3 ທີ່​ມີ​ຊື່ match_case . ເພື່ອເຮັດການຈັບຄູ່ກໍລະນີທີ່ບໍ່ລະອຽດອ່ອນ, ພຽງແຕ່ຕັ້ງມັນເປັນ FALSE.

      ໃຫ້ເວົ້າວ່າທ່ານຕ້ອງການລະບຸວັນທີເຊັ່ນ: 1-Mar-22 ຫຼື 01-MAR-2022. ເພື່ອໃຫ້ກົງກັບຮູບແບບ dd-mmm-yyyy ແລະ d-mmm-yy , ພວກເຮົາກຳລັງໃຊ້ການສະແດງຜົນປົກກະຕິຕໍ່ໄປນີ້.

      ຮູບແບບ : \b\d{1,2}-(ມັງກອນຕົວເລກຢູ່ບ່ອນໃດກໍໄດ້ໃນສະຕຣິງລວມທັງຕົວເລກ 10 ຕົວເລກ ຫຼື 100 ຕົວເລກ. ຖ້ານີ້ບໍ່ແມ່ນສິ່ງທີ່ທ່ານກໍາລັງຊອກຫາ, ໃຫ້ໃສ່ຄຳວ່າ boundary \b ທັງສອງດ້ານ.

      Pattern : \b\d{7}\b

      =RegExpMatch(A5:A9, "\b\d{7}\b")

      Regex ເພື່ອຈັບຄູ່ເບີໂທລະສັບ

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

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

      ຮູບແບບ: (\(\d{3}\)

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