Thep Excel

List.FirstNดึงสมาชิก N ตัวแรกจาก List

List.FirstN จะคืน List ใหม่ที่มีสมาชิก N ตัวแรกจาก List ต้นฉบับ สามารถระบุจำนวน N ด้วยตัวเลข หรือกำหนดเป็นฟังก์ชันเงื่อนไขเพื่อให้ดึงสมาชิกที่ตรงเงื่อนไขจากจุดเริ่มต้นไปเรื่อยๆ จนกว่าเงื่อนไขจะไม่เป็นจริง

fx
=List.FirstN(list, countOrCondition) as any

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

อัปเดต 3 December 2025

Syntax & Arguments

อาร์กิวเมนต์ ชนิด คำอธิบาย
list list List ที่ต้องการดึงสมาชิก
countOrCondition number | function จำนวนสมาชิกที่ต้องการดึง (number) หรือฟังก์ชันเงื่อนไขแบบ each (เช่น each _ > 5)

Additional Notes

List.FirstN ใช้สำหรับดึงสมาชิกตัวแรกจากลิสต์ในสองโหมดการทำงาน: แบบนับจำนวน (ระบุตัวเลข) หรือแบบเงื่อนไข (ใช้ each)

ส่วนตัวผมใช้ List.FirstN บ่อยๆ ตอนต้องการตัวอย่างข้อมูล หรือตัดหัวตารางออก เพราะมันดึงแค่ตัวแรกที่ตรงเงื่อนไขเท่านั้น ไม่ได้ดึงทั้ง List ทำให้ประหยัด performance ได้นะ 😎

อันที่เจ๋งคือ ถ้าใช้เงื่อนไข มันจะหยุดตรงที่เจอค่าไม่ตรง เลยไม่ต้องประมวลผลทั้ง List

How it works

เลือก 5 อันดับแรก

เลือกรายการสินค้า 5 อันดับแรกที่มีมูลค่าสูงสุด (ใช้ List.Sort ก่อน)

ตัดหัวตารางที่ไม่ต้องการ

ถ้าข้อมูลมีบรรทัดที่ไม่ใช่หัวตาราง สามารถใช้ List.Skip หรือ List.FirstN มาช่วย

แสดงตัวอย่างข้อมูล

ดึงข้อมูลเพียงไม่กี่รายการแรกมาแสดงเพื่อตรวจสอบความถูกต้องเบื้องต้น

Examples

ดึง N ตัวแรกด้วยตัวเลขlet Numbers = {1, 2, 3, 4, 5}, FirstTwo = List.FirstN(Numbers, 2) in FirstTwo

ดึง 2 สมาชิกแรกจาก {1, 2, 3, 4, 5}

fx
let
Numbers = {1, 2, 3, 4, 5},
FirstTwo = List.FirstN(Numbers, 2)
in
FirstTwo

ผลลัพธ์{1, 2}
ดึงสมาชิกตามเงื่อนไข (each)let Numbers = {10, 20, 5, 30}, FirstGreaterThan5 = List.FirstN(Numbers, each _ > 5) in FirstGreaterThan5

ดึงสมาชิกจากหน้าตราบใดที่ยังมากกว่า 5 หยุดตอนเจอ 5

fx
let
Numbers = {10, 20, 5, 30},
FirstGreaterThan5 = List.FirstN(Numbers, each _ > 5)
in
FirstGreaterThan5

ผลลัพธ์{10, 20}
ดึงหัวข้อจากข้อมูลที่เป็น Textlet TextLines = {"Header: Product", "Header: Price", "Data: Apple", "Data: 100"}, Headers = List.FirstN(TextLines, each Text.StartsWith(_, "Header")) in Headers

ดึงบรรทัดทั้งหมดที่ขึ้นต้นด้วย 'Header' จนกว่าจะเจอ 'Data'

fx
let
TextLines = {"Header: Product", "Header: Price", "Data: Apple", "Data: 100"},
Headers = List.FirstN(TextLines, each Text.StartsWith(_, "Header"))
in
Headers

ผลลัพธ์{"Header: Product", "Header: Price"}

FAQs

