---
title: TEXTBEFORE – ดึงข้อความก่อนตัวคั่น
url: https://www.thepexcel.com/functions/excel/text/textbefore/
type: function-explainer
program: Excel
syntax: "=TEXTBEFORE(text, delimiter, [instance_num], [match_mode], [match_end], [if_not_found])"
date: 2025-12-01
updated: 2025-12-17
scores:
  popularity: 7
  difficulty: 4
  usefulness: 8
---

# TEXTBEFORE – ดึงข้อความก่อนตัวคั่น

> ดึงข้อความก่อนตัวคั่นที่ระบุ

## คำอธิบาย

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

## Syntax

```excel
=TEXTBEFORE(text, delimiter, [instance_num], [match_mode], [match_end], [if_not_found])
```

**excel**

```excel
=TEXTBEFORE("john@example.com", "@")
```

ดึง username จาก email = john

**excel**

```excel
=TEXTBEFORE("A-B-C-D", "-", 2)
```

ก่อนตัวคั่นที่ 2 = A-B

**excel**

```excel
=TEXTBEFORE("A-B-C", "-", -1)
```

ก่อนตัวคั่นสุดท้าย = A-B

**excel**

```excel
=TEXTBEFORE(A1, ",", 1, 0, 0, "Not found")
```

กำหนดค่า default เมื่อไม่พบตัวคั่น

## Arguments

| Name | Required | Type | Default | Description |
| --- | --- | --- | --- | --- |
| text | Yes | Text |  | ข้อความต้นฉบับที่ต้องการดึงส่วนก่อนตัวคั่น |
| delimiter | Yes | Text/Array |  | ตัวคั่นที่ใช้แยก (รองรับ Array หลายตัวคั่น) |
| instance_num | No | Number | 1 | ลำดับตัวคั่นที่ต้องการ (1=แรก, -1=สุดท้าย) |
| match_mode | No | Number | 0 | 0 = case-sensitive, 1 = case-insensitive |
| match_end | No | Number | 0 | 0 = ไม่จับคู่ต้นข้อความ, 1 = จับคู่ต้นข้อความเป็นตัวคั่น |
| if_not_found | No | Text | #N/A | ค่าที่ return เมื่อไม่พบตัวคั่น (default = #N/A error) |

## เคสการใช้งาน

### แยก Username จาก Email

ดึงส่วน username (john) จาก email address โดยใช้ @ เป็นตัวคั่น

_เหมาะกับ:_ data-extraction

### แยกรหัสนำหน้า

ดึงส่วนนำหน้าของรหัสสินค้า เช่น PRD-2024-001 → PRD

_เหมาะกับ:_ data-cleaning

### แยกชื่อไฟล์

ดึงชื่อไฟล์ (ไม่รวมนามสกุล) เช่น report.xlsx → report

_เหมาะกับ:_ file-management

## ตัวอย่าง

### 1. ตัวอย่างที่ 1: ดึง Username จาก Email

```excel
=TEXTBEFORE("user@example.com", "@")
```

**ผลลัพธ์:** `"user"`

ดึงข้อความก่อน @ ได้ username

### 2. ตัวอย่างที่ 2: ดึงชื่อ (First Name)

```excel
=TEXTBEFORE("John Doe Smith", " ")
```

**ผลลัพธ์:** `"John"`

instance_num=1 (default) หมายถึงก่อนช่องว่างแรก ได้ชื่อจริง

### 3. ตัวอย่างที่ 3: ก่อนตัวคั่นลำดับที่ 2

```excel
=TEXTBEFORE("A-B-C-D", "-", 2)
```

**ผลลัพธ์:** `"A-B"`

instance_num=2 ดึงก่อนเครื่องหมาย - ตัวที่ 2 ได้ A-B

### 4. ตัวอย่างที่ 4: ดึงชื่อไฟล์ (ไม่รวม Extension)

```excel
=TEXTBEFORE("report.2024.xlsx", ".", -1)
```

**ผลลัพธ์:** `"report.2024"`

instance_num=-1 ก่อนจุดสุดท้าย ได้ชื่อไฟล์โดยไม่รวมนามสกุล

### 5. ตัวอย่างที่ 5: Case-Insensitive Match

```excel
=TEXTBEFORE("Hello World", "WORLD", 1, 1)
```

