---
title: Text.Middle – ดึงข้อความจากตรงกลาง
url: https://www.thepexcel.com/functions/power-query/text-functions/text-middle/
type: function-explainer
program: Power Query
syntax: "Text.Middle(text as nullable text, start as number, optional count as nullable number) as nullable text"
date: 2025-12-04
updated: 2025-12-24
scores:
  popularity: 6
  difficulty: 3
  usefulness: 6
---

# Text.Middle – ดึงข้อความจากตรงกลาง

> Text.Middle ใช้สำหรับดึงข้อความตั้งแต่ตำแหน่งที่ระบุไปจำนวนอักขระที่กำหนด หากไม่ระบุจำนวนตัวอักษร จะ

## คำอธิบาย

Text.Middle ใช้สำหรับดึงข้อความตั้งแต่ตำแหน่งที่ระบุไปจำนวนอักขระที่กำหนด หากไม่ระบุจำนวนตัวอักษร จะดึงจากตำแหน่งเริ่มต้นไปถึงท้าย

## Syntax

```excel
Text.Middle(text as nullable text, start as number, optional count as nullable number) as nullable text
```

## Arguments

| Name | Required | Type | Default | Description |
| --- | --- | --- | --- | --- |
| text | Yes | nullable text |  | ข้อความต้นฉบับที่ต้องการดึง |
| start | Yes | number |  | ตำแหน่ง zero-based ที่ต้องการเริ่มต้น (0 คือตัวแรก, 1 คือตัวที่สอง ฯลฯ) |
| count | No | nullable number | null | จำนวนอักขระที่ต้องการดึง ถ้าไม่ระบุหรือขอมากกว่าตัวอักษรที่เหลือ จะดึงจนถึงท้ายสตริง |

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

### แยกส่วนกลางของรหัส ID

แยกส่วนกลางของรหัส ID

### ดึงข้อมูลจากตำแหน่งคงที่ในข้อความ

ดึงข้อมูลจากตำแหน่งคงที่ในข้อความ

### ประมวลผลข้อความที่มีรูปแบบตายตัว

ประมวลผลข้อความที่มีรูปแบบตายตัว

## ตัวอย่าง

### 1. ดึง 5 อักขระตั้งแต่ตำแหน่ง 0

```excel
Text.Middle("Hello World", 0, 5)
```

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

ดึง 5 อักขระจากตำแหน่ง 0 (ตัวแรก) ของ "Hello World"

### 2. ดึง 5 อักขระตั้งแต่ตำแหน่ง 6

```excel
Text.Middle("Hello World", 6, 5)
```

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

ดึง 5 อักขระจากตำแหน่ง 6 ของ "Hello World" ได้คำว่า "World"

### 3. ดึงจากตำแหน่งถึงท้าย

```excel
Text.Middle("Hello World", 6)
```

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

ดึงจากตำแหน่ง 6 ถึงท้ายสตริง โดยไม่ระบุจำนวนตัวอักษร

### 4. ดึงสื่อข้อมูล SKU แบบคงที่

```excel
Text.Middle("SKU20250315-ABC-001", 11, 3)
```

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

จากสตริง SKU ที่มีรูปแบบคงที่ ดึงส่วนรหัส ABC ออกมา ตำแหน่ง 11 เป็นจุดเริ่มต้นของรหัส

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

- ใช้ร่วมกับ Table.AddColumn เพื่อสกัดข้อมูลจากคอลัมน์ที่มีรูปแบบคงที่

- ร่วมกับ Text.Length เพื่อคำนวณตำแหน่งแบบไดนามิก เช่น Text.Middle(text, Text.Length(text) - 3, 3) เพื่อดึง 3 ตัวอักษรสุดท้าย

- เมื่อหา start position ให้ใช้ Text.PositionOf เพื่อหาตำแหน่งของข้อความที่ต้องการ

- ตรวจสอบความยาวของข้อความด้วย Text.Length ก่อนใช้ Text.Middle เพื่อหลีกเลี่ยงข้อผิดพลาด

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

**Q: ตำแหน่ง (start) นับจากไหน?**

ตำแหน่งนับแบบ zero-based จากตัวแรก ดังนั้น 0 คือตัวแรก, 1 คือตัวที่สอง เป็นต้น

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

ฟังก์ชันจะดึงจากตำแหน่งที่ระบุไปจนถึงท้ายสตริง ไม่มีข้อผิดพลาด

**Q: ใช้กับ null ได้ไหม?**

ถ้าอาร์กิวเมนต์ text เป็น null ฟังก์ชันจะคืนค่า null ไม่เกิด error

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

Text.Middle และ Text.Range ทำงานเหมือนกัน คือดึงข้อความจากตำแหน่งและจำนวนตัวอักษร โดย Text.Range เป็น generic version ที่ทำงานกับ List และ Text ได้

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

- [Text.Start – ดึงอักขระจากตัวแรกของข้อความ](https://www.thepexcel.com/functions/power-query/text-functions/text-start/)
- [Text.End – ดึงอักขระจากท้ายข้อความ](https://www.thepexcel.com/functions/power-query/text-functions/text-end/)
- [Text.At – ดึงอักขระที่ตำแหน่งที่ระบุ](https://www.thepexcel.com/functions/power-query/text-functions/text-at/)
- [Text.Range – ดึงช่วงของข้อความ](https://www.thepexcel.com/functions/power-query/text-functions/text-range/)

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

- [Microsoft Learn: Text.Middle](https://learn.microsoft.com/en-us/powerquery-m/text-middle) _(official)_
- [Text Functions - Power Query M Reference](https://learn.microsoft.com/en-us/powerquery-m/text-functions) _(official)_

---

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