Thep Excel

DAX · Text

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

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

fx
=TRIM(<text>)

ความนิยม6/10
ความยาก2/10
ประโยชน์6/10

อัปเดต 13 December 2025

Syntax & Arguments

อาร์กิวเมนต์ ชนิด คำอธิบาย
text String ข้อความที่ต้องการลบช่องว่างส่วนเกิน สามารถเป็นลิเทอรัลข้อความ เป็นการ reference คอลัมน์ หรือผลลัพธ์จากฟังก์ชันอื่น

Additional Notes

TRIM ลบช่องว่างส่วนเกินในข้อความ โดยตัดทั้งช่องว่างนำหน้า ช่องว่างท้าย และลดช่องว่างหลายตัวระหว่างคำให้เหลือเพียงตัวเดียว ฟังก์ชันนี้เหมาะสำหรับทำความสะอาดข้อมูลที่นำเข้ามาจากระบบอื่น เพราะสำคัญนิดเดือยว่า ช่องว่างแฝง ๆ ที่มองไม่เห็นมักทำให้ VLOOKUP/XLOOKUP/SEARCH ไม่เจอค่าถึงแม้ว่าข้อมูลดูเหมือนเหมือนกันเลย

ที่เจ๋งคือ TRIM ช่วยแก้ปัญหา Data Integration ที่ยุ่งยากที่สุด คือเมื่อข้อมูลมาจากหลายระบบ (Excel ที่มีข้อมูลเก่า เว็บไซต์ CSV ต่างๆ) บางอันมีช่องว่างแฝง บางอันไม่มี ถ้าไม่ TRIM ก่อน join/match จะเจอค่าแปลก ๆ เช่นคณะหลายคนพยายาม VLOOKUP แล้วไม่เจอทั้ง ๆ ที่ข้อมูลชัด ๆ อยู่

ส่วนตัวผมมักใช้ TRIM เป็นตัวแรกในขั้นตอน Data Transformation ทั้ง DAX และ Power Query อยากจะหลีกเลี่ยง magic ค่อนข้างบ่อย ผมเขียน VAR เก็บค่า TRIM ไว้แล้วค่อยนำไปทำ UPPER/LOWER/SUBSTITUTE เพื่อให้มั่นใจว่าข้อมูลสะอาด ส่วนใหญ่จะไม่มีปัญหา แต่ข้อมูลจริง ๆ มีเรื่องแปลก ๆ เสมอ

How it works

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

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

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

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

Examples

ตัวอย่างที่ 1: ลบช่องว่างนำหน้า ท้าย และช่องว่างหลายตัวTRIM(" Hello World ")

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

fx
= TRIM(" Hello World ")

ผลลัพธ์"Hello World"
ตัวอย่างที่ 2: ทำความสะอาดคอลัมน์ชื่อลูกค้าชื่อสะอาด = TRIM(Customers[Name])

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

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

ผลลัพธ์ชื่อลูกค้าที่ไม่มีช่องว่างแฝง
ตัวอย่างที่ 3: ตรวจสอบว่าข้อความว่างหรือไม่ หลังจากตัดช่องว่างเป็นค่าว่างจริง? = IF( LEN(TRIM(Customers[Email])) = 0, "ว่างจริง", "มีข้อมูล" )

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

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

ผลลัพธ์"ว่างจริง" หรือ "มีข้อมูล"
ตัวอย่างที่ 4: Normalization ก่อน EXACT() comparison (แนวคิด)ทั้งสองเหมือนกันจริง? = EXACT( TRIM(UPPER(Customers[Name])), TRIM(UPPER(Lookup[Name])) )

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

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

ผลลัพธ์TRUE() หรือ FALSE()
ตัวอย่างที่ 5: ใช้ TRIM ใน CALCULATETABLE เพื่อ join ข้อมูลสินค้าจับคู่แล้ว = CALCULATETABLE( Products, Products[Code] = TRIM(Imports[Code]) )

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

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

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

FAQs

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

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

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

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

TRIM จะลบ Nonbreaking space ( ) ได้ไหม?+

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

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

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

TRIM vs CLEAN ต่างกันอย่างไร?+

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

Resources & Related

ฟังก์ชันที่ผู้เขียนโยงไว้กับ TRIM จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง

ฟังก์ชันนี้TRIMText
Text (11)
CONCATENATE

CONCATENATE ต่อข้อความ 2 ค่าให้เป็นสตริงเดียว เหมาะกับการทำ label หรือรวมข้อความจาก 2 แหล่งในบริบทปัจจุบัน

EXACT

EXACT เปรียบเทียบ Text1 กับ Text2 แบบตรงตัวและคำนึงถึงตัวพิมพ์เล็ก/ใหญ่ คืน TRUE เมื่อเหมือนกันทุกตัวอักษร เหมาะกับงานตรวจรหัส/ข้อความที่ต้องแยก case

LEFT

LEFT คืนค่าตัวอักษรจำนวนหนึ่งจากจุดเริ่มต้นของข้อความ ใช้ได้กับ Calculated Column โดยจะประมวลผลภาษาต่างๆ (Unicode) อย่างเดียวกัน

LEN (DAX)

LEN นับจำนวนอักขระของสตริง รวมช่องว่างด้วย ใช้สำหรับตรวจสอบความยาวข้อมูล การทำความสะอาด และงานเงื่อนไขตามความยาวข้อความ

LOWER

LOWER แปลงข้อความให้เป็นตัวพิมพ์เล็กทั้งหมด มีประโยชน์มากสำหรับการทำความสะอาดข้อมูลและแก้ปัญหาคีย์ไม่ตรงกันเพราะเหตุคำต่างชั้นอักษร

MID

MID คืนสตริงย่อยจากข้อความ โดยเริ่มที่ StartNum (เริ่มนับที่ 1) และดึง NumChars ตัว ใช้บ่อยในการแยก/ตัดข้อความร่วมกับ LEFT/RIGHT/FIND/SEARCH

REPLACE

REPLACE แทนที่อักขระจำนวนหนึ่งในสตริง โดยเริ่มจากตำแหน่งที่ระบุ เหมาะกับการแก้ไขข้อความเฉพาะตำแหน่ง เช่น เปลี่ยนคำนำหน้า แทนที่ตัวเลขบางหลัก หรือซ่อนบางส่วนของข้อมูล

SEARCH

SEARCH คืนค่าตำแหน่งเริ่มต้นของข้อความที่ค้นหา (ค้นหาแบบไม่สนตัวพิมพ์) หากไม่พบจะเกิดข้อผิดพลาด สามารถใช้กับ IFERROR หรือ COALESCE เพื่อจัดการกรณีไม่พบ

SUBSTITUTE

SUBSTITUTE ค้นหาและแทนที่ข้อความในสตริง สามารถแทนที่ทุกครั้งหรือเพียงครั้งที่ n เหมาะกับการปรับรูปแบบและทำความสะอาดข้อมูลโดยตรวจสอบเนื้อหา ไม่ใช่ตำแหน่ง

UPPER

UPPER แปลงข้อความให้เป็นตัวพิมพ์ใหญ่ทั้งหมด ใช้บ่อยเพื่อปรับปรุงคุณภาพข้อมูลและทำให้การเปรียบเทียบข้อความแม่นยำ

VALUE

VALUE แปลงข้อความที่แทนตัวเลขให้เป็นตัวเลข (decimal) เหมาะสำหรับข้อมูลนำเข้าที่ตัวเลขถูกเก็บเป็นข้อความหรือข้อมูลที่ไม่ทำความสะอาดอย่างถูกต้อง

Comments

อีเมลของคุณจะไม่ถูกเผยแพร่