Thep Excel

REGEXEXTRACTดึงข้อความด้วย Regular Expression

REGEXEXTRACT เป็นฟังก์ชันสำหรับดึงข้อความย่อย (Substring) ที่ตรงกับรูปแบบ Regular Expression (Regex) ที่กำหนด เหมาะสำหรับการทำ Data Cleaning ขั้นสูง

fx
=REGEXEXTRACT(text, pattern, [return_mode], [case_sensitivity])

ความนิยม6/10
ความยาก6/10
ประโยชน์7/10

อัปเดต 23 December 2025

Syntax & Arguments

อาร์กิวเมนต์ ชนิด คำอธิบาย
text Text ข้อความหรือเซลล์ที่ต้องการดึงข้อมูล
pattern Text รูปแบบ Regex ที่ต้องการค้นหา (ต้องอยู่ในเครื่องหมายคำพูด) หากมีกลุ่มวงเล็บ () จะคืนค่าเฉพาะในวงเล็บ
[return_mode]ไม่บังคับ Number ตัวเลือกว่าจะคืนค่าอะไร: 0 = ค่าแรกที่พบ (default), 1 = ทุกค่าที่พบ (array), 2 = capture groups จากค่าแรก (array)
[case_sensitivity]ไม่บังคับ Number 0 = case-sensitive (default), 1 = case-insensitive

[ ] = อาร์กิวเมนต์ที่ไม่บังคับ

Additional Notes

ฟังก์ชัน REGEXEXTRACT ช่วยให้คุณดึงส่วนหนึ่งของข้อความออกมาโดยใช้รูปแบบ Regular Expression (Regex) ซึ่งมีความยืดหยุ่นสูงกว่าการใช้ LEFT, RIGHT, MID เหมาะสำหรับดึงข้อมูลที่มีรูปแบบซับซ้อน เช่น อีเมล เบอร์โทรศัพท์ หรือรหัสสินค้า

