---
title: TRIM – ลบช่องว่างส่วนเกินในข้อความ
url: https://www.thepexcel.com/functions/dax/text/trim-dax/
type: function-explainer
program: DAX
syntax: "TRIM(<text>)"
date: 2025-12-13
updated: 2025-12-25
scores:
  popularity: 6
  difficulty: 2
  usefulness: 6
---

# TRIM – ลบช่องว่างส่วนเกินในข้อความ

> ฟังก์ชันทำความสะอาดข้อความ ลบช่องว่างส่วนเกินนำหน้า ท้าย และช่องว่างหลายตัวระหว่างคำ โดยคงไว้ช่องว่า

## คำอธิบาย

ฟังก์ชันทำความสะอาดข้อความ ลบช่องว่างส่วนเกินนำหน้า ท้าย และช่องว่างหลายตัวระหว่างคำ โดยคงไว้ช่องว่างเดี่ยวระหว่างคำเท่านั้น

## Syntax

```excel
TRIM(&lt;text&gt;)
```

## Arguments

| Name | Required | Type | Default | Description |
| --- | --- | --- | --- | --- |
| text | Yes | String |  | ข้อความที่ต้องการลบช่องว่างส่วนเกิน สามารถเป็นลิเทอรัลข้อความ เป็นการ reference คอลัมน์ หรือผลลัพธ์จากฟังก์ชันอื่น |

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

### ทำความสะอาดข้อมูลก่อนจับคู่

ลดปัญหาการจับคู่ไม่ติดเพราะมีช่องว่างนำหน้า/ท้าย หรือช่องว่างหลายตัว

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

### ตรวจค่าว่างที่มีแต่ช่องว่าง

ใช้คู่กับ LEN เพื่อเช็คว่าข้อความว่างจริงหรือไม่

_เหมาะกับ:_ blank-check

## ตัวอย่าง

### 1. ตัวอย่างที่ 1: ลบช่องว่างนำหน้า ท้าย และช่องว่างหลายตัว

```excel
= TRIM("  Hello   World  ")
```

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

ลบช่องว่าง 2 ตัวนำหน้า 3 ตัวตรงกลาง 2 ตัวท้าย เหลือแค่ช่องว่างเดี่ยวตรงกลางคำ

### 2. ตัวอย่างที่ 2: ทำความสะอาดคอลัมน์ชื่อลูกค้า

```excel
ชื่อสะอาด = TRIM(Customers[Name])
```

**ผลลัพธ์:** `ชื่อลูกค้าที่ไม่มีช่องว่างแฝง`

สร้างคอลัมน์ที่ทำความสะอาดแล้ว เหมาะสำหรับนำไป VLOOKUP หรือ join กับตาราอื่น

### 3. ตัวอย่างที่ 3: ตรวจสอบว่าข้อความว่างหรือไม่ หลังจากตัดช่องว่าง

```excel
เป็นค่าว่างจริง? = 
IF(
    LEN(TRIM(Customers[Email])) = 0,
    "ว่างจริง",
    "มีข้อมูล"
)
```

**ผลลัพธ์:** `"ว่างจริง" หรือ "มีข้อมูล"`

TRIM ช่วยค้นหาช่องว่างแฝงที่ดูเหมือนข้อมูล แต่จริง ๆ ว่างเปล่า LEN นับความยาวหลังตัดแล้ว

### 4. ตัวอย่างที่ 4: Normalization ก่อน EXACT() comparison (แนวคิด)

```excel
ทั้งสองเหมือนกันจริง? = 
EXACT(
    TRIM(UPPER(Customers[Name])),
    TRIM(UPPER(Lookup[Name]))
)
```

**ผลลัพธ์:** `TRUE() หรือ FALSE()`

TRIM + UPPER ช่วยให้ EXACT ตรวจสอบข้อความได้แม่นยำ ไม่โดนช่องว่างหรือตัวพิมพ์แตกต่าง

### 5. ตัวอย่างที่ 5: ใช้ TRIM ใน CALCULATETABLE เพื่อ join ข้อมูล

```excel
สินค้าจับคู่แล้ว = 
CALCULATETABLE(
    Products,
    Products[Code] = TRIM(Imports[Code])
)
```

**ผลลัพธ์:** `ตารางสินค้าที่ matched กับรหัสที่ทำความสะอาดแล้ว`

ใช้ TRIM เพื่อให้ filter condition ตรงกัน โดยเฉพาะเวลา join ข้อมูลจากเอกสารต่างๆ

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

- ผมแนะนำให้ใช้ TRIM เป็นตัวแรกในขั้นตอน Data Cleaning ทั้งในคอลัมน์คำนวณและ Power Query หลาย ๆ ครั้งที่ VLOOKUP/XLOOKUP ไม่เจอ เพราะแค่ TRIM ผมพบว่าใช้ได้

- ส่วนตัวผมชอบ VAR ไว้ค่า TRIM แล้วค่อยเอาไปใช้ฟังก์ชันอื่น เช่น VAR TrimmedName = TRIM(Customers[Name]) RETURN ... ทำให้ code ชัดเจนและ debug ง่าย

