
สูตรขั้นสูงเช่น IF และ VLOOKUP อาจ बोझil ใน Excel เมื่อทำงานกับชุดข้อมูลขนาดใหญ่ ส่วน Power BI เสนอ Data Analysis Expressions (DAX) ซึ่งสามารถลดความซับซ้อนและทำให้การคำนวณที่ซับซ้อนเหล่านี้ง่ายขึ้น สูตร DAX ช่วยให้คุณสร้างคอลัมน์คำนวณ Measures และตารางที่มีประสิทธิภาพและดูแลรักษาง่ายกว่าสูตร Excel แบบดั้งเดิม
ในบทช่วยสอนนี้ เราจะสำรวจ 5 สูตร Power BI DAX ที่ทำให้การคำนวณ Excel ที่ซับซ้อนง่ายขึ้น หากคุณเป็นผู้ใช้ Excel ระดับสูง การเรียนรู้สูตร DAX จะเพิ่มทักษะ Power BI ของคุณ และทำให้การวิเคราะห์ข้อมูลของคุณมีความแข็งแกร่งและมีประสิทธิภาพมากขึ้น
1. CALCULATE: การปรับเปลี่ยนบริบทตัวกรอง (Filter Context)
ใน Excel การคำนวณค่าตามเงื่อนไขเฉพาะมักต้องการคำสั่ง IF 巢狀 (Nested IF) ฟังก์ชัน CALCULATE ของ DAX ช่วยให้คุณปรับเปลี่ยนบริบทตัวกรอง (Filter Context) ได้อย่างมีประสิทธิภาพและอ่านง่ายกว่า เป็นหนึ่งในฟังก์ชัน DAX ที่ทรงพลังที่สุด ช่วยให้ทำการรวมข้อมูลซับซ้อนและการกรองแบบไดนามิกได้
เทียบเท่า Excel: คำสั่ง IF 巢狀 (Nested IF Statements)
ใน Excel คุณอาจมีอย่างนี้:
=IF(A2 > 100, "High", IF(A2 > 50, "Medium", "Low"))
Power BI DAX:
Filter Sales Category = CALCULATE ( IF (SUM(Sales[SalesAmount]) > 50000, "High", "Low"), Products[Category] = "Book" )

ในกรณีนี้ CALCULATE เปลี่ยนบริบทตัวกรองให้รวมเฉพาะข้อมูลสำหรับ "Book" ก่อนประเมินว่ายอดขายรวมเกิน 50,000 หรือไม่
CALCULATE ปรับเปลี่ยนบริบทตัวกรองปัจจุบัน มันบอก Power BI ให้ละเลยตัวกรองที่มีอยู่และใช้เงื่อนไขที่ระบุแทน คุณยังสามารถซ้อนเงื่อนไขหลายเงื่อนไขได้ตามต้องการ
2. RELATED: การเข้าถึงตารางที่เกี่ยวข้อง
Excel ใช้ฟังก์ชัน Lookup เพื่อดึงค่าที่เกี่ยวข้องจากตารางอื่น ใน Power BI ฟังก์ชัน RELATED ทำให้กระบวนการนี้ตรงไปตรงมาและมีประสิทธิภาพมากขึ้น
เทียบเท่า Excel: VLOOKUP
ใน Excel สูตรอย่างนี้:
=VLOOKUP(A2, SalesData, 2, FALSE)
จะดึงค่าจากคอลัมน์ที่ 2 ของตาราง SalesData โดยที่คอลัมน์แรกตรงกับค่าใน A2
Power BI DAX: RELATED
ฟังก์ชัน RELATED ใน DAX ดึงค่าจากตารางที่เกี่ยวข้อง ในการใช้ RELATED ต้องมีความสัมพันธ์ระหว่างสองตารางในโมเดลข้อมูล Power BI
- คอลัมน์คำนวณในตาราง Sales
Product Category = RELATED(Products[Category])

ที่นี่ ฟังก์ชัน RELATED ดึง Product Category จากตาราง Products ตามความสัมพันธ์ที่มีอยู่ ทำให้ไม่ต้องใช้สูตร Lookup ที่ซับซ้อน และลดข้อผิดพลาดโดยใช้ประโยชน์จากโมเดลข้อมูล
3. SWITCH(TRUE(), …): ตัวแทนที่สะอาดกว่า IF 巢狀
ฟังก์ชัน IF ของ Excel กลายเป็นยากต่อการจัดการเมื่อมีเงื่อนไขมาก แต่ฟังก์ชัน SWITCH ของ DAX ทำให้ตรรกะเงื่อนไขเรียบง่ายขึ้น เหมาะอย่างยิ่งเมื่อจัดการหลายเงื่อนไขโดยไม่ต้อง IF 巢狂ลึก
เทียบเท่า Excel: คำสั่ง IF 巢狀 (Nested IF Statements)
ใน Excel คุณอาจใช้อย่างนี้:
=IF(A2>100000,"High",IF(A2>50000,"Medium",IF(A2>10000,"Low","Tiny")))
Power BI DAX:
Sales Tier = SWITCH( TRUE(), [Total Sales] > 200000, "High Performer", [Total Sales] > 150000, "Strong", [Total Sales] > 100000, "Moderate", "Entry Level" )

