Thep Excel

TOPNSKIP – ดึงแถวแบบเลื่อนหน้า (skip) อย่างมีประสิทธิภาพ

ดึงแถวจากตารางโดยข้ามจำนวนแถวที่กำหนดก่อน แล้วคืนแถวถัดไปตามการเรียงลำดับที่ระบุ (มักเร็วกว่า TOPN สำหรับงานเลื่อนหน้า)

=TOPNSKIP(<Rows>, <Skip>, <Table> [, <OrderExpr> [, [<Order>] [, <OrderExpr> [, [<Order>]]]])

By ThepExcel AI Agent
13 December 2025

Function Metrics


Popularity
5/10

Difficulty
5/10

Usefulness
5/10

Syntax & Arguments

=TOPNSKIP(<Rows>, <Skip>, <Table> [, <OrderExpr> [, [<Order>] [, <OrderExpr> [, [<Order>]]]])

Argument Type Required Default Description
Rows number Yes จำนวนแถวที่ต้องการคืน
Skip number Yes จำนวนแถวที่ต้องการข้ามก่อนเริ่มคืนผลลัพธ์
Table table Yes ตารางต้นทางที่ต้องการเลื่อนหน้า
OrderExpr expression Optional ไม่ระบุ นิพจน์สำหรับจัดลำดับก่อนทำการ skip/คืนแถว (ใส่ได้หลายตัว)
Order keyword Optional DESC ทิศทางการเรียง เช่น DESC หรือ ASC (ค่าเริ่มต้นโดยทั่วไปคือ DESC)

How it works

เลื่อนหน้ารายการ (pagination) ในตารางผลลัพธ์

ต้องการแสดงผลทีละหน้า เช่น หน้าแรก 20 แถว, หน้าที่สอง 20 แถวถัดไป

ทำรายงานแบบจัดอันดับแล้วเลื่อนไปดูช่วงถัดไป

เลือกช่วงอันดับ 1-20, 21-40, … ด้วยการกำหนด Skip

Examples

ตัวอย่างที่ 1: ดึงแถวอันดับ 21-40 (แนวคิด)
อันดับ 21-40 (ตาราง) = TOPNSKIP( 20, 20, VALUES('Customer'[CustomerName]), [Sales Amount], DESC )
Rows=20, Skip=20 หมายถึงข้ามหน้าแรก แล้วคืนหน้า 2 (ตามการเรียงที่กำหนด)
DAX Formula:

=อันดับ 21-40 (ตาราง) =
TOPNSKIP(
    20,
    20,
    VALUES('Customer'[CustomerName]),
    [Sales Amount],
    DESC
)

Result:

ได้ตาราง 20 แถวถัดไปหลังจากข้าม 20 แถวแรก

ตัวอย่างที่ 2: เพิ่ม secondary sort เพื่อความเสถียร
ช่วงอันดับ (เสถียรขึ้น) = TOPNSKIP( 20, 20, VALUES('Customer'[CustomerName]), [Sales Amount], DESC, 'Customer'[CustomerName], ASC )
ถ้าค่าหลักเท่ากัน ให้ระบุคีย์รองเพื่อให้การจัดลำดับแน่นอนขึ้น
DAX Formula:

=ช่วงอันดับ (เสถียรขึ้น) =
TOPNSKIP(
    20,
    20,
    VALUES('Customer'[CustomerName]),
    [Sales Amount], DESC,
    'Customer'[CustomerName], ASC
)

Result:

ลดโอกาสที่ลำดับจะเปลี่ยนเมื่อยอดขายเท่ากัน

ตัวอย่างที่ 3: ใช้ตารางที่ได้ไปคำนวณต่อ (แนวคิด)
ยอดขายช่วงอันดับ 21-40 (แนวคิด) = CALCULATE( [Sales Amount], KEEPFILTERS( TOPNSKIP(20, 20, VALUES('Customer'[CustomerName]), [Sales Amount], DESC) ) )
TOPNSKIP คืนตาราง แล้วส่งเข้า CALCULATE เป็นตัวกรองคล้ายกับ TOPN
DAX Formula:

=ยอดขายช่วงอันดับ 21-40 (แนวคิด) =
CALCULATE(
    [Sales Amount],
    KEEPFILTERS(
        TOPNSKIP(20, 20, VALUES('Customer'[CustomerName]), [Sales Amount], DESC)
    )
)

Result:

ได้ยอดขายรวมของกลุ่มที่อยู่ในช่วงอันดับที่ต้องการ

FAQs

TOPNSKIP ต่างจาก TOPN อย่างไร?

TOPNSKIP เพิ่มพารามิเตอร์ Skip เพื่อเลื่อนหน้า และมักทำงานได้เร็วกว่าในงาน paging ขณะที่ TOPN ยืดหยุ่นกว่า

ทำไมต้องระบุ OrderExpr ให้ชัดเจน?

เพราะการ skip ต้องอาศัยลำดับที่แน่นอน ถ้าไม่กำหนดการเรียงลำดับอย่างเหมาะสม ผลลัพธ์อาจไม่เสถียรหรือไม่ตรงกับที่คาด

Resources & Related

Additional Notes

TOPNSKIP คืนจำนวนแถวที่ต้องการจากตาราง โดย “ข้าม (skip)” จำนวนแถวที่กำหนดก่อน แล้วจึงคืนแถวถัดไปตามการเรียงลำดับที่ระบุ แนวคิดเหมือนการทำ pagination (หน้า 1, หน้า 2, …) โดยทั่วไปยืดหยุ่นน้อยกว่า TOPN แต่ทำงานได้เร็วกว่าในหลายกรณี

Leave a Reply

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