**📚 เรียนรู้ Regex:** ศึกษาวิธีเขียน Regex แบบละเอียดได้ที่ [คู่มือ Regex ฉบับสมบูรณ์สำหรับ Excel](https://www.thepexcel.com/regex-excel-guide/) ซึ่งครอบคลุม Pattern พื้นฐาน, Capture Groups, Lookahead/Lookbehind และเทคนิคขั้นสูง

ส่วนตัวผม REGEXEXTRACT เป็นฟังก์ชันที่ประหยัดเวลาสุด ๆ เวลามีข้อมูลที่ยุ่งโจม แล้วต้องดึงส่วนที่เฉพาะเจาะจง ทำให้ Data Cleaning เร็วกว่าเดิม 10 เท่า 😎

Examples

ตัวอย่างที่ 1: ดึงตัวเลขจากข้อความREGEXEXTRACT("Order #12345 confirmed", "\d+")

\d+ แทนกลุ่มตัวเลข (Digit) ตั้งแต่ 1 ตัวขึ้นไป ฟังก์ชันดึงกลุ่มตัวเลขแรกที่พบ

fx
=REGEXEXTRACT("Order #12345 confirmed", "\d+")

ผลลัพธ์12345
ตัวอย่างที่ 2: ดึงโดเมนอีเมลREGEXEXTRACT("contact@thepexcel.com", "@(.+)")

(.+) เป็น capture group – ดึงทั้งหมดที่อยู่หลัง @ ออกมา (ที่อยู่ในวงเล็บ)

fx
=REGEXEXTRACT("contact@thepexcel.com", "@(.+)")

ผลลัพธ์@thepexcel.com
ตัวอย่างที่ 3: ดึงปีจากวงเล็บREGEXEXTRACT("The Matrix (1999)", "\((\d{4})\)")

\( และ \) ระบุวงเล็บจริงในข้อความ, \d{4} คือตัวเลข 4 หลัก ในวงเล็บ capture group

fx
=REGEXEXTRACT("The Matrix (1999)", "\((\d{4})\)")

ผลลัพธ์(1999)
ตัวอย่างที่ 4: ดึงหลายค่า (array) ด้วย return_mode=1REGEXEXTRACT("ราคา 100, 200, 300", "\d+", 1)

return_mode=1 ทำให้คืนค่าทั้งหมดที่พบ เป็น array แทนเพียงค่าแรก

fx
=REGEXEXTRACT("ราคา 100, 200, 300", "\d+", 1)

ผลลัพธ์{"100", "200", "300"}

FAQs

REGEXEXTRACT ใน Excel กับ Google Sheets เหมือนกันไหม?+

เกือบเหมือน ทั้งคู่ใช้ดึงข้อความด้วย Regex ได้ อย่างไรก็ตาม Excel ใช้ PCRE2 (มีความสามารถสูง สามารถใช้ lookahead/lookbehind) ส่วน Google Sheets ใช้ RE2 (ปลอดภัยกว่า ไม่รองรับ lookahead/lookbehind) ถ้ามีสูตร Google Sheets อาจต้องปรับ Regex เล็กน้อย

ถ้าไม่เจอรูปแบบที่กำหนดจะเป็นอย่างไร?+

จะคืนค่า error #N/A แนะนำให้ครอบด้วย IFERROR เพื่อจัดการกรณีไม่พบข้อมูล เช่น =IFERROR(REGEXEXTRACT(…), "ไม่พบ")

ไม่เก่ง Regex จะเขียนได้อย่างไร?+

ใช้ AI ช่วย! บอก ChatGPT/Claude/Gemini ว่า "Write a regex to [สิ่งที่ต้องการ]" หรือทดสอบที่ regexr.com ซึ่งมีคำอธิบายแบบ visual และ interactive

Excel ใช้ Regex แบบไหน?+

Excel ใช้ PCRE2 (.NET Regex) ซึ่งเป็นเวอร์ชันเต็ม รองรับ lookahead (?=) และ lookbehind (?

Resources & Related

ฟังก์ชันที่ผู้เขียนโยงไว้กับ REGEXEXTRACT จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง

ฟังก์ชันนี้REGEXEXTRACTText
Text (10)
FIND

FIND ค้นหาตำแหน่งเริ่มต้นของคำที่ต้องการภายในข้อความหลัก โดยสนใจตัวพิมพ์เล็ก-ใหญ่ (เช่น "A" ไม่เหมือนกับ "a") ถ้าค้นหาไม่เจอจะคืนค่า Error #VALUE! มักใช้ร่วมกับ MID, LEFT, RIGHT เพื่อตัดคำตามตำแหน่ง

LEFT

LEFT ดึงตัวอักษรจากด้านซ้ายสุดของข้อความตามจำนวนที่ต้องการ ถ้าไม่ระบุจำนวนจะดึงมา 1 ตัว ผลลัพธ์เป็น Text เสมอแม้ดึงตัวเลขออกมา

MID

MID ตัดข้อความออกจากตำแหน่งเริ่มต้นที่คุณกำหนด โดยระบุความยาวของข้อความที่ต้องการ สะดวกมากสำหรับดึงข้อมูลบางส่วนจากข้อความที่ยาว เช่น รหัสสินค้า, รหัสพนักงาน, หรือวันที่ที่ฝังตัวในข้อความ

REGEXREPLACE

REGEXREPLACE ค้นหาและแทนที่ข้อความจากรูปแบบ Regular Expression ใช้สำหรับ Data Cleaning ที่ซับซ้อน เหมาะสำหรับ Excel 365 รองรับ backreferences

REGEXTEST

REGEXTEST เป็นฟังก์ชันสำหรับทดสอบว่าข้อความตรงกับรูปแบบ Regular Expression ที่กำหนดหรือไม่ คืนค่า TRUE หรือ FALSE เหมาะสำหรับการตรวจสอบความถูกต้องของข้อมูล (Validation) เช่น ที่อยู่อีเมล เบอร์โทรศัพท์ หรือรูปแบบข้อมูลอื่น ๆ

RIGHT

RIGHT จะคืนค่าเป็นข้อความ (Text) ที่ถูกตัดมาจากด้านขวาสุดของข้อความต้นฉบับตามจำนวนที่ระบุ ถ้าไม่ระบุจำนวน ฟังก์ชันจะดึงมาเพียง 1 ตัวอักษร
.
ที่เจ๋งคือสามารถใช้ร่วมกับ LEN หรือ FIND เพื่อตัดข้อความแบบไดนามิกได้ ผลลัพธ์ที่ได้จะเป็น Text เสมอ ถ้าต้องการนำไปคำนวณต่อ ต้องแปลงเป็นตัวเลขก่อนครับ

SEARCH

SEARCH ค้นหาตำแหน่งของคำที่ต้องการในข้อความหลัก ถ้าเจอคืนตัวเลขตำแหน่งที่พบ ถ้าไม่เจอคืน #VALUE! ต่างจาก FIND ตรงที่ไม่แยกแยะตัวพิมพ์เล็ก-ใหญ่ (A=a) และใช้ wildcard (* กับ ?) ค้นหาแบบมีรูปแบบได้ เอาไปต่อกับ ISNUMBER ก็กลายเป็นสูตรเช็คว่าเซลล์มีคำนี้อยู่หรือไม่ ซึ่งเป็นวิธีที่ใช้กันบ่อยที่สุดในงานจัดหมวดหมู่หรือกรองข้อมูลจากคำสำคัญ

SUBSTITUTE

SUBSTITUTE ค้นหาคำเก่า (old_text) ในข้อความแล้วแทนที่ด้วยคำใหม่ (new_text) โดยแยกแยะตัวพิมพ์เล็ก-ใหญ่ (case-sensitive) และเลือกได้ว่าจะแทนที่ทุกจุดที่เจอ หรือเฉพาะลำดับที่ระบุผ่าน instance_num งานที่ใช้บ่อยคือลบตัวคั่นออกจากตัวเลขที่ถูกเก็บเป็นข้อความ เปลี่ยนโดเมนอีเมลหลังรีแบรนด์ หรือล้างอักขระที่พิมพ์มาผิดรูปแบบก่อนนำไปคำนวณต่อ

TEXTAFTER

TEXTAFTER ดึงข้อความหลังจากตัวคั่นที่ระบุ รองรับการเลือกลำดับตัวคั่น (instance_num) การค้นหาแบบ case-insensitive (match_mode) และค่า default เมื่อไม่พบ (if_not_found) ทำให้แยกข้อมูลได้ง่ายกว่า MID+FIND ใช้คู่กับ TEXTBEFORE TEXTSPLIT

TEXTBEFORE

TEXTBEFORE ดึงข้อความก่อนหน้าตัวคั่นที่ระบุ รองรับการเลือกลำดับตัวคั่น (instance_num) การค้นหาแบบ case-insensitive (match_mode) และค่า default เมื่อไม่พบ (if_not_found) ทำให้แยกข้อมูลได้ง่ายกว่า LEFT+FIND ใช้คู่กับ TEXTAFTER TEXTSPLIT

Comments

อีเมลของคุณจะไม่ถูกเผยแพร่