Thep Excel

COUNTXนับจำนวนแถวจากนิพจน์ที่คำนวณต่อแถว

COUNTX ไล่ประเมินนิพจน์ทีละแถวในตาราง แล้วนับจำนวนแถวที่ได้ผลลัพธ์ไม่ว่าง เหมาะสำหรับการนับจากค่าที่คำนวณต่อแถว ไม่ใช่นับคอลัมน์ตรง ๆ

fx
=COUNTX(<table>, <expression>)

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

อัปเดต 13 December 2025

Syntax & Arguments

อาร์กิวเมนต์ ชนิด คำอธิบาย
table table ตารางที่ต้องการไล่ประเมินทีละแถว เช่น Sales, Product หรือผลลัพธ์จาก FILTER
expression scalar นิพจน์ที่ประเมินในแต่ละแถว ต้องได้ผลเป็นค่าสเกลาร์ (ตัวเลข ข้อความ วันที่ ฯลฯ) ส่วน TRUE/FALSE ใช้ COUNTAX แทน

Additional Notes

COUNTX เป็นฟังก์ชัน iterator ที่เจ๋งมากสำหรับการนับแบบ “ตามเงื่อนไขคำนวณ” คำว่า iterator หมายความว่ามันจะไล่ทีละแถว ประเมินนิพจน์ในแต่ละแถว แล้วนับว่ามีกี่แถวที่ได้ผลลัพธ์ไม่ว่าง (ไม่เป็น BLANK).

ตัวอย่างเช่น ถ้าเราอยากนับจำนวนแถวที่มีมูลค่ารวมสินค้า (Quantity × UnitPrice) ไม่ว่าง COUNTX ก็คือเครื่องมือที่ใช่ เพราะค่านี้ไม่ได้อยู่ในตาราง แต่คำนวณมาจากสองคอลัมน์.

ส่วนตัวผมคิดว่า COUNTX เป็นหนึ่งในฟังก์ชันที่ดูเรียบง่ายแต่มีพลัง ต่างจาก COUNT ที่นับแค่ค่าตัวเลขในคอลัมน์เดียว COUNTX ให้เราคำนวณกว่า ๆ ได้ 😎

How it works

นับจำนวนแถวที่คำนวณยอดต่อบรรทัดได้

เช่น จำนวนแถวที่ (จำนวน * ราคา) ได้ผลลัพธ์ไม่ว่าง

นับจำนวนค่าที่ได้จากนิพจน์ต่อแถวในตารางที่ถูกกรอง

ใช้กับตารางที่ถูกกรอง/สรุปมาแล้ว เพื่อควบคุมแถวที่ถูกนับ

Examples

ตัวอย่างที่ 1: นับจำนวนแถวที่มี Line Amount ไม่ว่างCount Items Sold = COUNTX( Sales, Sales[Quantity] * Sales[UnitPrice] )

COUNTX ประเมินการคำนวณ Quantity * UnitPrice ในแต่ละแถว แล้วนับจำนวนแถวที่ได้ผลลัพธ์ไม่ว่าง สิ่งนี้มีประโยชน์เมื่อคอลัมน์ Line Amount ไม่ได้อยู่ในตารางจริง ๆ

fx
Count Items Sold =
COUNTX(
Sales,
Sales[Quantity] * Sales[UnitPrice]
)

ผลลัพธ์จำนวนแถวที่มี Line Amount ไม่ว่าง เช่น 450 แถว
ตัวอย่างที่ 2: นับจำนวนลูกค้าที่มีอัตราส่วน (with DIVIDE)Customers with Valid Ratio = COUNTX( Customer, DIVIDE(Customer[TotalPurchase], Customer[AvgOrderValue], 0) )

DIVIDE ส่งคืน 0 เมื่อตัวหารเป็น 0 แต่ถ้าเราใช้ DIVIDE(…, BLANK()) แล้ว COUNTX จะนับแค่แถวที่อัตราส่วนเป็นจริง

fx
Customers with Valid Ratio =
COUNTX(
Customer,
DIVIDE(Customer[TotalPurchase], Customer[AvgOrderValue], 0)
)

ผลลัพธ์จำนวนลูกค้าที่สามารถคำนวณอัตราส่วนได้ (ไม่ BLANK) เช่น 1250 คน
ตัวอย่างที่ 3: นับจำนวนสินค้าในหมวดนั้น ๆ ที่มีราคาActive Products in Category = COUNTX( FILTER(Product, Product[Category] = "Electronics"), Product[ListPrice] )

ใช้ FILTER เพื่อกรองตารางให้แสดงเฉพาะ Electronics แล้ว COUNTX นับว่ามีกี่รายการ (ที่มี ListPrice ไม่ว่าง)

fx
Active Products in Category =
COUNTX(
FILTER(Product, Product[Category] = "Electronics"),
Product[ListPrice]
)

ผลลัพธ์จำนวนสินค้า Electronics ที่มีราคากำหนด เช่น 82 รายการ
ตัวอย่างที่ 4: นับจำนวนแถวที่มีข้อมูล shipping address ไม่ว่างOrders with Shipping Address = COUNTX( Sales, Sales[ShippingAddress] )

COUNTX นำไปใช้กับข้อความและค่าประเภทอื่น ๆ ได้ ไม่ใช่แค่ตัวเลข นับแค่แถวที่ ShippingAddress ไม่ว่างเท่านั้น

fx
Orders with Shipping Address =
COUNTX(
Sales,
Sales[ShippingAddress]
)

ผลลัพธ์จำนวนออร์เดอร์ที่มีที่อยู่จัดส่ง เช่น 5,340 ออร์เดอร์