List.FirstN กับ List.First ต่างกันอย่างไร?+

List.First ดึงแค่สมาชิก 1 ตัวแรก (คืนค่าเดี่ยว) ส่วน List.FirstN ดึง N ตัวแรก (คืนค่า List)

ถ้าระบุ N มากกว่าจำนวนสมาชิกใน List จะเกิดอะไร?+

มันจะคืน List ทั้งหมด ไม่มี error ถ้า List มี 3 ตัว แล้วขอ 10 ตัว มันจะคืน 3 ตัวทั้งหมด

แบบเงื่อนไขหยุดเร็วกว่าแบบนับจำนวนไหม?+

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

ทำไมไม่ใช้ List.Select แล้วอย่างไร?+

List.Select ดึงทั้ง List ที่ตรงเงื่อนไข ส่วน List.FirstN หยุดตรงแรกที่ไม่ตรง ประหยัด performance

Resources & Related

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

ฟังก์ชันนี้List.FirstNList functions
List functions (7)
List.Accumulate

List.Accumulate เป็นฟังก์ชันสำหรับการวนลูปผ่านแต่ละ element ใน list พร้อมทั้งเก็บสถานะสะสมไว้ตลอดการทำงาน
.
โดยจะเริ่มต้นจากค่าเริ่มต้นที่กำหนด (seed value) และในแต่ละรอบของการวนลูป ฟังก์ชันจะส่งค่าสถานะปัจจุบัน (current state) พร้อมกับ element ปัจจุบันเข้าไปใน accumulator function ที่คุณกำหนดขึ้นมา เพื่อคำนวณและสร้างสถานะใหม่สำหรับรอบถัดไป
.
เมื่อวนลูปครบทุก element แล้ว ฟังก์ชันจะคืนค่าสถานะสุดท้ายกลับมา เหมาะสำหรับการคำนวณยอดสะสม (running totals) การรวมแบบกำหนดเอง (custom aggregations) และการสร้างรูปแบบ For-Next loop pattern ใน M language ครับ

List.Alternate

List.Alternate ใช้สร้าง List ใหม่โดยการสลับระหว่างการข้าม (Skip) และการเก็บ (Take) สมาชิกจาก List ต้นฉบับ สามารถกำหนดจำนวนที่จะข้าม จำนวนที่จะเก็บ และจุดเริ่มต้นได้

List.First

List.First ใช้เพื่อดึงค่าสมาชิกตัวแรกจาก List หากเอา List ว่างเปล่า ให้ใช้ค่า Default ปกป้อง

List.LastN

List.LastN จะคืน List ใหม่ที่มีสมาชิก N ตัวสุดท้ายจาก List ต้นฉบับ สามารถระบุจำนวน N ด้วยตัวเลข หรือกำหนดเป็นฟังก์ชันเงื่อนไขเพื่อให้ดึงสมาชิกที่ตรงเงื่อนไขจากจุดสิ้นสุดย้อนกลับไปเรื่อยๆ จนกว่าเงื่อนไขจะไม่เป็นจริง

List.Range

List.Range ดึงช่วงของสมาชิกจาก List โดยระบุตำแหน่งเริ่มต้น (offset) และจำนวนสมาชิกที่ต้องการดึง ฟังก์ชันนี้มีประโยชน์เมื่อต้องการดึงข้อมูลชุดย่อยจากตำแหน่งใดๆ ในรายการ

List.Select

List.Select จะรับ List และฟังก์ชันเงื่อนไข (selection as function) โดยจะประเมินฟังก์ชันเงื่อนไขกับสมาชิกแต่ละตัว หากฟังก์ชันคืนค่า true จะเก็บสมาชิกนั้นไว้ใน List ใหม่ หากคืนค่า false จะถูกคัดทิ้งไป

List.Skip

List.Skip ข้ามสมาชิกจำนวน N ตัวแรกจากรายการและคืนส่วนที่เหลือ ฟังก์ชันนี้มีประโยชน์เมื่อต้องการลบแถวหัวตารางที่ไม่ต้องการ หรือข้ามข้อมูลบางส่วนจากจุดเริ่มต้น

Comments

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