**ผลลัพธ์:** `"Hello "`

match_mode=1 ทำให้ WORLD จับคู่กับ World ได้ (ไม่สนใจ case)

### 6. ตัวอย่างที่ 6: กำหนดค่า Default เมื่อไม่พบ

```excel
=TEXTBEFORE("NoDelimiter", "@", 1, 0, 0, "N/A")
```

**ผลลัพธ์:** `"N/A"`

ไม่พบ @ ในข้อความ จึง return ค่า if_not_found = N/A แทน #N/A error

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

**เปรียบเทียบ Text Functions ใหม่:**\n\n| Function | คืนค่า |\n|----------|--------|\n| TEXTBEFORE | ข้อความก่อนตัวคั่น |\n| TEXTAFTER | ข้อความหลังตัวคั่น |\n| TEXTSPLIT | แยกเป็น Array หลายชิ้น |\n\n**instance_num:**\n```\n1 = ตัวคั่นแรก (default)\n2 = ตัวคั่นที่ 2\n-1 = ตัวคั่นสุดท้าย\n-2 = ตัวคั่นรองสุดท้าย\n```\n\n**Pattern การใช้งาน:**\n```\n=TEXTBEFORE(email, "@")           → username\n=TEXTBEFORE(filename, ".", -1)    → ชื่อไฟล์\n=TEXTBEFORE(fullname, " ")        → firstname\n=TEXTBEFORE(code, "-")            → prefix\n```\n\n**Tips:**\n- ใช้ -1 ดึงก่อนตัวคั่นสุดท้าย\n- ใส่ if_not_found ป้องกัน #N/A\n- รองรับ Array delimiter

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

**Q: TEXTBEFORE ต่างจาก LEFT+FIND อย่างไร?**

TEXTBEFORE ง่ายกว่ามาก ไม่ต้องคำนวณตำแหน่งและความยาว LEFT+FIND ต้องเขียน =LEFT(A1,FIND("@",A1)-1) ซึ่งซับซ้อนกว่าและ error หากไม่พบตัวคั่น

**Q: instance_num ลบหมายความว่าอะไร?**

instance_num ลบนับจากท้าย เช่น -1 = ตัวคั่นสุดท้าย, -2 = ตัวคั่นรองสุดท้าย เหมาะสำหรับดึงส่วนนำหน้าตัวคั่นสุดท้าย

**Q: #N/A error เกิดจากอะไร?**

เกิดเมื่อไม่พบ delimiter ในข้อความ ใช้ if_not_found กำหนดค่า default แทน error

**Q: ใช้หลาย delimiter พร้อมกันได้ไหม?**

ได้ ใส่เป็น Array เช่น =TEXTBEFORE(A1, {"-", "_"}) จะค้นหาทั้ง - และ _ ใช้ตัวที่พบก่อน

**Q: TEXTBEFORE รองรับ Excel เวอร์ชันไหน?**

Microsoft 365 และ Excel 2024 เท่านั้น ไม่รองรับ Excel 2021 หรือเก่ากว่า

## ฟังก์ชันที่เกี่ยวข้อง

- [TEXTAFTER – ดึงข้อความหลังตัวคั่น](https://www.thepexcel.com/functions/excel/text/textafter/)
- [TEXTSPLIT – ฟังก์ชันแยกข้อความตามตัวคั่น](https://www.thepexcel.com/functions/excel/text/textsplit/)
- [LEFT – ตัดข้อความจากซ้าย](https://www.thepexcel.com/functions/excel/text/left/)
- [RIGHT – ตัดข้อความจากด้านขวา](https://www.thepexcel.com/functions/excel/text/right/)
- [MID – ตัดข้อความจากตำแหน่งที่ระบุ](https://www.thepexcel.com/functions/excel/text/mid/)
- [FIND – ค้นหาตำแหน่งของคำ (แยกตัวพิมพ์เล็ก/ใหญ่)](https://www.thepexcel.com/functions/excel/text/find/)

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

- [Microsoft Support: TEXTBEFORE function](https://support.microsoft.com/en-us/office/textbefore-function-d099c28a-dba8-448e-ac6c-f086d0fa1b29) _(official)_
- [ExcelJet: How to use TEXTBEFORE](https://exceljet.net/excel-functions/excel-textbefore-function) _(guide)_

---

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