Thep Excel

DAX · Text

LEN (DAX)นับจำนวนอักขระในข้อความ

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

fx
=LEN(<Text>)

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

อัปเดต 13 December 2025

Syntax & Arguments

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

Additional Notes

LEN คืนจำนวนอักขระทั้งหมดในข้อความ (รวมช่องว่าง) เป็นจำนวนเต็ม

ฟังก์ชันนี้เป็นสตริงง่ายๆ ที่ใช้ได้ทั้ง Calculated Column (row context) และ Measure ส่วนตัวผมใช้ LEN บ่อย เวลาต้องตรวจสอบว่า ID มีความยาวถูกต้อง หรือค่าว่างไหม หลังจาก TRIM ข้อมูล

จุดเจ๋งของ LEN คือมัน handle Unicode ได้อัตโนมัติ สตริงไทย สตริงโรมัน นับเหมือนกัน (1 อักขระ = 1) ต่างจาก Excel สมัยโบราณที่มี LEN กับ LENB ต่างกัน

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

How it works

ตรวจความยาวรหัส/ข้อความ

เช็คว่าโค้ด/รหัสมีความยาวตามที่กำหนดหรือไม่

ตรวจค่าว่างหลังตัดช่องว่าง

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

Examples

ตัวอย่างพื้นฐาน: นับอักขระของสตริงคงที่LEN("DAX")

นับจำนวนอักขระในข้อความ "DAX" ได้ 3 ตัว

fx
=LEN("DAX")

ผลลัพธ์3
ตัวอย่างในคอลัมน์: นับความยาวของชื่อชื่อมีความยาว = LEN(Customers[CustomerName])

ใช้ใน Calculated Column – ทุกแถวจะคำนวณความยาวของชื่อในแถวนั้นเอง (row context)

fx
ชื่อมีความยาว =
LEN(Customers[CustomerName])

ผลลัพธ์5 (ถ้า CustomerName = "Alice"), 7 (ถ้า = "Charlie")
ตัวอย่างตรวจค่าว่าง: ตรวจหลัง TRIMมีชื่อจริงหรือ = IF( LEN(TRIM(Customers[NameInput])) = 0, "ว่าง", "มีข้อมูล" )

TRIM ตัดช่องว่างส่วนเกิน แล้ว LEN ตรวจว่าเหลืออักขระจริงหรือไม่ – trick สำคัญสำหรับ data quality

fx
มีชื่อจริงหรือ =
IF(
LEN(TRIM(Customers[NameInput])) = 0,
"ว่าง",
"มีข้อมูล"
)

ผลลัพธ์"ว่าง" ถ้า NameInput เป็นช่องว่าง หรือเพียงแค่ spaces, "มีข้อมูล" ถ้ามีตัวอักษรจริง
ตัวอย่างผสม: ตรวจ ID ถูกต้องID ถูกต้องหรือ = IF( LEN(Customers[CustomerID]) >= 5, "OK", "ผิด – สั้นเกินไป" )

ใช้ตรวจสอบว่า ID ยาวพอมาตรฐานหรือไม่ – validation แบบง่ายๆ

fx
ID ถูกต้องหรือ =
IF(
LEN(Customers[CustomerID]) >= 5,
"OK",
"ผิด – สั้นเกินไป"
)

ผลลัพธ์"OK" ถ้า ID มีอักขระ >= 5, "ผิด – สั้นเกินไป" ถ้าน้อยกว่า
ตัวอย่างวัดความยาวรวม: สำหรับ Address fieldsความยาว_ที่อยู่_รวม = LEN(Customers[Address1]) + LEN(Customers[Address2])

รวมความยาวจากหลายคอลัมน์ – วิธีผสมผสาน LEN กับ logic ที่ซับซ้อน

fx
ความยาว_ที่อยู่_รวม =
LEN(Customers[Address1]) +
LEN(Customers[Address2])

ผลลัพธ์25 (ถ้า Address1="123 Main St" มี 11 ตัว + Address2="Bangkok" มี 7 ตัว = 18)

FAQs

LEN นับช่องว่าง (space) ด้วยไหม?+

ใช่ LEN นับ space เป็นอักขระ ถ้า "ABC " (มี space สุดท้าย) จะได้ 4 ตัว ถ้าต้องการไม่นับ ให้ TRIM ก่อน: LEN(TRIM("ABC ")) = 3

ถ้าค่าเป็น BLANK จะเกิดอะไร?+

BLANK ส่วนใหญ่ LEN จะ handle เป็น 0 แต่ถ้าต้องการปลอดภัย ให้ใช้ IF(ISBLANK(…), 0, LEN(…)) หรือ COALESCE([Column], "") ก่อน

LEN ใช้ได้กับข้อมูลตัวเลขไหม?+

ได้ DAX จะแปลงตัวเลขเป็นข้อความก่อนแล้วนับ เช่น LEN(12345) = 5 แต่วิธีนี้ไม่ recommended – ให้ใช้ explicit คือ LEN(TEXT(12345, "0")) เด่นชัดกว่า

LEN จะนับอักขระภาษาไทยเหมือนอังกฤษไหม?+

ใช่ DAX ใช้ Unicode ดังนั้นไม่ว่าจะไทย, อังกฤษ, แม่นจีน – นับเหมือนกันทั้งหมด ต่างจาก Excel สมัยจอม LENB (สำหรับ double-byte)

Resources & Related

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

ฟังก์ชันนี้LEN (DAX)Text
Text (14)
CONCATENATE

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

EXACT

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

FIND

FIND คืนค่าตำแหน่งเริ่มต้นของ FindText ภายใน WithinText (เริ่มนับที่ 1) โดยค้นหาแบบแยกตัวพิมพ์ใหญ่/เล็ก และสามารถระบุ StartNum/NotFoundValue เพื่อควบคุมจุดเริ่มค้นหาและผลลัพธ์เมื่อไม่พบได้

LEFT

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

LOWER

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

MID

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

REPLACE

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

REPT

REPT ทำซ้ำข้อความตามจำนวนที่กำหนด ช่วยสร้างสัญลักษณ์ซ้ำๆ เช่น ดาว, จุด, หรือเครื่องหมายคั่น เพื่อจัดรูปแบบและเน้นข้อมูลในรายงาน

RIGHT

RIGHT คืนค่าตัวอักษรจำนวนหนึ่งจากจุดสิ้นสุดของข้อความ (ด้านขวา) ตามจำนวนที่ระบุ

SEARCH

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

SUBSTITUTE

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

TRIM

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

UNICODE

UNICODE คืนค่า code point ของอักขระตัวแรกในข้อความ ใช้ในการตรวจสอบ/จำแนกข้อความตามอักขระนำหน้า หรือทำตรรกะเกี่ยวกับการเข้ารหัส และมักใช้คู่กับ UNICHAR

UPPER

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

Comments

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