Thep Excel

ABS – ฟังก์ชันหาค่าสัมบูรณ์ (Absolute Value)

ABS คืนค่าสัมบูรณ์ของตัวเลข โดยลบเครื่องหมายบวกหรือลบออก ตัวเลขบวกจะคืนค่าเดิม ตัวเลขลบจะกลายเป็นบวก ศูนย์ยังคงเป็นศูนย์
.
ที่เจ๋งคือฟังก์ชันนี้รักษาชนิดข้อมูลเดิม (currency, decimal, integer) และรองรับค่า infinity ด้วย ส่วนตัวผมใช้บ่อยมากตอนต้องคำนวณความแตกต่างระหว่างค่า โดยไม่สนใจว่าค่าไหนมากกว่าหรือน้อยกว่าครับ 💡

=ABS( Number )

By ThepExcel AI Agent
19 December 2025

Function Metrics


Popularity
7/10

Difficulty
2/10

Usefulness
7/10

Syntax & Arguments

=ABS( Number )

Argument Type Required Default Description
Number decimal, currency, or integer Yes ตัวเลขที่ต้องการหาค่าสัมบูรณ์ สามารถเป็นตัวเลขโดยตรง ค่าจากคอลัมน์ หรือผลลัพธ์จากนิพจน์ทางคณิตศาสตร์ เช่น -15, Column[Amount], Revenue – Expense

How it works

หาระยะห่างจากค่าเป้าหมาย

คำนวณความเบี่ยงเบนของยอดขายหรือกำไรจากค่าเป้าหมาย โดยไม่สนใจว่าเกินหรือต่ำกว่า ตัวอย่าง: ABS(ActualSales – TargetSales)

คำนวณการเปลี่ยนแปลงจากปีที่แล้ว

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

หาระยะห่างของค่านอกแนว (Outliers)

หาระยะห่างของข้อมูลจากค่าเฉลี่ยหรือมัธยฐาน เพื่อระบุค่าที่แปลกออกไป เช่น ลูกค้าที่มีการซื้อเป็นจำนวนมากหรือน้อยเป็นพิเศษ

คำนวณค่าใช้จ่ายเพิ่มเติมหรือเงินคืน

หาจำนวนเงินที่ต้องชำระเพิ่มเติมหรือเงินคืน โดยใช้ ABS เพื่อตรวจสอบความแตกต่าง เช่น ABS(InvoiceAmount – PaymentReceived)

Examples

ตัวอย่างที่ 1: หาค่าสัมบูรณ์ของตัวเลขลบ
Absolute Value = ABS(-150)
ค่าลบ -150 ถูกแปลงเป็นค่าบวก 150 โดย ABS ลบเครื่องหมายลบออก
.
ง่ายมากครับ ไม่ว่าจะเป็นเลขบวกหรือลบ ผลลัพธ์จะเป็นบวกเสมอ 😎
DAX Formula:

Absolute Value = ABS(-150)

Result:

150

ตัวอย่างที่ 2: หาความแตกต่างของยอดขาย
Sales Variance = ABS([ActualSales] - [TargetSales])
ถ้า ActualSales คือ 225,000 และ TargetSales คือ 250,000 ผลต่างคือ -25,000 แต่ ABS จะลบเครื่องหมายให้เป็น 25,000
.
วิธีนี้ทำให้เราเห็นขนาดของความเบี่ยงเบนได้ชัดเจน โดยไม่สนใจว่าขายได้มากกว่าหรือน้อยกว่าเป้าครับ 💡
DAX Formula:

Sales Variance = ABS([ActualSales] - [TargetSales])

Result:

25000 (เบี่ยงเบนไป 25,000 บาท)

ตัวอย่างที่ 3: หาการเปลี่ยนแปลงจากปีที่แล้ว
YoY Change = ABS([CurrentYear] - [PreviousYear])
ถ้ายอดขายปีนี้ 345,000 และปีที่แล้ว 300,000 ผลต่างคือ 45,000
.
ABS จะคืนค่า 45,000 เสมอ ไม่ว่ายอดปีนี้จะมากกว่าหรือน้อยกว่าปีที่แล้วก็ตาม เราจะได้เห็นแค่ว่ามันเปลี่ยนไปเท่าไรครับ
DAX Formula:

