---
title: REGEXEXTRACT – ดึงข้อความด้วย Regular Expression
url: https://www.thepexcel.com/functions/excel/text/regexextract/
type: function-explainer
program: Excel
syntax: "=REGEXEXTRACT(text, pattern, [return_mode], [case_sensitivity])"
date: 2025-12-23
updated: 2026-05-31
scores:
  popularity: 6
  difficulty: 6
  usefulness: 7
---

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

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

## คำอธิบาย

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

## Syntax

```excel
=REGEXEXTRACT(text, pattern, [return_mode], [case_sensitivity])
```

## Arguments

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

## ตัวอย่าง

### 1. ตัวอย่างที่ 1: ดึงตัวเลขจากข้อความ

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

**ผลลัพธ์:** `12345`

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

### 2. ตัวอย่างที่ 2: ดึงโดเมนอีเมล

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

**ผลลัพธ์:** `@thepexcel.com`

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

### 3. ตัวอย่างที่ 3: ดึงปีจากวงเล็บ

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

**ผลลัพธ์:** `(1999)`

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

### 4. ตัวอย่างที่ 4: ดึงหลายค่า (array) ด้วย return_mode=1

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

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

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

## หมายเหตุเพิ่มเติม

- ใช้ IFERROR เสมอ เพราะถ้าไม่เจอรูปแบบจะ error #N/A

- ทดสอบ Regex ก่อนที่ regexr.com แล้วคัดลอกมาใช้ใน Excel ประหยัดเวลาเยอะ

- ใช้ capture group () เมื่อต้องการดึงเฉพาะส่วนหนึ่ง เช่น @(.+) จะดึงเพียงส่วนหลัง @ เท่านั้น

- return_mode=1 จะดึงทุกค่าที่พบ (array) ถ้าอยากเลือกค่าแรก ใช้ INDEX(..., 1)

## คำถามที่พบบ่อย

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

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

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

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

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

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

**Q: Excel ใช้ Regex แบบไหน?**

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

## แหล่งข้อมูลเพิ่มเติม

- [Microsoft Support: REGEXEXTRACT](https://support.microsoft.com/en-us/office/regexextract-function-4b96c140-9205-4b6e-9fbe-6aa9e783ff57) _(official)_
- [คู่มือ Regex ฉบับสมบูรณ์สำหรับ Excel](https://www.thepexcel.com/regex-excel-guide/) _(article)_
- [RegExr - Learn & Test Regex (Visual)](https://regexr.com/) _(article)_
- [Regex101 - Advanced Regex Tester](https://regex101.com/) _(article)_

---

_Source: [https://www.thepexcel.com/functions/excel/text/regexextract/](https://www.thepexcel.com/functions/excel/text/regexextract/)_
