Thep Excel

BLANKคืนค่าว่าง (Empty Value)

BLANK คืนค่าว่างเปล่า (Empty Value) ในDAX ซึ่งแตกต่างจาก 0 หรือ “” โดยใช้สำหรับระบุว่าไม่มีข้อมูล มักใช้ใน IF เพื่อซ่อนผลลัพธ์ที่ไม่ต้องการ

fx
=BLANK()

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

อัปเดต 13 December 2025

Syntax & Arguments

อาร์กิวเมนต์ ชนิด คำอธิบาย
[(ไม่มีอาร์กิวเมนต์)]ไม่บังคับ none BLANK() ไม่มีพารามิเตอร์ใดๆ เรียกใช้โดยตรงเพื่อคืนค่าว่างเปล่า

[ ] = อาร์กิวเมนต์ที่ไม่บังคับ

Additional Notes

BLANK เป็นฟังก์ชันที่ คืนค่าว่างเปล่า (null/empty value) ในDAX

จุดสำคัญของ BLANK:
– ไม่เหมือน 0: ค่า BLANK ไม่ใช่เลขศูนย์ (0) จะไม่นำมาคำนวณในผลรวมบางฟังก์ชัน
– ไม่เหมือน “”: ค่า BLANK ไม่ใช่ข้อความว่างเปล่า มีความแตกต่างในการเปรียบเทียบ
– ขึ้นอยู่กับบริบท: มักใช้ใน IF หรือ IFERROR เพื่อซ่อนค่าที่ไม่ต้องการ เช่น #DIV/0! หรือค่าที่ต่ำกว่าเกณฑ์

ส่วนตัวผมคิดว่า BLANK เป็นหนึ่งใน DAX Basics ที่ต้องเข้าใจให้ลึกซึ้ง เพราะมันส่งผลต่อการแสดงผลใน Matrix, Cards, และการคำนวณต่างๆ ถ้าไม่เข้าใจดี อาจได้ผลลัพธ์ไม่คาดหวัง 😎

How it works

การจัดการกับ Division by Zero

ใช้ DIVIDE(Numerator, Denominator, BLANK()) เพื่อคืนค่าว่างแทน Error เมื่อตัวหารเป็นศูนย์

ซ่อนค่าที่ไม่ต้องการแสดง

ใช้ IF(Condition, Value, BLANK()) เพื่อไม่ให้แสดงค่าในบางสถานการณ์

Examples

ตัวอย่างพื้นฐาน: ซ่อนค่าเมื่อยอดขายต่ำHigh Sales Only = IF( [Total Sales] > 1000, [Total Sales], BLANK() )

ใช้ BLANK() ในอาร์กิวเมนต์ false ของ IF เพื่อไม่แสดงค่าที่ไม่ตรงเงื่อนไข มีประโยชน์ในการแสดงผลใน Power BI Matrix

fx
High Sales Only = IF( [Total Sales] > 1000, [Total Sales], BLANK() )

ผลลัพธ์แสดงเฉพาะยอดขายที่เกิน 1,000 ส่วนที่ต่ำกว่าจะไม่แสดง
หลีกเลี่ยง Division by Zero ErrorRatio = IF( [Total Sales] = 0, BLANK(), [Profit] / [Total Sales] )

ใช้ BLANK() เพื่อไม่แสดง #DIV/0! error เมื่อตัวส่วนเป็น 0 ดีกว่าการแสดง 0 หรือข้อความ error

fx
Ratio = IF( [Total Sales] = 0, BLANK(), [Profit] / [Total Sales] )

ผลลัพธ์คิดอัตราส่วน หรือแสดงว่าง หากไม่มียอดขาย
ตรวจสอบข้อมูลที่ขาดหายHas Data = IF( ISBLANK([Customer Name]), "No Customer", "Has Customer" )

ใช้ ISBLANK() เพื่อตรวจสอบว่าค่าเป็น BLANK หรือไม่ ซึ่งแตกต่างจากการเปรียบเทียบกับ "" หรือ 0

fx
Has Data = IF( ISBLANK([Customer Name]), "No Customer", "Has Customer" )

ผลลัพธ์ข้อความแสดงว่ามีข้อมูลลูกค้าหรือไม่
กรอง BLANK ออกจากการนับActive Customers = COUNTROWS( FILTER(Customer, [Total Sales] BLANK()) )

ใช้ <> BLANK() ในตัวกรองเพื่อกำจัดแถวที่ไม่มีข้อมูล เมื่อใช้ FILTER ต้องใช้ BLANK() เปรียบเทียบแบบนี้

fx
Active Customers = COUNTROWS( FILTER(Customer, [Total Sales] <> BLANK()) )

ผลลัพธ์จำนวนลูกค้าที่มียอดขาย

FAQs

BLANK() ต่างจาก 0 และ "" อย่างไร?+

BLANK() = ค่า null/empty ไม่มีอยู่จริง | 0 = เลขศูนย์ (ตัวเลข) | "" = ข้อความว่างเปล่า (Text) ความแตกต่างสำคัญ: SUM() จะเพิกเฉยต่อ BLANK แต่จะนับ 0 เข้า และการเปรียบเทียบ BLANK = 0 จะคืน TRUE (automatic coercion) แต่ BLANK == 0 จะคืน FALSE (strict equality)

เมื่อไหร่ DAX คืนค่า BLANK เอง?+

