CUBERANKEDMEMBER ส่งกลับสมาชิกที่อยู่ในตำแหน่งอันดับที่ระบุจากชุด ใช้หาข้อมูลอันดับ 1, 2, 3 หรืออื่น ๆ จากคิวบ์
=CUBERANKEDMEMBER(connection, set_expression, rank, [caption])
=CUBERANKEDMEMBER(connection, set_expression, rank, [caption])
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| connection | text | Yes | ข้อความที่ระบุชื่อของการเชื่อมต่อกับคิูบ (เช่น ‘Sales’, ‘HR’, ‘Finance’) ต้องตรงกับชื่อการเชื่อมต่อใน cube ของ Analysis Services | |
| set_expression | text or function | Yes | ชุดของสมาชิกที่ต้องการค้นหา อาจเป็น CUBESET function หรืออ้างอิงเซลล์ที่มี CUBESET เช่น CUBESET(“Sales”,”{[Item].children}”) หรือ $D$4 | |
| rank | number | Yes | ตัวเลขที่ระบุตำแหน่งอันดับที่ต้องการ (1 = ที่หนึ่ง, 2 = ที่สอง, เป็นต้น) ต้องเป็นจำนวนเต็มบวกและไม่เกินจำนวนสมาชิกในชุด | |
| caption | text | Optional | ข้อความทดแทนที่แสดงในเซลล์แทนชื่อของสมาชิก เช่น ‘Top Month’ หรือ ‘Best Seller’ (ถ้าไม่ใส่จะแสดงชื่อสมาชิกจริง) |
ใช้ CUBERANKEDMEMBER เพื่อค้นหาเดือนที่มียอดขายสูงสุด (rank=1) หรือต่ำสุด (rank=12 หากมี 12 เดือน)
ใช้ CUBERANKEDMEMBER เพื่อค้นหาร้านค้า 3 อันดับแรกที่มีกำไรสูงสุด
CUBERANKEDMEMBER("Sales", $D$4, 1, "Top Month")=CUBERANKEDMEMBER("Sales", $D$4, 1, "Top Month")
June (หรือเดือนที่มียอดขายสูงสุด)
CUBERANKEDMEMBER("Sales", CUBESET("Sales", "{[Product].children}"), 3)=CUBERANKEDMEMBER("Sales", CUBESET("Sales", "{[Product].children}"), 3)
Widget C (หรือสินค้าลำดับที่ 3)
CUBERANKEDMEMBER("SalesPeople", CUBESET("SalesPeople", "{[Sales Rep].members}"), 5, "#5 Sales Rep")=CUBERANKEDMEMBER("SalesPeople", CUBESET("SalesPeople", "{[Sales Rep].members}"), 5, "#5 Sales Rep")
Alice Johnson
CUBERANKEDMEMBER("Sales", $D$10, 50, "Lowest Customer")=CUBERANKEDMEMBER("Sales", $D$10, 50, "Lowest Customer")
Small Shop Inc
rank ต้องเป็นจำนวนเต็มบวก (1, 2, 3, …) ที่ไม่เกินจำนวนสมาชิกในชุด ผมแนะนำให้ใช้ COUNTA หรือ CUBESETCOUNT เพื่อนับจำนวนสมาชิกก่อน เช่น =CUBERANKEDMEMBER(“Sales”, $D$4, MIN(5, CUBESETCOUNT($D$4)))
เพราะ CUBERANKEDMEMBER ต้องการชุด (set) ของสมาชิกเพื่อรู้ว่าจะเรียงลำดับเทียบจากอะไร CUBESET สร้างชุดนั้นขึ้นมา ถ้าเอาเซลล์ธรรมดามา มันจะ Error #N/A
ผมพบว่า #NAME? ปกติเกิดจากการเชื่อมต่อไม่ถูกต้อง ชื่อ connection ไม่ตรงกับชื่อใน cube หรือ Analysis Services ไม่พร้อม ตรวจสอบการเชื่อมต่อกับ OLAP server ก่อน
ผม Error #NUM! หรือ #N/A มักจะได้ ให้ลองใช้ IFERROR เป็นตัวดักไว้ เช่น =IFERROR(CUBERANKEDMEMBER(…), “ไม่พบอันดับนี้”)
Caption ใช้แสดงข้อความแทนชื่อจริงของสมาชิก เช่นถ้าชื่อจริงยาว ใส่ caption=”Top” แล้วเซลล์จะแสดง ‘Top’ แทน ถ้าไม่ใส่ก็แสดงชื่อจริง
CUBERANKEDMEMBER ดึงสมาชิกจากชุดโดยอ้างอิงตำแหน่งอันดับที่คุณต้องการ rank=1 คือสูงสุด, rank=2 คือลำดับที่สอง เป็นต้น เป็นฟังก์ชันเคลื่อน (CUBE function) ที่ต้องเชื่อมต่อกับ OLAP cube ของ Analysis Services
ที่เจ๋งคือมันช่วยให้หาข้อมูลจำเพาะตามตำแหน่ง เช่น “เดือนที่ขายสูงสุด” หรือ “สินค้าลำดับที่ 5 ในยอดขาย” โดยไม่ต้องเรียงลำดับตารางทั้งหมด ตรงไปตรงมาและทำงานกับข้อมูล multidimensional ได้ดี
ส่วนตัวผมใช้ CUBERANKEDMEMBER เวลาทำ dashboard ที่ต้องแสดง “Top Performer” หรือ “Bottom Sellers” ตรง ๆ เลย มันช่วยอัพเดตอัตโนมัติเมื่อข้อมูลเปลี่ยน ไม่ต้องใช้ helper column