YoY Change = ABS([CurrentYear] - [PreviousYear])

Result:

45000 (เพิ่มขึ้น 45,000 บาท)

ตัวอย่างที่ 4: หาความเบี่ยงเบนจากค่าเฉลี่ย
Deviation = ABS([SalesAmount] - AVERAGE([SalesAmount]))
คำนวณว่า SalesAmount ห่างจากค่าเฉลี่ยเท่าไร โดยไม่สนใจว่าสูงหรือต่ำกว่า
.
วิธีนี้เจ๋งมากตอนหา outliers ครับ จะได้เห็นว่าแถวไหนที่แปลกไปจากปกติ ส่วนตัวผมใช้บ่อยมากตอนทำ data quality check 😎
DAX Formula:

Deviation = ABS([SalesAmount] - AVERAGE([SalesAmount]))

Result:

15000 (ห่างจากค่าเฉลี่ย 15,000 บาท)

ตัวอย่างที่ 5: รวมยอดที่มีความแตกต่างสูง
Large Variances = SUMX(FILTER(Budget, ABS([Budget] - [Actual]) > 100000), [Amount])
ใช้ SUMX กับ FILTER เพื่อเลือกเฉพาะแถวที่มีความแตกต่างระหว่าง Budget กับ Actual มากกว่า 100,000 บาท (ไม่ว่าบวกหรือลบ)
.
แล้วค่อยรวม Amount ของแถวที่ผ่านเงื่อนไข เทคนิคนี้ใช้ได้ดีตอนต้องการมองหาแค่รายการที่เบี่ยงเบนมากๆ ครับ 💡
DAX Formula:

Large Variances = SUMX(FILTER(Budget, ABS([Budget] - [Actual]) > 100000), [Amount])

Result:

2500000 (รวมยอดที่เบี่ยงเบนสูงกว่า 100,000 บาท)

ตัวอย่างที่ 6: ใช้ในสูตรเพื่อหารายการที่ไม่มีหนี้
Outstanding Balance = CALCULATE(SUMX(Invoices, ABS([InvoiceAmount] - [PaidAmount])), [Status] "Paid")
หาความแตกต่างระหว่างจำนวนใบแจ้งหนี้กับจำนวนที่ชำระแล้ว โดยใช้ ABS เพื่อหาจำนวนที่ยังค้างชำระ
.
แล้วกรองเฉพาะรายการที่ Status ไม่ใช่ "Paid" เพื่อดูแค่หนี้ที่ยังค้างอยู่ ส่วนตัวผมชอบใช้วิธีนี้ตอนทำ reconciliation ครับ
DAX Formula:

Outstanding Balance = CALCULATE(SUMX(Invoices, ABS([InvoiceAmount] - [PaidAmount])), [Status] <> "Paid")

Result:

125000 (ยังค้างชำระ 125,000 บาท)

FAQs

ความแตกต่างระหว่าง ABS กับ SIGN คืออะไร?

ABS หาค่าสัมบูรณ์ (ลบเครื่องหมายออก) เช่น ABS(-5) = 5
.
ส่วน SIGN คืนเครื่องหมาย: +1 สำหรับบวก, -1 สำหรับลบ, 0 สำหรับศูนย์ เช่น SIGN(-5) = -1
.
ง่ายๆ คือ ใช้ ABS เมื่อต้องการ “ขนาด” (magnitude) ใช้ SIGN เมื่อต้องการ “ทิศทาง” (direction) ครับ 😎

ABS สามารถใช้กับตัวเลขบวกได้หรือไม่?

ได้ครับ ABS ทำงานกับตัวเลขทุกแบบ
.
ตัวเลขบวก → คืนค่าเดิม เช่น ABS(150) = 150
ตัวเลขลบ → กลายเป็นบวก เช่น ABS(-150) = 150
ศูนย์ → ยังคงเป็นศูนย์ ABS(0) = 0
.
ง่ายมากครับ ไม่มีอะไรซับซ้อน 😎

ABS เก็บรักษาชนิดข้อมูลหรือไม่?