DAX จะคืน BLANK โดยอัตโนมัติใน: (1) Division by zero เช่น DIVIDE(10,0) | (2) LOOKUPVALUE หรือ RELATED ไม่พบค่า | (3) Functions ที่ผลลัพธ์ว่างเปล่า | (4) Aggregation ของแถวเหล่านั้นไม่มีข้อมูล

ใช้ BLANK() ในตรวจสอบกับตัวดำเนินการใดดี?+

ใช้ ISBLANK() หรือเปรียบเทียบ BLANK() และ = BLANK() สำหรับการตรวจสอบที่ชัดเจน ส่วน == (strict equality) มักจะไม่ใช้กับ BLANK เพราะมักจะได้ FALSE ในกรณีที่ไม่ต้องการ

ใน Measure vs Calculated Column มีความแตกต่างไหม?+

ไม่มีความแตกต่าง BLANK() ทำงานเหมือนกันในทั้ง Measure (ไม่มี row context) และ Calculated Column (มี row context) แต่การใช้งานแตกต่าง เช่น Measure แสดง BLANK จะไม่แสดงค่าในตาราง Card แต่ Calculated Column ยังแสดง BLANK ให้เห็น

Resources & Related

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

ฟังก์ชันนี้BLANKOther
Logical (4)
COALESCE

COALESCE คืนค่าแรกที่ไม่เป็น BLANK() จากหลายอาร์กิวเมนต์ เหมาะกับการกำหนดค่าเริ่มต้น (fallback) เช่น ใช้ค่า 0 เมื่อ Measure เป็น BLANK หรือเลือกค่าจากหลายแหล่งตามลำดับความสำคัญ

IF

IF เป็นฟังก์ชันตรรกะพื้นฐานที่สำคัญที่สุดใน DAX ใช้สำหรับตรวจสอบเงื่อนไข (logical test) แล้วคืนค่าที่แตกต่างกันตามผลลัพธ์ว่าเป็นจริง (TRUE) หรือเท็จ (FALSE) สามารถใช้ได้ทั้งในบริบท calculated column, measure, calculated table และ visual calculation ซึ่งทำให้มีความยืดหยุ่นสูง คืนค่าเป็น scalar value ได้ทุกประเภท ไม่ว่าจะเป็นตัวเลข ข้อความ วันที่ หรือค่า boolean ถ้าไม่ระบุค่าสำหรับกรณีเท็จ (value_if_false) จะคืน BLANK() โดยอัตโนมัติ มีคุณสมบัติพิเศษคือ lazy evaluation behavior ที่ประมวลผลเฉพาะเส้นทาง (branch) ที่ถูกเลือกเท่านั้น ทำให้มีประสิทธิภาพในการทำงานที่ดี แตกต่างจาก Excel IF อย่างชัดเจนตรงที่ใช้รูปแบบอ้างอิงแบบ Table[Column] ทำงานภายใต้ filter context และแยกความแตกต่างระหว่าง BLANK กับ 0 อย่างเข้มงวด

IF.EAGER

IF.EAGER ทำงานเหมือน IF แต่ใช้แผน eager ที่อาจประเมินทั้ง value_if_true และ value_if_false ทำให้ควรระวังเรื่อง performance และกรณีที่อีกแขนงอาจเกิด error แม้เงื่อนไขจะไม่เลือกแขนงนั้น

IFERROR

IFERROR ใช้ดักจับข้อผิดพลาดในนิพจน์: ถ้า Value เกิด error จะคืนค่า ValueIfError แทน ถ้าไม่เกิด error จะคืนค่าของ Value เดิม เหมาะสำหรับการแปลงชนิดข้อมูล การหารที่อาจเป็นศูนย์ หรือ measure ที่ไม่เสถียร

Time Intelligence (4)
FIRSTNONBLANK

FIRSTNONBLANK คืนค่าตัวแรกของ Column ที่ทำให้ Expression ไม่เป็น BLANK ใช้บ่อยเพื่อหา "ค่าแรกที่มีข้อมูล" เช่นวันแรกที่มียอดขาย (คืนค่าเป็นวันที่) และมักใช้ร่วมกับ time intelligence

FIRSTNONBLANKVALUE

FIRSTNONBLANKVALUE คืนค่าแรกที่ไม่เป็น BLANK ของ Expression เมื่อประเมินตามลำดับของ Column ซึ่งมีประโยชน์ในการหาค่าเริ่มต้นหรือค่าแรกที่มีข้อมูลจริง เช่นยอดขายของวันแรกที่มีการขาย

LASTNONBLANK

LASTNONBLANK คืนค่าตัวสุดท้ายจากคอลัมน์ที่ทำให้ expression ไม่เป็น BLANK ใช้บ่อยกับ semi-additive measures และเวลาต้องการหา "วันล่าสุดที่มีข้อมูล" ตามลำดับแถวของคอลัมน์

LASTNONBLANKVALUE

LASTNONBLANKVALUE คืนค่าสุดท้ายที่ไม่เป็น BLANK ของ Expression เมื่อประเมินตามลำดับของ Column ในบริบทตัวกรองปัจจุบัน ใช้หา "ค่าล่าสุดที่มีข้อมูล" เช่นยอดขายของวันล่าสุดที่มีค่า

Math and Trig (1)
DIVIDE

DIVIDE ทำการหารพร้อม Alternate Result หากตัวหารเป็นศูนย์หรือ BLANK ช่วยให้ Measure ไม่เกิด error และควบคุมค่าที่ต้องการแสดงได้

Comments

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