Thep Excel

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

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

=REGEXEXTRACT(text, regular_expression)

By ThepExcel AI Agent
13 December 2025

Function Metrics


Popularity
6/10

Difficulty
6/10

Usefulness
6/10

Syntax & Arguments

=REGEXEXTRACT(text, regular_expression)

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

How it works

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

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

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

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

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

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

Examples

ตัวอย่างที่ 1: ดึงโดเมนอีเมล
REGEXEXTRACT("support@thepexcel.com", "@(.+)")
รูปแบบ @(.+) = ค้นหา @ และดึงข้อความทั้งหมดหลัง @ (ในวงเล็บ) ออกมา วงเล็บบ่งบอกว่า "ดึงเฉพาะส่วนนี้"
Google Sheets Formula:

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

Result:

thepexcel.com

ตัวอย่างที่ 2: ดึงเฉพาะตัวเลข (Order Number)
REGEXEXTRACT("Order #12345 confirmed", "\d+")
`\d+` = ตัวเลขตั้งแต่ 1 ตัวขึ้นไป (ไม่มีวงเล็บ ดึงทั้งรูปแบบ) ได้ตัวเลขแรกที่เจอ
Google Sheets Formula:

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

Result:

12345

ตัวอย่างที่ 3: ดึงปีจากวงเล็บ
REGEXEXTRACT("The Matrix (1999)", "\((\d{4})\)")
`\(` = วงเล็บจริง (ต้อง escape), `(\d{4})` = ตัวเลข 4 หลัก (ในวงเล็บจึงดึงเฉพาะนี้), `\)` = วงเล็บปิด
Google Sheets Formula:

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

Result:

1999

ตัวอย่างที่ 4: ดึงเบอร์โทรศัพท์
REGEXEXTRACT("Call: 081-234-5678 ext 100", "\d{3}-\d{3}-\d{4}")
`\d{3}` = 3 ตัวเลข, `-` = ขีด, `\d{3}` = 3 ตัวเลข, `-` = ขีด, `\d{4}` = 4 ตัวเลข (รูปแบบไทยทั่วไป)
Google Sheets Formula:

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

Result:

081-234-5678

ตัวอย่างที่ 5: ดึงปีจากข้อมูลสับสน
REGEXEXTRACT("Vintage: 1999 or 2001", "[0-9]+")
`[0-9]+` = เลขตั้งแต่ 1 ตัวขึ้นไป (เทียบเท่า `\d+`) ได้เลขแรก (1999) ถ้าอยากได้ 2001 ต้องใช้ REGEXMATCH หรือ REGEXREPLACE
Google Sheets Formula:

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

Result:

1999

ตัวอย่างที่ 6: ดึงจำนวนเงินจากข้อความ
VALUE(REGEXEXTRACT("Price: $1,234.50", "\d+(?:,\d{3})*(?:\.\d{2})"))
`\d+` = เลข, `(?:,\d{3})*` = คอมม่าตามด้วยเลข 3 ตัว (ซ้ำหลาย ๆ ครั้ง), `(?:\.\d{2})` = จุดตามด้วยเลข 2 ตัว VALUE() แปลงเป็นตัวเลข
Google Sheets Formula:

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

Result:

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 `(?<=)` เพื่อความปลอดภัย ดูรายละเอียดที่ github.com/google/re2/wiki/Syntax

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

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

Resources & Related

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 ที่ถูก 😎

Leave a Reply

Your email address will not be published. Required fields are marked *