Thep Excel

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

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

fx
=REGEXEXTRACT(text, regular_expression)

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

อัปเดต 13 December 2025

Syntax & Arguments

อาร์กิวเมนต์ ชนิด คำอธิบาย
text Text ข้อความหรือเซลล์ที่ต้องการดึงข้อมูล
regular_expression Text รูปแบบ Regex ที่ต้องการค้นหา (ต้องอยู่ในเครื่องหมายคำพูด) หากมีกลุ่มวงเล็บ () จะคืนค่าเฉพาะในวงเล็บ ถ้าไม่มีวงเล็บจะคืนเฉพาะส่วนที่ตรงกับรูปแบบทั้งหมด

Additional Notes

ฟังก์ชัน 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 ที่ถูก 😎

How it works

ดึงโดเมนจากอีเมล

แยกชื่อเว็บไซต์ (Domain) ออกจากที่อยู่อีเมล

ดึงตัวเลขจากข้อความ

แยกรหัสไปรษณีย์หรือเบอร์โทรศัพท์ที่ปนอยู่กับข้อความ

แยกชื่อไฟล์จาก URL

ดึงชื่อไฟล์หรือนามสกุลไฟล์จาก URL ยาวๆ

Examples

ตัวอย่างที่ 1: ดึงโดเมนอีเมลREGEXEXTRACT("support@thepexcel.com", "@(.+)")

รูปแบบ @(.+) = ค้นหา @ และดึงข้อความทั้งหมดหลัง @ (ในวงเล็บ) ออกมา วงเล็บบ่งบอกว่า "ดึงเฉพาะส่วนนี้"

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

ผลลัพธ์thepexcel.com
ตัวอย่างที่ 2: ดึงเฉพาะตัวเลข (Order Number)REGEXEXTRACT("Order #12345 confirmed", "\d+")

`\d+` = ตัวเลขตั้งแต่ 1 ตัวขึ้นไป (ไม่มีวงเล็บ ดึงทั้งรูปแบบ) ได้ตัวเลขแรกที่เจอ

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

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

`\(` = วงเล็บจริง (ต้อง escape), `(\d{4})` = ตัวเลข 4 หลัก (ในวงเล็บจึงดึงเฉพาะนี้), `\)` = วงเล็บปิด

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

ผลลัพธ์1999
ตัวอย่างที่ 4: ดึงเบอร์โทรศัพท์REGEXEXTRACT("Call: 081-234-5678 ext 100", "\d{3}-\d{3}-\d{4}")

`\d{3}` = 3 ตัวเลข, `-` = ขีด, `\d{3}` = 3 ตัวเลข, `-` = ขีด, `\d{4}` = 4 ตัวเลข (รูปแบบไทยทั่วไป)

fx
=REGEXEXTRACT("Call: 081-234-5678 ext 100", "\d{3}-\d{3}-\d{4}")

ผลลัพธ์081-234-5678
ตัวอย่างที่ 5: ดึงปีจากข้อมูลสับสนREGEXEXTRACT("Vintage: 1999 or 2001", "[0-9]+")

`[0-9]+` = เลขตั้งแต่ 1 ตัวขึ้นไป (เทียบเท่า `\d+`) ได้เลขแรก (1999) ถ้าอยากได้ 2001 ต้องใช้ REGEXMATCH หรือ REGEXREPLACE

fx
=REGEXEXTRACT("Vintage: 1999 or 2001", "[0-9]+")

ผลลัพธ์1999
ตัวอย่างที่ 6: ดึงจำนวนเงินจากข้อความVALUE(REGEXEXTRACT("Price: $1,234.50", "\d+(?:,\d{3})*(?:\.\d{2})"))

`\d+` = เลข, `(?:,\d{3})*` = คอมม่าตามด้วยเลข 3 ตัว (ซ้ำหลาย ๆ ครั้ง), `(?:\.\d{2})` = จุดตามด้วยเลข 2 ตัว VALUE() แปลงเป็นตัวเลข

fx
=VALUE(REGEXEXTRACT("Price: $1,234.50", "\d+(?:,\d{3})*(?:\.\d{2})"))

ผลลัพธ์1234.5

FAQs

ต่างกับ REGEXREPLACE ยังไง?+

REGEXEXTRACT = ดึง (extract) ส่วนที่ตรงกับรูปแบบ | REGEXREPLACE = แทนที่ (replace) ส่วนที่ตรงกับรูปแบบด้วยข้อความใหม่

REGEXEXTRACT ใน Excel มีไหม?+

Excel 365 เพิ่งมีฟังก์ชัน REGEXEXTRACT ให้ใช้แล้ว (Public Preview ปี 2024) ทำงานคล้าย ๆ กับของ Google Sheets แต่ถ้าใช้ Excel รุ่นเก่ากว่าต้องใช้ VBA หรือ Python in Excel

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

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

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

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

Google Sheets ใช้ Regex แบบไหน?+

ใช้ RE2 (Google's regex engine) คล้าย JavaScript/PCRE แต่ไม่รองรับ lookahead `(?=)` และ lookbehind `(?

หากข้อความมีหลายรูปแบบตรงกัน REGEXEXTRACT ดึงอันไหน?+

ดึง "ครั้งแรก" ที่เจอเท่านั้น ถ้า "1999 or 2001" ดึงได้ 1999 ถ้าต้องดึงทั้งหมด ต้องใช้ REGEXMATCH (array formula) หรือ REGEXREPLACE

Resources & Related

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

ฟังก์ชันนี้REGEXEXTRACTText
Text (3)
REGEXMATCH

REGEXMATCH เป็นฟังก์ชันสำหรับตรวจสอบว่าข้อความตรงกับรูปแบบ Regular Expression หรือไม่ คืนค่า TRUE หรือ FALSE เหมาะสำหรับ Data Validation และ Filtering ขั้นสูง

REGEXREPLACE

REGEXREPLACE เป็นฟังก์ชันสำหรับค้นหาและแทนที่ข้อความด้วยรูปแบบ Regular Expression เหมาะสำหรับการจัดรูปแบบข้อมูลและ Data Cleaning ขั้นสูง

SPLIT

ฟังก์ชัน SPLIT ใช้สำหรับแยกข้อความในเซลล์หนึ่งออกเป็นหลายๆ เซลล์ตามตัวคั่น (Delimiter) ที่กำหนด เหมาะสำหรับการจัดการข้อมูลที่ถูกรวมมาในเซลล์เดียว เช่น ชื่อ-นามสกุล ที่ต้องการแยกเป็นคนละคอลัมน์

Comments

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