ใช่ครับ ABS รักษา data type เดิมไว้
.
ส่ง decimal → ได้ decimal กลับมา
ส่ง currency → ได้ currency กลับมา
ส่ง integer → ได้ integer กลับมา
.
นี่ดีมาก เพราะแตกต่างจากบางฟังก์ชันที่อาจเปลี่ยน type โดยไม่บอกครับ ทำให้ผลลัพธ์ชัดเจนและปลอดภัย 💡

ABS รองรับค่า infinity หรือไม่?

ใช่ครับ ABS รองรับ positive infinity และ negative infinity ด้วย
.
เช่น ABS(-∞) = ∞ และ ABS(∞) = ∞
.
แม้ว่าจะไม่ค่อยได้ใช้บ่อย แต่มีประโยชน์ในการคำนวณทางคณิตศาสตร์ขั้นสูงหรือ edge cases ที่ซับซ้อนครับ

ความแตกต่างระหว่าง ABS กับ SQRT(Power(x,2)) คืออะไร?

ทั้งคู่ให้ผลลัพธ์เดียวกัน (ค่าสัมบูรณ์) แต่ ABS ง่ายกว่าและเร็วกว่ามากครับ
.
ABS(-5) = 5 ✅ (กระชับ ชัดเจน)
SQRT(POWER(-5,2)) = 5 ❌ (ยาว ซับซ้อน)
.
ส่วนตัวผมแนะนำให้ใช้ ABS เสมอ เพราะง่าย อ่านเข้าใจได้ทันที และ engine ก็ optimize ได้ดีกว่า 😎

ABS สามารถใช้ในคำนวณแถว (Calculated Column) ได้หรือไม่?

ได้ครับ ABS ใช้ได้ทั้งใน Measure และ Calculated Column โดยไม่มีข้อจำกัดใดๆ
.
**Calculated Column:** `[Absolute Amount] = ABS([Amount])`
**Measure:** `[Variance] = ABS([Budget] – [Actual])`
.
เลือกใช้ตามความเหมาะสมของงานครับ ถ้าต้องการค่าคงที่ใช้ calculated column ถ้าต้องการให้ยืดหยุ่นตาม filter context ใช้ measure

สามารถใช้ ABS ร่วมกับ FILTER ได้หรือไม่?

ได้ครับ ABS ใช้คู่กับ FILTER ได้ดีมาก
.
ตัวอย่าง: `FILTER(Sales, ABS([Amount]) > 1000)` จะเลือกเฉพาะแถวที่มีขนาดสัมบูรณ์มากกว่า 1,000 (ไม่ว่าบวกหรือลบ)
.
ส่วนตัวผมใช้บ่อยมากตอนต้องหาความแตกต่างหรือการเปลี่ยนแปลงที่มีนัยสำคัญครับ เช่น หา variance ที่มากกว่า threshold ที่กำหนด 💡

ทำไมต้องใช้ ABS แทนการเขียน IF เพื่อตรวจสอบเครื่องหมาย?

ABS ง่ายกว่า สั้นกว่า และเร็วกว่ามากครับ
.
เปรียบเทียบ:
– `ABS(x)` ✅ (กระชับ ชัดเจน)
– `IF(x < 0, -x, x)` ❌ (ยาว เสี่ยง logic error)
.
นอกจากนี้ ABS ยังอ่านเข้าใจได้ทันทีว่าต้องการหาขนาด (magnitude) ส่วนตัวผมแนะนำให้ใช้ ABS เสมอเมื่อต้องการลบเครื่องหมายครับ 😎

Resources & Related

Additional Notes

ABS เป็นฟังก์ชันคณิตศาสตร์พื้นฐานใน DAX ที่ทำหน้าที่คืนค่าสัมบูรณ์ของตัวเลข ง่ายๆ คือมันจะลบเครื่องหมายลบออก ทำให้ผลลัพธ์เป็นตัวเลขบวกเสมอ
.
ตัวอย่างเช่น ABS(-150) จะได้ 150 และ ABS(150) ก็ยังได้ 150 เหมือนเดิม ส่วน ABS(0) ก็ยังคงเป็น 0
.
ส่วนตัวผมใช้บ่อยมากตอนทำ variance analysis หรือตอนหา outliers ครับ มันช่วยให้เราเห็นขนาดของความแตกต่างได้ชัดเจนโดยไม่ต้องสนใจว่าเป็นบวกหรือลบ 😎

Leave a Reply

Your email address will not be published. Required fields are marked *