---
title: Text.BeforeDelimiter – ดึงข้อความก่อนตัวคั่น
url: https://www.thepexcel.com/functions/power-query/text-functions/text-beforedelimiter/
type: function-explainer
program: Power Query
syntax: "Text.BeforeDelimiter(text as nullable text, delimiter as text, optional index as any) as any"
date: 2025-12-03
updated: 2025-12-24
scores:
  popularity: 6
  difficulty: 3
  usefulness: 6
---

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

> Text.BeforeDelimiter ดึงข้อความส่วนที่อยู่ก่อนตัวคั่นที่กำหนด พร้อมตัวเลือกระบุตัวคั่นตัวไหน

## คำอธิบาย

Text.BeforeDelimiter ดึงข้อความส่วนที่อยู่ก่อนตัวคั่นที่กำหนด พร้อมตัวเลือกระบุตัวคั่นตัวไหน

## Syntax

```excel
Text.BeforeDelimiter(text as nullable text, delimiter as text, optional index as any) as any
```

## Arguments

| Name | Required | Type | Default | Description |
| --- | --- | --- | --- | --- |
| text | Yes | text |  | ข้อความต้นทางที่ต้องการดึงข้อมูล |
| delimiter | Yes | text |  | ตัวคั่นที่ใช้ในการแยก เช่น '.' หรือ '-' หรือ '@' |
| index | No | number or list | 0 (ตัวแรก) | ตัวเลือก: ระบุตัวคั่นตัวไหน (0-based) หรือใช้รูปแบบ {occurrence, RelativePosition.FromStart\|FromEnd} |

## ตัวอย่าง

### 1. ตัวอย่างพื้นฐาน - ดึงข้อความก่อนจุด

```excel
Text.BeforeDelimiter("John.Doe", ".")
```

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

ดึงข้อความก่อนจุด (.) ตัวแรก จึงได้ 'John'

### 2. ใช้กับข้อมูลตัวเลข - ดึงส่วนแรก

```excel
Text.BeforeDelimiter("111-222-333", "-")
```

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

ดึงข้อความก่อนเครื่องหมายลบ (-) ตัวแรก จึงได้ '111'

### 3. ดึงข้อมูลก่อนตัวคั่นตัวที่สอง

```excel
Text.BeforeDelimiter("111-222-333", "-", 1)
```

**ผลลัพธ์:** `"111-222"`

ระบุ index=1 เพื่อหาตัวคั่นตัวที่สอง จึงได้ '111-222' (รวมตัวคั่นตัวแรก)

### 4. แยกโดเมนจากอีเมล

```excel
Text.BeforeDelimiter("john.doe@company.com", "@")
```

**ผลลัพธ์:** `"john.doe"`

ดึงข้อความก่อน @ จึงได้ชื่อผู้ใช้จากที่อยู่อีเมล

### 5. นับตัวคั่นจากท้ายสุด

```excel
Text.BeforeDelimiter("path/to/file.txt", ".", {0, RelativePosition.FromEnd})
```

**ผลลัพธ์:** `"path/to/file"`

ใช้ RelativePosition.FromEnd เพื่อนับจากท้ายสุด ได้ส่วนที่ไม่รวมนามสกุลไฟล์

### 6. ใช้ในตารางเต็มรูป

```excel
let
    Source = Table.FromRows(
        {{"Alice.Smith"}, {"Bob.Johnson"}, {"Carol.White"}},
        {"FullName"}
    ),
    AddFirstName = Table.AddColumn(
        Source,
        "FirstName",
        each Text.BeforeDelimiter([FullName], ".")
    )
in
    AddFirstName
```

**ผลลัพธ์:** `ตารางที่มีคอลัมน์ FirstName ที่ดึงชื่อหน้าจาก FullName`

เพิ่มคอลัมน์ใหม่ที่ใช้ Text.BeforeDelimiter เพื่อแยกชื่อหน้า

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

- ใช้คู่กับ Text.AfterDelimiter เพื่อแยกข้อมูลแบบสองส่วน เช่น "FirstName.LastName"

- ตัวคั่นสามารถเป็นหลายตัวอักษรได้ เช่น ":::" หรือ "--"

- index = 0 หมายถึงตัวคั่นตัวแรก, index = 1 หมายถึงตัวที่สอง (0-based นับ)

- ถ้าไม่ระบุ index จะเริ่มหาจากตัวแรกโดยอัตโนมัติ

- ใช้ RelativePosition.FromEnd เมื่อต้องการนับจากท้ายสุด

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

**Q: ถ้าข้อความไม่มีตัวคั่นจะเกิดอะไร?**

ฟังก์ชันจะคืนค่าข้อความทั้งหมดเอง ไม่มีข้อผิดพลาด

**Q: ต่างกับ Text.Split อย่างไร?**

Text.Split ตัดข้อความออกเป็นลิสต์ทั้งหมด Text.BeforeDelimiter ดึงเฉพาะส่วนหน้า

**Q: ใช้ RelativePosition ได้กับเรื่องอะไร?**

ใช้เมื่อต้องการนับตัวคั่นจากท้ายสุด เช่นแยกนามสกุลไฟล์จากที่อยู่ไฟล์

**Q: ตัวคั่นอาจเป็นสตริงยาวได้ไหม?**

ได้ เช่น Text.BeforeDelimiter("Hello---World", "---") จะได้ "Hello"

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

- [Text.AfterDelimiter – ดึงข้อความส่วนหลังตัวคั่น](https://www.thepexcel.com/functions/power-query/text-functions/text-afterdelimiter/)
- [Text.BetweenDelimiters – ดึงข้อความระหว่างตัวคั่น](https://www.thepexcel.com/functions/power-query/text-functions/text-betweendelimiters/)

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

- [Microsoft Learn - Text.BeforeDelimiter](https://learn.microsoft.com/en-us/powerquery-m/text-beforedelimiter) _(official)_
- [PowerQuery.how - Text.BeforeDelimiter](https://powerquery.how/text-beforedelimiter/) _(article)_

---

_Source: [https://www.thepexcel.com/functions/power-query/text-functions/text-beforedelimiter/](https://www.thepexcel.com/functions/power-query/text-functions/text-beforedelimiter/)_