- ถ้าข้อมูลมีช่องว่างชนิดพิเศษ (nonbreaking space หรือ control character) ให้รวม SUBSTITUTE ด้วย เช่น SUBSTITUTE(TRIM(Text), CHAR(160), " ") แล้วค่อย UPPER/LOWER/SEARCH

- ระวัง TRIM ช่างเป็นประโยชน์แต่ใช้เยอะเกินไปก็จะทำให้ model ช้า โดยเฉพาะถ้า Calculated Column ที่มีแถวเป็นแสน หลังๆ ผมจะทำ TRIM ใน Power Query ก่อนจะ Load เข้า เพื่อให้ DAX model เลิกไปซ้ำ

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

**Q: TRIM ลบช่องว่างทั้งหมดหรือแค่บางตัว?**

TRIM ลบแค่บางตัว: ลบช่องว่างนำหน้า ลบช่องว่างท้าย และลดช่องว่างหลายตัวระหว่างคำให้เหลือเพียงตัวเดียว ไม่ลบช่องว่างเดี่ยวระหว่างคำ ซึ่งสำคัญมากเพราะ "Hello World" ต้องคงช่องว่างตรงกลาง ไม่ใช่กลายเป็น "HelloWorld"

**Q: ทำไมบางครั้ง VLOOKUP ไม่เจอ ทั้ง ๆ ที่ข้อมูลชัดๆ อยู่?**

มักเป็นเพราะช่องว่างแฝง หลายท่านไม่เห็นว่า Lookup value มีช่องว่างนำหน้า ท้าย หรือหลายตัวระหว่างคำ TRIM ก่อนนำไป VLOOKUP จะช่วยได้เยอะ โดยเฉพาะข้อมูลจากระบบต่างๆ

**Q: TRIM จะลบ Nonbreaking space ( ) ได้ไหม?**

ไม่ได้ TRIM ลบแค่ space ASCII มาตรฐาน (code 32) ส่วน nonbreaking space (code 160) ที่เจอบ่อยในเว็บ TRIM จะไม่ทำอะไรกับมัน ถ้าต้องลบทั้งสองนั้นให้ใช้ SUBSTITUTE() ร่วมกับ CHAR(160) เพื่อแทนที่ nonbreaking space เป็น space ธรรมดาก่อน

**Q: ผมต้องใช้ TRIM ในคอลัมน์ที่เป็น Measure ได้ไหม?**

ได้ เพราะ TRIM ส่งกลับ text string เหมือนกับ VALUE/FORMAT ฟังก์ชันอื่น ๆ แต่สำหรับ Measure มักเป็นเรื่องระหว่าง Dimension/Filter ไม่ค่อยต้องใช้ TRIM ใน Measure เท่า ส่วนใหญ่ใช้ใน Calculated Column หรือใน Power Query ก่อนจะ Load เข้า Data Model

**Q: TRIM vs CLEAN ต่างกันอย่างไร?**

DAX มีแค่ TRIM (ลบช่องว่าง) ไม่มี CLEAN เหมือน Excel ถ้าอยากลบ control characters และ nonprinting characters ก็ต้องใช้ SUBSTITUTE หรือ REGEX (ถ้าใช้ Power BI/DAX ชั่วใหม่) แต่ปกติ TRIM + SUBSTITUTE ก็ครอบคลุมเรื่องทำความสะอาดข้อความแล้ว

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

- [LEN (DAX) – นับจำนวนอักขระในข้อความ](https://www.thepexcel.com/functions/dax/text/len-dax/)
- [SUBSTITUTE – แทนที่ข้อความที่ตรงกัน](https://www.thepexcel.com/functions/dax/text/substitute-dax/)
- [REPLACE – แทนที่ข้อความบางส่วน (DAX)](https://www.thepexcel.com/functions/dax/text/replace-dax/)
- [SEARCH – ค้นหาตำแหน่งข้อความ (ไม่สนตัวพิมพ์) ใน DAX](https://www.thepexcel.com/functions/dax/text/search-dax/)
- [UPPER – แปลงข้อความเป็นตัวพิมพ์ใหญ่ทั้งหมด](https://www.thepexcel.com/functions/dax/text/upper-dax/)
- [LOWER – แปลงเป็นตัวพิมพ์เล็ก](https://www.thepexcel.com/functions/dax/text/lower-dax/)
- [CONCATENATE – ต่อข้อความ 2 ส่วน](https://www.thepexcel.com/functions/dax/text/concatenate-dax/)
- [LEFT – ตัดข้อความจากซ้าย (DAX)](https://www.thepexcel.com/functions/dax/text/left-dax/)

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

- [Microsoft Learn: TRIM Function (DAX)](https://learn.microsoft.com/en-us/dax/trim-function-dax) _(official)_
- [DAX.guide: TRIM](https://dax.guide/trim/) _(guide)_
- [SQLBI: Text Functions in DAX](https://www.sqlbi.com/articles/text-functions-in-dax/) _(guide)_

---

_Source: [https://www.thepexcel.com/functions/dax/text/trim-dax/](https://www.thepexcel.com/functions/dax/text/trim-dax/)_
