REGEXEXTRACT เป็นฟังก์ชันสำหรับดึงข้อความย่อย (Substring) ที่ตรงกับรูปแบบ Regular Expression ที่กำหนด เหมาะสำหรับการทำ Data Cleaning ขั้นสูงที่ฟังก์ชันจัดการข้อความปกติทำไม่ได้
| อาร์กิวเมนต์ | ชนิด | คำอธิบาย |
|---|---|---|
| text | Text | ข้อความหรือเซลล์ที่ต้องการดึงข้อมูล |
| regular_expression | Text | รูปแบบ Regex ที่ต้องการค้นหา (ต้องอยู่ในเครื่องหมายคำพูด) หากมีกลุ่มวงเล็บ () จะคืนค่าเฉพาะในวงเล็บ ถ้าไม่มีวงเล็บจะคืนเฉพาะส่วนที่ตรงกับรูปแบบทั้งหมด |
ฟังก์ชัน REGEXEXTRACT ช่วยให้คุณดึงส่วนหนึ่งของข้อความออกมาโดยใช้รูปแบบ Regular Expression (Regex) ซึ่งมีความยืดหยุ่นสูงกว่าการใช้ LEFT, RIGHT, MID เหมาะสำหรับดึงข้อมูลที่มีรูปแบบซับซ้อน เช่น อีเมล เบอร์โทรศัพท์ หรือรหัสสินค้า
**💡 Regex Pattern พื้นฐาน:**
• `\d` = ตัวเลข 0-9 (เช่น `\d+` = ตัวเลข 1 ตัวขึ้นไป)
• `[0-9]+` = ตัวเลขตั้งแต่ 1 ตัวขึ้นไป (เหมือน `\d+`)
• `.` = อักขระใด ๆ 1 ตัว
• `+` = 1 ครั้งขึ้นไป | `*` = 0 ครั้งขึ้นไป | `?` = 0 หรือ 1 ครั้ง
• `[abc]` = a หรือ b หรือ c
• `()` = กลุ่มที่ต้องการดึง (capture group) – ถ้าไม่ใส่วงเล็บ จะดึงทั้งรูปแบบ
• `^` = ต้นข้อความ | `$` = ท้ายข้อความ
• `|` = หรือ (เช่น `cat|dog` = cat หรือ dog)
**🔧 Regex Engine:** Google Sheets ใช้ RE2 (Google’s regex engine) ซึ่งคล้าย JavaScript/PCRE แต่ปลอดภัยกว่า (ไม่รองรับ lookahead `(?=)` และ lookbehind `(?<=)` เพื่อความปลอดภัย)
**📌 จำเป้าหมายสำคัญ:**
• REGEXEXTRACT ดึง “เฉพาะครั้งแรก” ที่เจอ ไม่ใช่ทั้งหมด (ถ้าอยากดึงทั้งหมดใช้ REGEXREPLACE หรือ REGEXMATCH)
• ถ้าใส่วงเล็บ `()` จะดึงเฉพาะส่วนในวงเล็บ ไม่ใช่ทั้งรูปแบบ
• ถ้าไม่เจออะไรจะได้ error #N/A (ต้อง IFERROR)
ส่วนตัวผม REGEXEXTRACT เป็นฟังก์ชันที่ประหยัดเวลาสุด ๆ เวลามีข้อมูลที่ยุ่งโจม แล้วต้องดึงส่วนที่เฉพาะเจาะจง ทำให้ Data Cleaning ของผมเร็วกว่าเดิม 10 เท่า สิ่งที่เจ๋ง คือสามารถดึงจากหลายแบบนะ ตัวเลข, อีเมล, โดเมน, เลขโทรศัพท์, รหัส SKU – แค่เขียน Regex ที่ถูก 😎
แยกชื่อเว็บไซต์ (Domain) ออกจากที่อยู่อีเมล
แยกรหัสไปรษณีย์หรือเบอร์โทรศัพท์ที่ปนอยู่กับข้อความ
ดึงชื่อไฟล์หรือนามสกุลไฟล์จาก URL ยาวๆ
รูปแบบ @(.+) = ค้นหา @ และดึงข้อความทั้งหมดหลัง @ (ในวงเล็บ) ออกมา วงเล็บบ่งบอกว่า "ดึงเฉพาะส่วนนี้"
`\d+` = ตัวเลขตั้งแต่ 1 ตัวขึ้นไป (ไม่มีวงเล็บ ดึงทั้งรูปแบบ) ได้ตัวเลขแรกที่เจอ
`\(` = วงเล็บจริง (ต้อง escape), `(\d{4})` = ตัวเลข 4 หลัก (ในวงเล็บจึงดึงเฉพาะนี้), `\)` = วงเล็บปิด
`\d{3}` = 3 ตัวเลข, `-` = ขีด, `\d{3}` = 3 ตัวเลข, `-` = ขีด, `\d{4}` = 4 ตัวเลข (รูปแบบไทยทั่วไป)
`[0-9]+` = เลขตั้งแต่ 1 ตัวขึ้นไป (เทียบเท่า `\d+`) ได้เลขแรก (1999) ถ้าอยากได้ 2001 ต้องใช้ REGEXMATCH หรือ REGEXREPLACE
`\d+` = เลข, `(?:,\d{3})*` = คอมม่าตามด้วยเลข 3 ตัว (ซ้ำหลาย ๆ ครั้ง), `(?:\.\d{2})` = จุดตามด้วยเลข 2 ตัว VALUE() แปลงเป็นตัวเลข
REGEXEXTRACT = ดึง (extract) ส่วนที่ตรงกับรูปแบบ | REGEXREPLACE = แทนที่ (replace) ส่วนที่ตรงกับรูปแบบด้วยข้อความใหม่
Excel 365 เพิ่งมีฟังก์ชัน REGEXEXTRACT ให้ใช้แล้ว (Public Preview ปี 2024) ทำงานคล้าย ๆ กับของ Google Sheets แต่ถ้าใช้ Excel รุ่นเก่ากว่าต้องใช้ VBA หรือ Python in Excel
จะคืนค่า error #N/A แนะนำให้ครอบด้วย IFERROR เช่น `=IFERROR(REGEXEXTRACT(A2, "\d+"), "ไม่พบ")` เพื่อจัดการกรณีไม่พบข้อมูล
ใช้ AI ช่วย! บอก ChatGPT/Claude/Gemini ว่า "Write a regex to extract [สิ่งที่ต้องการ]" หรือทดสอบที่ regexr.com ซึ่งมีคำอธิบายแบบ visual
ใช้ RE2 (Google's regex engine) คล้าย JavaScript/PCRE แต่ไม่รองรับ lookahead `(?=)` และ lookbehind `(?
ดึง "ครั้งแรก" ที่เจอเท่านั้น ถ้า "1999 or 2001" ดึงได้ 1999 ถ้าต้องดึงทั้งหมด ต้องใช้ REGEXMATCH (array formula) หรือ REGEXREPLACE
ฟังก์ชันที่ผู้เขียนโยงไว้กับ REGEXEXTRACT จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง
REGEXMATCH เป็นฟังก์ชันสำหรับตรวจสอบว่าข้อความตรงกับรูปแบบ Regular Expression หรือไม่ คืนค่า TRUE หรือ FALSE เหมาะสำหรับ Data Validation และ Filtering ขั้นสูง
REGEXREPLACE เป็นฟังก์ชันสำหรับค้นหาและแทนที่ข้อความด้วยรูปแบบ Regular Expression เหมาะสำหรับการจัดรูปแบบข้อมูลและ Data Cleaning ขั้นสูง
ฟังก์ชัน SPLIT ใช้สำหรับแยกข้อความในเซลล์หนึ่งออกเป็นหลายๆ เซลล์ตามตัวคั่น (Delimiter) ที่กำหนด เหมาะสำหรับการจัดการข้อมูลที่ถูกรวมมาในเซลล์เดียว เช่น ชื่อ-นามสกุล ที่ต้องการแยกเป็นคนละคอลัมน์
ยังไม่มีบทความที่เกี่ยวข้องกับฟังก์ชันนี้
Comments
อีเมลของคุณจะไม่ถูกเผยแพร่