FAQs

COUNTX ต่างจาก COUNT อย่างไร?+

COUNT นับเฉพาะค่าตัวเลขในคอลัมน์ (ไม่นับข้อความหรือวันที่) ส่วน COUNTX ให้นับจากนิพจน์ที่คำนวณต่อแถว ยืดหยุ่นมากขึ้น

COUNTX ต่างจาก COUNTA อย่างไร?+

COUNTA นับค่าที่ไม่ว่างในคอลัมน์ (ข้อความ ตัวเลข วันที่ ฯลฯ) ส่วน COUNTX นับจากนิพจน์ที่คำนวณ ถ้าแค่นับคอลัมน์ง่าย ๆ ให้ใช้ COUNTA ที่เร็วกว่า

COUNTX ต่างจาก COUNTAX อย่างไร?+

COUNTX ใช้กับข้อมูลตัวเลข ข้อความ วันที่ ส่วน COUNTAX นำไปใช้กับ Boolean (TRUE/FALSE) ได้ ถ้าคำนวณแล้วได้ TRUE/FALSE ให้ใช้ COUNTAX

ทำไม COUNTX อาจจะช้ากว่าฟังก์ชันอื่น?+

COUNTX เป็น iterator: มันต้องไล่ประเมินนิพจน์ในแต่ละแถว ถ้าตารางมี 1 ล้านแถว มันประเมิน 1 ล้นครั้ง ถ้าแค่นับคอลัมน์ง่าย ๆ ให้ใช้ COUNT/COUNTA

ใช้ COUNTX ร่วมกับ FILTER ได้ไหม?+

ได้ เหมาะมาก COUNTX(FILTER(…), expression) ใช้ FILTER เพื่อกรองแถวก่อน แล้วให้ COUNTX นับเฉพาะที่กรองแล้ว

COUNTX ส่งคืน BLANK ได้ไหม?+

ได้ ถ้าทุกแถวประเมินแล้วได้ BLANK (เช่น DIVIDE ที่ตัวหารเป็น 0 ทั้งหมด) COUNTX ก็ส่งคืน BLANK

Resources & Related

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

ฟังก์ชันนี้COUNTXAggregation
Aggregation (5)
COUNT

COUNT นับจำนวนแถวที่คอลัมน์มีค่าไม่ว่าง (non-blank) รองรับตัวเลข วันที่ และข้อความ แต่ไม่นับ Boolean ทำงานภายใต้ filter context และเกิด context transition เมื่อใช้ใน row context เหมาะสำหรับนับรายการที่มีข้อมูลในคอลัมน์เฉพาะ แต่ควรใช้ COUNTROWS แทนเมื่อนับแถวทั้งหมด

COUNTA

COUNTA นับจำนวนเซลล์ที่มีค่าไม่ว่าง (non-blank) ในคอลัมน์ โดยรวมตัวเลข ข้อความ วันที่ และค่าตรรกะ ต่างจาก COUNT ที่นับเฉพาะตัวเลขเท่านั้น

COUNTAX

COUNTAX ประเมินนิพจน์ต่อแถวในตาราง แล้วนับจำนวนผลลัพธ์ที่ไม่ว่าง เหมาะกับการนับค่าที่อาจเป็นข้อความ ตรรกะ หรือนิพจน์ที่ซับซ้อน ไม่ใช่แค่ตัวเลข

COUNTBLANK

COUNTBLANK นับจำนวนค่า BLANK ในคอลัมน์ ช่วยวัดความครบถ้วนของข้อมูลและตรวจสอบคุณภาพข้อมูลภายใต้บริบทตัวกรองปัจจุบัน

PRODUCTX

PRODUCTX วนประเมิน Expression บน Table แล้วคูณผลลัพธ์ของแต่ละแถวเข้าด้วยกันเป็นค่าเดี่ยว เหมาะกับการคูณปัจจัย/อัตราการเปลี่ยนแปลงต่อเนื่องหลายงวด และควรระวัง BLANK/ศูนย์/ค่าติดลบตามตรรกะงาน

Statistical (1)
MEDIANX

MEDIANX คำนวณค่ามัธยฐาน (50th Percentile) ของนิพจน์ที่ประเมินในแต่ละแถว ต่างจาก MEDIAN ที่ทำงานบนคอลัมน์เดียว MEDIANX คือ iterator function ที่ให้คุณสร้างนิพจล์ซับซ้อนก่อนหาค่ากลาง

Table manipulation (1)
SUMMARIZE

SUMMARIZE สร้างตารางสรุปโดยจัดกลุ่มข้อมูลตามคอลัมน์ที่กำหนด คล้าย GROUP BY ใน SQL หรือ Pivot Table ใน Excel คืนค่าตารางที่มีหนึ่งแถวต่อหนึ่ง unique combination ของคอลัมน์ที่เลือก สามารถอ้างถึงคอลัมน์จาก related table ได้โดยตรงโดยไม่ต้องใช้ RELATED มักใช้สร้าง virtual table ใน measure เพื่อทำ intermediate calculations ก่อนใช้ iterator functions อย่าง SUMX, AVERAGEX คำนวณต่อ ⚠️ Best Practice: ใช้ ADDCOLUMNS ครอบ SUMMARIZE แทนการใส่ extension columns ตรงๆ เพื่อ performance และ filter context control ที่ดีกว่า สำหรับ calculated table แนะนำใช้ SUMMARIZECOLUMNS แทนเนื่องจากมี performance ดีกว่าอย่างมาก

Comments

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