[Total Sales] เป็น Measure อีกตัวหนึ่ง:
Total Sales = SUM(Sales[Amount])
Customer Segment: คอลัมน์คำนวณ
Customer Segment Logic = SWITCH( TRUE(), CALCULATE([Total Sales]) > 75000 && RELATED(Regions[Country]) = "United States", "US VIP", CALCULATE([Total Sales]) > 50000 && RELATED(Regions[Country]) = "United Kingdom", "UK Premium", CALCULATE([Total Sales]) > 30000 && RELATED(Regions[Country]) = "Canada", "Canada Premium", Customers[CustomerType] = "Premium", "Premium Customer", "Standard" )

วิธีนี้อ่านง่ายกว่าคำสั่ง IF 巢狂ลึกอย่างมีนัยสำคัญ เหมาะสำหรับตรรกะการจัดประเภท เช่น การแบ่งกลุ่มลูกค้า การแบ่งช่วง (banding) หรือการจัดประเภท KPI
4. SUMX: วนซ้ำตารางเพื่อคำนวณผลรวม
เมื่อคุณต้องการคำนวณแถวต่อแถว (row by row) แล้วรวมผลลัพธ์ SUMX เป็นฟังก์ชันที่เหมาะสม มันวนซ้ำตาราง ประเมินนิพจน์สำหรับแต่ละแถว แล้วรวมผลลัพธ์
เทียบเท่า Excel: SUMPRODUCT
ใน Excel คุณอาจใช้:
=SUMPRODUCT(A2:A10, B2:B10)
Power BI DAX:
Total Revenue = SUMX( Sales, Sales[Quantity] * Sales[UnitPrice] )

ฟังก์ชัน SUMX วนซ้ำแต่ละแถวของตาราง Sales คูณ Quantity ด้วย UnitPrice แล้วรวมผลลัพธ์
5. CALCULATE + Time Intelligence: กำจัดตรรกะวันที่ด้วยมือ
ใน Excel การคำนวณตามเวลามักพึ่งพา SUMIFS, OFFSET, หรือ INDEX/MATCH ที่ซับซ้อน DAX มีฟังก์ชัน Time Intelligence ในตัวที่ทำให้งานเหล่านี้ง่ายขึ้น
Power BI DAX:
Sales YoY % Growth = VAR CurrentSales = SUM(Sales[SalesAmount]) VAR PreviousSales = CALCULATE( SUM(Sales[SalesAmount]), SAMEPERIODLASTYEAR('Calendar'[Date]) ) RETURN DIVIDE(CurrentSales - PreviousSales, PreviousSales, 0)

Measures Time Intelligence แบบง่ายในตัว:
YTD Sales = TOTALYTD( SUM(Sales[SalesAmount]), 'Calendar'[Date] )
Sales vs Last Year = CALCULATE( SUM(Sales[SalesAmount]), PARALLELPERIOD('Calendar'[Date], -1, YEAR) )
ฟังก์ชันเหล่านี้ทำงานร่วมกับตัวกรองวันที่ในรายงานของคุณได้อย่างราบรื่น รวมถึง Slicers สำหรับเดือน ไตรมาส หรือปีบัญชี ไม่ต้องมีคอลัมน์ช่วยหรือการปรับแต่งด้วยมือ
DAX Formulas ในรายงาน:

เคล็ดลับ: การใช้ DIVIDE เพื่อจัดการข้อผิดพลาด
ใน Excel การหารด้วยศูนย์มักทำให้เกิดข้อผิดพลาด DAX ให้โซลูชันที่แข็งแกร่งกว่าผ่านฟังก์ชัน DIVIDE ซึ่งจัดการการหารด้วยศูนย์อย่างเหมาะสม
ฟังก์ชัน DIVIDE ช่วยให้คุณระบุผลลัพธ์สำรองเมื่อเกิดการหารด้วยศูนย์:
Profit Margin = DIVIDE(Sales[Profit], Sales[Total Revenue], 0)
ฟังก์ชันนี้คืนค่า 0 เมื่อตัวหารเป็นศูนย์ หลีกเลี่ยงข้อผิดพลาดโดยไม่ต้องใช้ตรรกะเพิ่มเติม
เคล็ดลับการเริ่มต้นเร็วสำหรับผู้ใช้ Excel
- สร้างความสัมพันธ์ก่อนเสมอ: นี่คือที่ที่ RELATED และ CALCULATE ได้พลังของพวกเขา
- สร้าง Measures ไม่ใช่ Columns: Measures เร็วกว่าและยืดหยุ่นกว่าโดยทั่วไป
- ใช้ตัวแปร (VAR): ช่วยเพิ่มความอ่านง่ายและการบำรุงรักษา
- ทดสอบใน Visual ว่าง: ตรวจสอบ Measures ด้วย Card หรือ Table พร้อม Slicers
- เคล็ดลับประสิทธิภาพ: รักษาตัวกรองให้แคบที่สุดเท่าที่จะเป็นไปได้ การกรองคอลัมน์โดยตรงมักเร็วกว่าการสแกนตารางทั้งหมด
สรุป
สูตร Power BI DAX 5 ตัวนี้ — CALCULATE, RELATED, SWITCH, SUMX และฟังก์ชัน Time Intelligence — ให้วิธีที่สะอาดและมีประสิทธิภาพมากกว่าในการจัดการการคำนวณที่จะต้องใช้สูตร Excel ที่ซับซ้อนอย่าง IF 巢狂 หรือ VLOOKUP ด้วยการนำเทคนิคเหล่านี้ไปใช้ในเวิร์กโฟลว์ของคุณ คุณสามารถลดความซับซ้อนของโมเดลข้อมูล เพิ่มประสิทธิภาพ และสร้างรายงานที่ขยายได้ (scalable) มากขึ้น
รับแบบฝึกหัด Excel ขั้นสูงพร้อมเฉลยฟรี!