เนื้อหา
งานที่ใช้เวลานานและน่าหงุดหงิดที่สุดเมื่อทำงานกับข้อความใน Excel คือ การแยกวิเคราะห์ – แยกวิเคราะห์ “โจ๊ก” ที่เป็นตัวอักษรและตัวเลขเป็นส่วนประกอบและแยกชิ้นส่วนที่เราต้องการจากมัน ตัวอย่างเช่น:
- แยกรหัสไปรษณีย์ออกจากที่อยู่ (จะดีถ้ารหัสไปรษณีย์อยู่ต้นเสมอ แต่ถ้าไม่ใช่ล่ะ)
- ค้นหาหมายเลขและวันที่ของใบแจ้งหนี้จากคำอธิบายการชำระเงินในใบแจ้งยอดธนาคาร
- การแยก TIN จากคำอธิบายที่หลากหลายของบริษัทในรายชื่อคู่สัญญา
- ค้นหาหมายเลขรถหรือหมายเลขบทความในคำอธิบาย ฯลฯ
โดยปกติ ในกรณีเช่นนี้ หลังจากใช้เวลาครึ่งชั่วโมงของการเลือกข้อความที่น่าเบื่อด้วยตนเอง ความคิดจะเริ่มเข้ามาในความคิดเพื่อทำให้กระบวนการนี้เป็นไปโดยอัตโนมัติ (โดยเฉพาะอย่างยิ่งหากมีข้อมูลจำนวนมาก) มีวิธีแก้ปัญหาหลายประการและระดับความซับซ้อนและประสิทธิภาพต่างกันไป:
- ใช้ ฟังก์ชันข้อความ Excel ในตัว เพื่อค้นหาข้อความตัดกาว: เลฟซิมวี (ซ้าย), ขวา (ขวา), พีเอสทีอาร์ (กลาง), STEPIT (ต่อ) และสิ่งที่คล้ายคลึงกัน, รวมกัน (ข้อต่อ), EXACT (ที่แน่นอน) เป็นต้น วิธีนี้เป็นวิธีที่ดีหากมีตรรกะที่ชัดเจนในข้อความ (เช่น ดัชนีจะอยู่ที่จุดเริ่มต้นของที่อยู่เสมอ) มิฉะนั้น สูตรจะซับซ้อนมากขึ้น และในบางครั้ง ก็ยังมาถึงสูตรอาร์เรย์ ซึ่งทำให้ตารางขนาดใหญ่ทำงานช้าลงอย่างมาก
- การใช้ เช่นตัวดำเนินการความคล้ายคลึงของข้อความ จาก Visual Basic ที่รวมอยู่ในฟังก์ชันแมโครแบบกำหนดเอง สิ่งนี้ทำให้คุณสามารถใช้การค้นหาที่ยืดหยุ่นมากขึ้นโดยใช้อักขระตัวแทน (*, #,?, ฯลฯ ) น่าเสียดายที่เครื่องมือนี้ไม่สามารถแยกสตริงย่อยที่ต้องการออกจากข้อความได้ - ให้ตรวจสอบเฉพาะว่ามีอยู่ในนั้นหรือไม่
นอกเหนือจากข้างต้น ยังมีอีกแนวทางหนึ่งที่เป็นที่รู้จักกันดีในกลุ่มโปรแกรมเมอร์มืออาชีพ นักพัฒนาเว็บ และเทคโนโลยีอื่นๆ ซึ่งก็คือ นิพจน์ทั่วไป (นิพจน์ทั่วไป = RegExp = “regexps” = “ปกติ”) พูดง่ายๆ ว่า RegExp เป็นภาษาที่ใช้อักขระพิเศษและกฎเพื่อค้นหาสตริงย่อยที่จำเป็นในข้อความ แยกหรือแทนที่ด้วยข้อความอื่น. นิพจน์ทั่วไปเป็นเครื่องมือที่ทรงพลังและสวยงาม ซึ่งเหนือกว่าวิธีอื่นๆ ทั้งหมดในการทำงานกับข้อความตามลำดับความสำคัญ ภาษาโปรแกรมหลายภาษา (C#, PHP, Perl, JavaScript…) และโปรแกรมแก้ไขข้อความ (Word, Notepad++…) รองรับนิพจน์ทั่วไป
น่าเสียดายที่ Microsoft Excel ไม่มีการสนับสนุน RegExp แบบสำเร็จรูป แต่สามารถแก้ไขได้ด้วย VBA เปิด Visual Basic Editor จากแท็บ ผู้พัฒนา (ผู้พัฒนา) หรือแป้นพิมพ์ลัด อื่น ๆ+F11. จากนั้นแทรกโมดูลใหม่ผ่านเมนู แทรก – โมดูล และคัดลอกข้อความของฟังก์ชันมาโครต่อไปนี้ที่นั่น:
ฟังก์ชันสาธารณะ RegExpExtract (ข้อความเป็นสตริง รูปแบบเป็นสตริง รายการเสริมเป็นจำนวนเต็ม = 1) เป็นสตริงเมื่อเกิดข้อผิดพลาด GoTo ErrHandl ตั้งค่า regex = CreateObject("VBScript.RegExp") regex.Pattern = รูปแบบ regex.Global = True หาก regex.Test (ข้อความ) จากนั้นตั้งค่าการแข่งขัน = regex.Execute(Text) RegExpExtract =match.Item(Item - 1) Exit Function End If ErrHandl: RegExpExtract = CVErr(xlErrValue) End Function
ขณะนี้ เราสามารถปิด Visual Basic Editor และกลับไปที่ Excel เพื่อลองใช้คุณลักษณะใหม่ของเราได้แล้ว ไวยากรณ์ของมันคือต่อไปนี้:
=RegExpExtract ( Txt ; รูปแบบ ; รายการ )
ที่ไหน
- TXT – เซลล์ที่มีข้อความที่เรากำลังตรวจสอบและเราต้องการแยกสตริงย่อยที่เราต้องการ
- Belt hold – หน้ากาก (รูปแบบ) สำหรับการค้นหาสตริงย่อย
- ชิ้น – หมายเลขลำดับของสตริงย่อยที่จะแยกออกมา หากมีหลายรายการ (หากไม่ได้ระบุ การแสดงครั้งแรกจะปรากฏขึ้น)
สิ่งที่น่าสนใจที่สุดคือรูปแบบ - สตริงเทมเพลตของอักขระพิเศษ "ในภาษา" ของ RegExp ซึ่งระบุว่าเราต้องการค้นหาอะไรและที่ไหน ต่อไปนี้คือสิ่งที่พื้นฐานที่สุดในการเริ่มต้น:
แบบแผน | รายละเอียด |
. | ที่ง่ายที่สุดคือจุด ตรงกับอักขระใด ๆ ในรูปแบบที่ตำแหน่งที่ระบุ |
s | อักขระใดๆ ที่ดูเหมือนช่องว่าง (ช่องว่าง แท็บ หรือตัวแบ่งบรรทัด) |
S | แอนตี้-แวเรียนท์ของรูปแบบก่อนหน้านี้ กล่าวคือ อักขระที่ไม่ใช่ช่องว่าง |
d | หมายเลขใดก็ได้ |
D | แอนตี้-แวเรียนท์ของอันก่อน นั่นคือ ใดๆ ที่ไม่ใช่ตัวเลข |
w | อักขระละติน (AZ) ตัวเลขหรือขีดล่าง |
W | แอนตี้-แวเรียนท์จากอันที่แล้ว นั่นคือ ไม่ใช่ละติน ไม่ใช่ตัวเลข และไม่ใช่ขีดล่าง |
[อักขระ] | ในวงเล็บเหลี่ยม คุณสามารถระบุอักขระได้ตั้งแต่หนึ่งตัวขึ้นไปที่ตำแหน่งที่ระบุในข้อความ ตัวอย่างเช่น ศิลปะ จะตรงกับคำใด ๆ : ตาราง or เก้าอี้. คุณยังระบุอักขระไม่ได้ แต่ตั้งค่าให้เป็นช่วงที่คั่นด้วยเครื่องหมายยัติภังค์ เช่น แทนที่จะเป็น [ABCDEF] เขียน [เอเอฟ]. หรือแทน [4567] แนะนำ [-4 7]. ตัวอย่างเช่น หากต้องการกำหนดอักขระซีริลลิกทั้งหมด คุณสามารถใช้ template [a-yaA-ยาโยโย่]. |
[^อักขระ] | หากหลังวงเล็บเหลี่ยมเปิดเพิ่มสัญลักษณ์ "ฝา" ^จากนั้นชุดจะได้รับความหมายที่ตรงกันข้าม - ที่ตำแหน่งที่ระบุในข้อความจะอนุญาตให้ใช้อักขระทั้งหมดยกเว้นที่ระบุไว้ ใช่ แม่แบบ [^ЖМ]อุต จะหา เส้นทาง or สสาร or ลืมแต่ไม่ น่ากลัว or ความกล้าหาญ, เช่น. |
| | ตัวดำเนินการบูลีน OR (หรือ) เพื่อตรวจสอบเกณฑ์ใด ๆ ที่ระบุ ตัวอย่างเช่น (กับพฤ|sแม้แต่ | ใบแจ้งหนี้) จะค้นหาข้อความสำหรับคำใด ๆ ที่ระบุ โดยปกติ ชุดตัวเลือกจะอยู่ในวงเล็บ |
^ | จุดเริ่มต้นของบรรทัด |
$ | ปลายสาย |
b | จบคำ |
หากเรากำลังมองหาตัวอักษรจำนวนหนึ่ง เช่น รหัสไปรษณีย์หกหลักหรือรหัสผลิตภัณฑ์ตัวอักษรสามตัวทั้งหมด เราก็มาช่วยชีวิต ปริมาณ or ปริมาณ เป็นนิพจน์พิเศษที่ระบุจำนวนอักขระที่จะค้นหา Quantifiers ถูกนำไปใช้กับตัวละครที่อยู่ข้างหน้า:
ควอนเตอร์ | รายละเอียด |
? | ศูนย์หรือหนึ่งเหตุการณ์ ตัวอย่างเช่น .? จะหมายถึงอักขระตัวใดตัวหนึ่งหรือไม่มีอยู่ |
+ | หนึ่งรายการขึ้นไป ตัวอย่างเช่น d+ หมายถึงจำนวนหลักใดๆ (เช่น ตัวเลขใดๆ ระหว่าง 0 ถึงอนันต์) |
* | เกิดขึ้นเป็นศูนย์หรือมากกว่านั้น กล่าวคือ ปริมาณใดๆ ดังนั้น s* หมายถึงจำนวนช่องว่างหรือไม่มีช่องว่าง |
{จำนวน} or {number1,number2} | หากคุณต้องการระบุจำนวนครั้งที่กำหนดไว้อย่างเคร่งครัด ให้ระบุในวงเล็บปีกกา ตัวอย่างเช่น ง{6} หมายถึงหกหลักอย่างเคร่งครัดและรูปแบบ ซ{2,5} – สองถึงห้าช่องว่าง |
ตอนนี้ มาดูส่วนที่น่าสนใจที่สุดกันดีกว่า – การวิเคราะห์การใช้งานฟังก์ชันที่สร้างขึ้นและสิ่งที่เราเรียนรู้เกี่ยวกับรูปแบบจากตัวอย่างที่ใช้งานได้จริงจากชีวิต
การแยกตัวเลขออกจากข้อความ
ในการเริ่มต้น มาวิเคราะห์กรณีง่ายๆ – คุณต้องแยกตัวเลขแรกจากโจ๊กที่เป็นตัวอักษรและตัวเลข เช่น กำลังไฟของเครื่องสำรองไฟจากรายการราคา:
ตรรกะที่อยู่เบื้องหลังนิพจน์ทั่วไปนั้นง่ายมาก: d หมายถึงตัวเลขใด ๆ และปริมาณ + บอกว่าจำนวนของพวกเขาควรเป็นหนึ่งหรือมากกว่า จำเป็นต้องใช้เครื่องหมายลบคู่ที่ด้านหน้าของฟังก์ชันเพื่อ "ในทันที" เพื่อแปลงอักขระที่แยกออกมาเป็นตัวเลขเต็มจากตัวเลขเป็นข้อความ
รหัสไปรษณีย์
เมื่อมองแวบแรก ทุกอย่างเรียบง่ายที่นี่ เรากำลังมองหาตัวเลขหกหลักติดต่อกัน เราใช้อักขระพิเศษ d สำหรับตัวเลขและปริมาณ 6 {} สำหรับจำนวนตัวอักษร:
อย่างไรก็ตาม สถานการณ์เป็นไปได้เมื่อ ทางด้านซ้ายของดัชนีในบรรทัด มีตัวเลขอีกชุดใหญ่เรียงกัน (หมายเลขโทรศัพท์ TIN บัญชีธนาคาร ฯลฯ) จากนั้นฤดูกาลปกติของเราจะดึง 6 ตัวแรกออกมา ตัวเลขจากมัน กล่าวคือ จะทำงานไม่ถูกต้อง:
เพื่อป้องกันไม่ให้สิ่งนี้เกิดขึ้น เราจำเป็นต้องเพิ่มตัวแก้ไขรอบขอบของนิพจน์ทั่วไปของเรา b หมายถึงการสิ้นสุดของคำ สิ่งนี้จะทำให้ Excel เข้าใจได้ชัดเจนว่าส่วนย่อย (ดัชนี) ที่เราต้องการควรเป็นคำที่แยกจากกัน ไม่ใช่ส่วนหนึ่งของส่วนอื่น (หมายเลขโทรศัพท์):
เบอร์โทรศัพท์
ปัญหาในการค้นหาหมายเลขโทรศัพท์ในข้อความคือมีตัวเลือกมากมายในการเขียนตัวเลข ทั้งแบบมีขีดกลางและไม่มีขีดกลาง เว้นวรรค มีหรือไม่มีรหัสภูมิภาคในวงเล็บ เป็นต้น ดังนั้น ในความคิดของฉัน มันง่ายกว่าที่จะ ขั้นแรกให้ล้างอักขระเหล่านี้ทั้งหมดออกจากข้อความต้นฉบับโดยใช้ฟังก์ชันที่ซ้อนกันหลายรายการ ทดแทน (ทดแทน)ให้เกาะติดกันเป็นก้อนเดียว แล้วจึงรวมเป็นปึกแผ่น ง{11} ดึงออกมา 11 หลักในแถว:
ไอที
ซับซ้อนกว่านี้เล็กน้อย เนื่องจาก TIN (ในประเทศของเรา) อาจเป็นตัวเลข 10 หลัก (สำหรับนิติบุคคล) หรือ 12 หลัก (สำหรับบุคคลธรรมดา) หากคุณไม่พบข้อบกพร่องโดยเฉพาะก็ค่อนข้างเป็นไปได้ที่จะพอใจกับปกติ ง{10,12}แต่พูดอย่างเคร่งครัดมันจะดึงตัวเลขทั้งหมดตั้งแต่ 10 ถึง 12 ตัวอักษรนั่นคือและป้อน 11 หลักผิดพลาด มันจะถูกต้องกว่าถ้าใช้สองรูปแบบที่เชื่อมต่อโดยตัวดำเนินการ OR แบบลอจิคัล | (แถบแนวตั้ง):
โปรดทราบว่าในข้อความค้นหา เราจะค้นหาตัวเลข 12 บิตก่อน จากนั้นจึงค้นหาเฉพาะตัวเลข 10 บิตเท่านั้น หากเราเขียนนิพจน์ทั่วไปของเราในทางกลับกัน มันจะดึงออกมาสำหรับทุกคน แม้กระทั่ง TIN 12 บิตแบบยาว เฉพาะ 10 อักขระแรกเท่านั้น นั่นคือ หลังจากทริกเกอร์เงื่อนไขแรกแล้ว การตรวจสอบเพิ่มเติมจะไม่ดำเนินการอีกต่อไป:
นี่คือความแตกต่างพื้นฐานระหว่างตัวดำเนินการ | จากฟังก์ชันลอจิกมาตรฐานของ excel OR (หรือ)โดยที่การจัดเรียงอาร์กิวเมนต์ใหม่จะไม่เปลี่ยนแปลงผลลัพธ์
SKU ของผลิตภัณฑ์
ในหลายบริษัท ตัวระบุที่ไม่ซ้ำกันถูกกำหนดให้กับสินค้าและบริการ เช่น บทความ รหัส SAP SKU ฯลฯ หากมีเหตุผลในสัญกรณ์ ก็สามารถดึงออกจากข้อความได้อย่างง่ายดายโดยใช้นิพจน์ทั่วไป ตัวอย่างเช่น หากเราทราบว่าบทความของเราประกอบด้วยตัวอักษรภาษาอังกฤษตัวพิมพ์ใหญ่สามตัว ยัติภังค์และตัวเลขสามหลักถัดมา:
ตรรกะเบื้องหลังเทมเพลตนั้นเรียบง่าย [แอริโซนา] – หมายถึงอักษรตัวพิมพ์ใหญ่ใดๆ ของอักษรละติน ตัวระบุถัดไป 3 {} บอกว่ามันเป็นสิ่งสำคัญสำหรับเราที่มีตัวอักษรดังกล่าวสามตัว หลังยัติภังค์เรารอเลขสามตัวจึงบวกต่อท้าย ง{3}
จำนวนเงินสด
ในทำนองเดียวกันกับย่อหน้าก่อนหน้า คุณสามารถดึงราคา (ต้นทุน, ภาษีมูลค่าเพิ่ม …) ออกจากคำอธิบายสินค้าได้ ตัวอย่างเช่น หากระบุจำนวนเงินด้วยยัติภังค์ ให้ทำดังนี้
แบบแผน d ด้วยปริมาณ + ค้นหาตัวเลขใด ๆ จนถึงขีดกลางและ ง{2} จะมองหาเพนนี (สองหลัก) หลังจากนั้น
หากคุณต้องการแยกไม่ใช่ราคา แต่เป็นภาษีมูลค่าเพิ่ม คุณสามารถใช้อาร์กิวเมนต์ทางเลือกที่สามของฟังก์ชัน RegExpExtract ซึ่งระบุหมายเลขลำดับขององค์ประกอบที่จะแยกได้ และแน่นอน คุณสามารถเปลี่ยนฟังก์ชันได้ ทดแทน (ทดแทน) ในผลลัพธ์ ให้ใส่ยัติภังค์กับตัวคั่นทศนิยมมาตรฐาน และเพิ่มเครื่องหมายลบสองครั้งที่จุดเริ่มต้น เพื่อให้ Excel ตีความ VAT ที่พบเป็นตัวเลขปกติ:
ป้ายทะเบียนรถ
หากคุณไม่ได้ใช้ยานพาหนะพิเศษ รถพ่วง และรถจักรยานยนต์อื่นๆ หมายเลขรถมาตรฐานจะถูกแยกวิเคราะห์ตามหลักการ “ตัวอักษร – ตัวเลขสามตัว – ตัวอักษรสองตัว – รหัสภูมิภาค” นอกจากนี้ รหัสภูมิภาคอาจเป็นตัวเลข 2 หรือ 3 หลักก็ได้ และจะใช้เฉพาะรหัสที่มีลักษณะคล้ายกับตัวอักษรละตินเท่านั้นที่เป็นตัวอักษร ดังนั้นนิพจน์ทั่วไปต่อไปนี้จะช่วยเราดึงตัวเลขออกจากข้อความ:
เวลา
หากต้องการแยกเวลาในรูปแบบ HH:MM นิพจน์ทั่วไปต่อไปนี้จะเหมาะสม:
หลังจากเศษลำไส้ [0-5]ดเนื่องจากง่ายต่อการเข้าใจ จึงตั้งค่าตัวเลขใดๆ ในช่วง 00-59 ก่อนโคลอนในวงเล็บ รูปแบบสองรูปแบบทำงาน โดยคั่นด้วยตรรกะ OR (ไพพ์):
- [0-1]ด – ตัวเลขใดๆ ในช่วง 00-19
- 2[0-3] – ตัวเลขใดๆ ในช่วง 20-23
เพื่อให้ได้ผลลัพธ์ คุณสามารถใช้ฟังก์ชัน Excel มาตรฐานเพิ่มเติมได้ เวลา (ทีม)เพื่อแปลงเป็นรูปแบบเวลาที่โปรแกรมเข้าใจได้และเหมาะสมกับการคำนวณต่อไป
ตรวจสอบรหัสผ่าน
สมมติว่าเราต้องตรวจสอบรายการรหัสผ่านที่ผู้ใช้ประดิษฐ์ขึ้นเพื่อความถูกต้อง ตามกฎของเรา รหัสผ่านสามารถมีได้เฉพาะตัวอักษรภาษาอังกฤษ (ตัวพิมพ์เล็กหรือตัวพิมพ์ใหญ่) และตัวเลขเท่านั้น ไม่อนุญาตให้เว้นวรรค ขีดล่าง และเครื่องหมายวรรคตอนอื่นๆ
การตรวจสอบสามารถจัดระเบียบได้โดยใช้นิพจน์ทั่วไปอย่างง่ายต่อไปนี้:
อันที่จริงด้วยรูปแบบดังกล่าว เราต้องการให้ระหว่างจุดเริ่มต้น (^) และสิ้นสุด ($) ในข้อความของเรามีเพียงอักขระจากชุดที่กำหนดในวงเล็บเหลี่ยม หากคุณต้องตรวจสอบความยาวของรหัสผ่านด้วย (เช่น อย่างน้อย 6 อักขระ) ให้ระบุ quantifier + สามารถแทนที่ด้วยช่วงเวลา “หกหรือมากกว่า” ในรูปแบบ {6}:
เมืองจากที่อยู่
สมมติว่าเราต้องดึงเมืองออกจากแถบที่อยู่ โปรแกรมปกติจะช่วยแยกข้อความจาก "g" ไปที่เครื่องหมายจุลภาคถัดไป:
มาดูรูปแบบนี้กันดีกว่า
หากคุณได้อ่านข้อความข้างต้น แสดงว่าคุณเข้าใจแล้วว่าอักขระบางตัวในนิพจน์ทั่วไป (จุด เครื่องหมายดอกจัน เครื่องหมายดอลลาร์ ฯลฯ) มีความหมายพิเศษ หากคุณต้องการค้นหาอักขระเหล่านี้ด้วยตัวของมันเอง อักขระเหล่านี้จะถูกนำหน้าด้วยแบ็กสแลช (บางครั้งเรียกว่า การป้องกัน). ดังนั้นเมื่อค้นหาชิ้นส่วน “g” เราต้องเขียนด้วยนิพจน์ทั่วไป นาย. หากเรากำลังมองหาข้อดีอยู่แล้วล่ะก็ + เป็นต้น
อักขระ XNUMX ตัวถัดไปในเทมเพลตของเรา ได้แก่ จุดและดอกจันแสดงปริมาณ ย่อมาจากอักขระจำนวนเท่าใดก็ได้ เช่น ชื่อเมืองใดๆ
มีเครื่องหมายจุลภาคที่ส่วนท้ายของเทมเพลต เนื่องจากเรากำลังมองหาข้อความจาก "g" ไปที่เครื่องหมายจุลภาค แต่อาจมีเครื่องหมายจุลภาคหลายตัวในข้อความใช่ไหม ไม่เพียงแค่หลังเมืองเท่านั้น แต่ยังรวมถึงหลังถนน บ้าน ฯลฯ ด้วย คำขอของเราจะหยุดเพื่อใคร? นั่นคือสิ่งที่เครื่องหมายคำถามมีไว้สำหรับ หากไม่มีนิพจน์ทั่วไปของเราจะดึงสตริงที่ยาวที่สุดออกมา:
ในแง่ของการแสดงออกปกติ รูปแบบดังกล่าวคือ "โลภ" ในการแก้ไขสถานการณ์ จำเป็นต้องใช้เครื่องหมายคำถาม - ทำให้ตัวระบุปริมาณหลังจากนั้นจะยืน "ตระหนี่" - และข้อความค้นหาของเราจะใช้ข้อความจนถึงเครื่องหมายจุลภาคตัวแรกหลังจาก "g" เท่านั้น:
ชื่อไฟล์จากเส้นทางแบบเต็ม
สถานการณ์ทั่วไปอีกอย่างหนึ่งคือการดึงชื่อไฟล์ออกจากเส้นทางแบบเต็ม นิพจน์ทั่วไปอย่างง่ายของแบบฟอร์มจะช่วยได้ที่นี่:
เคล็ดลับของที่นี่คือ แท้จริงแล้วการค้นหาเกิดขึ้นในทิศทางตรงกันข้าม - จากจุดสิ้นสุดไปยังจุดเริ่มต้น เพราะที่ส่วนท้ายของเทมเพลตของเราคือ $และเรากำลังมองหาทุกอย่างก่อนที่จะถึงแบ็กสแลชแรกจากทางขวา แบ็กสแลชเป็นอักขระหลีก เช่นเดียวกับจุดในตัวอย่างก่อนหน้า
PS
“ในตอนท้าย” ฉันต้องการชี้แจงว่าทั้งหมดข้างต้นเป็นเพียงส่วนเล็กๆ ของความเป็นไปได้ทั้งหมดที่นิพจน์ทั่วไปมีให้ มีอักขระและกฎพิเศษมากมายสำหรับการใช้งาน และมีการเขียนหนังสือทั้งเล่มในหัวข้อนี้ (ฉันขอแนะนำอย่างน้อยหนึ่งเล่มสำหรับการเริ่มต้น) การเขียนนิพจน์ทั่วไปเกือบจะเป็นศิลปะ เกือบทุกครั้ง นิพจน์ทั่วไปที่คิดค้นขึ้นสามารถปรับปรุงหรือเสริมได้ ทำให้ดูสวยงามยิ่งขึ้นหรือทำงานกับข้อมูลอินพุตที่หลากหลายขึ้น
ในการวิเคราะห์และแยกวิเคราะห์นิพจน์ทั่วไปของผู้อื่นหรือดีบักของคุณเอง มีบริการออนไลน์ที่สะดวกหลายอย่าง: RegEx101, RegExr และอื่น ๆ
ขออภัย คุณสมบัติบางอย่างของนิพจน์ทั่วไปแบบคลาสสิกไม่ได้รับการสนับสนุนใน VBA (เช่น การค้นหาแบบย้อนกลับหรือคลาส POSIX) และสามารถทำงานกับ Cyrillic ได้ แต่ฉันคิดว่าสิ่งที่มีอยู่เพียงพอสำหรับครั้งแรกที่จะทำให้คุณพอใจ
ถ้าคุณไม่ใช่คนใหม่ในหัวข้อนี้ และคุณมีสิ่งที่จะแบ่งปัน ปล่อยให้นิพจน์ทั่วไปมีประโยชน์เมื่อทำงานใน Excel ในความคิดเห็นด้านล่าง ใจเดียวก็ดี แต่รองเท้าคู่กัน!
- การแทนที่และล้างข้อความด้วยฟังก์ชัน SUBSTITUTE
- ค้นหาและเน้นตัวอักษรละตินในข้อความ
- ค้นหาข้อความที่คล้ายกันที่ใกล้ที่สุด (Ivanov = Ivonov = Ivanof เป็นต้น)