Thep Excel

List.Selectเลือกสมาชิกจาก List ตามเงื่อนไข

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

fx
=List.Select(list, selection) as list

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

อัปเดต 3 December 2025

Syntax & Arguments

อาร์กิวเมนต์ ชนิด คำอธิบาย
list list List ที่ต้องการกรอง
selection function ฟังก์ชันเงื่อนไขที่คืนค่า true/false (มักใช้ ‘each …’)

Additional Notes

List.Select ใช้สำหรับกรองสมาชิกใน List โดยประเมินฟังก์ชันเงื่อนไขกับแต่ละสมาชิก เก็บเฉพาะสมาชิกที่คืนค่า true

ที่เจ๋งคือ List.Select ทำให้โค้ดอ่านง่ายมากเมื่อต้องทำความสะอาดข้อมูล เช่น กรองตัวเลขบวก ลบช่องว่าง หรือเลือกเฉพาะสมาชิกที่ตรงเงื่อนไข ใช้ได้กับ List ที่มีประเภทข้อมูลใดก็ได้

ส่วนตัวผมชอบใช้ List.Select คู่กับ each เพื่อเขียน filter condition แบบสั้นๆ สำหรับข้อมูลที่ซับซ้อน เช่นกรองแต่เฉพาะ Records ที่มี Status = “Active” ได้เลย ทำให้โค้ดสะอาดและอ่านง่ายมากครับ

How it works

เลือกเฉพาะตัวเลขคู่

กรอง List ของตัวเลข เพื่อเลือกเก็บเฉพาะตัวเลขคู่

เลือกรายการที่มีสถานะ 'Active'

เมื่อ List มี Record (เช่น Table.ToRecords) สามารถเลือกเฉพาะ Record ที่คอลัมน์ [Status] = 'Active'

Examples

ตัวอย่างที่ 1: กรองตัวเลขบวกจาก Listlet Numbers = {1, -3, 4, 9, -2}, PositiveNumbers = List.Select(Numbers, each _ > 0) in PositiveNumbers

กรองเฉพาะตัวเลขที่มากกว่า 0 จากลิสต์ _ หมายถึงสมาชิกปัจจุบันในลิสต์

fx
let
Numbers = {1, -3, 4, 9, -2},
PositiveNumbers = List.Select(Numbers, each _ > 0)
in
PositiveNumbers

ผลลัพธ์{1, 4, 9}
ตัวอย่างที่ 2: กรองข้อความที่ขึ้นต้นด้วย 'A'let Fruits = {"Apple", "Banana", "Apricot", "Grape"}, StartsWithA = List.Select(Fruits, each Text.StartsWith(_, "A")) in StartsWithA

เลือกสมาชิกข้อความที่ขึ้นต้นด้วยตัว 'A' โดยใช้ Text.StartsWith

fx
let
Fruits = {"Apple", "Banana", "Apricot", "Grape"},
StartsWithA = List.Select(Fruits, each Text.StartsWith(_, "A"))
in
StartsWithA

ผลลัพธ์{"Apple", "Apricot"}
ตัวอย่างที่ 3: กรองวันหยุดสุดสัปดาห์let dates = { #date(2025, 12, 20), // Saturday #date(2025, 12, 21), // Sunday #date(2025, 12, 22), // Monday #date(2025, 12, 27) // Saturday }, weekendDates = L…

กรองวันหยุดสุดสัปดาห์โดยใช้ Date.DayOfWeek ตรวจสอบว่าวันนั้นตรงกับ Saturday (5) หรือ Sunday (6)

fx
let
dates = {
#date(2025, 12, 20), // Saturday
#date(2025, 12, 21), // Sunday
#date(2025, 12, 22), // Monday
#date(2025, 12, 27) // Saturday
},
weekendDates = List.Select(
dates,
each Date.DayOfWeek(_, Day.Monday) >= 5
)
in
weekendDates

ผลลัพธ์{#date(2025, 12, 20), #date(2025, 12, 21), #date(2025, 12, 27)}
ตัวอย่างที่ 4: กรอง Records ตามหลายเงื่อนไขlet customers = { [Name = "Alice", Status = "Active", Purchases = 150], [Name = "Bob", Status = "Inactive", Purchases = 200], [Name = "Carol", Status = "Active"…

กรอง Records ที่ Status = 'Active' และ Purchases > 100 โดยรวมหลายเงื่อนไขด้วย 'and'

fx
let
customers = {
[Name = "Alice", Status = "Active", Purchases = 150],
[Name = "Bob", Status = "Inactive", Purchases = 200],
[Name = "Carol", Status = "Active", Purchases = 90],
[Name = "Dave", Status = "Active", Purchases = 120]
},
activeHighValue = List.Select(
customers,
each [Status] = "Active" and [Purchases] > 100
)
in
activeHighValue

ผลลัพธ์{
[Name = "Alice", Status = "Active", Purchases = 150],
[Name = "Dave", Status = "Active", Purchases = 120]
}

FAQs

List.Select ต่างจาก Table.SelectRows อย่างไร?+

List.Select ใช้กรองสมาชิกใน List ส่วน Table.SelectRows ใช้กรองแถวใน Table หลักการทำงานคล้ายกันแต่ใช้กับ Structure ของข้อมูลที่ต่างกัน

Resources & Related

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

ฟังก์ชันนี้List.SelectList functions
List functions (23)
List.AllTrue

List.AllTrue คืนค่า true หากทุกเงื่อนไขใน List เป็นจริงทั้งหมด

List.Alternate

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

List.Buffer

List.Buffer เก็บรายการข้อมูลไว้ในหน่วยความจำเพื่อเพิ่มประสิทธิภาพเมื่อต้องเข้าถึงรายการเดียวกันหลายครั้ง ฟังก์ชันนี้มีประโยชน์เมื่อต้องใช้ผลลัพธ์จากการคำนวณซ้ำๆ หรือเมื่อต้องการลดจำนวนการเข้าถึงแหล่งข้อมูลภายนอก

List.FindText

List.FindText ค้นหาสมาชิกในรายการที่มีข้อความย่อยที่กำหนด เหมาะเมื่อต้องการกรองข้อมูลไม่ใช่แค่ตรงแม่นทั้งคำ แต่ต้องการค้นหาแบบบางส่วนก็ได้

List.First

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

List.FirstN

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

List.LastN

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

List.MatchesAll

List.MatchesAll คืนค่า true หากสมาชิกทุกตัวใน List ผ่านเงื่อนไขที่กำหนด

List.Mode

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

List.Modes

List.Modes หารายการของค่าทั้งหมดที่ปรากฏบ่อยที่สุดในรายการ หากมีหลายค่าที่เกิดขึ้นจำนวนครั้งเท่ากัน จะคืนค่าทั้งหมด

List.NonNullCount

List.NonNullCount นับจำนวนของค่าในรายการที่ไม่เป็น null ใช้สำหรับการวิเคราะห์ข้อมูลและการตรวจสอบความเสมบูรณ์ของข้อมูล

List.Percentile

List.Percentile คำนวณค่า percentile ของรายการตัวเลข ใช้สำหรับการวิเคราะห์ข้อมูล การหากลุ่มควอร์ไทล์ และการประเมินการกระจายตัวของข้อมูล

List.PositionOfAny

List.PositionOfAny หาตำแหน่งแรกของค่าใดค่าหนึ่งจากชุดค่าที่ระบุในรายการ ใช้สำหรับการค้นหาและการจัดการรายการข้อมูล

List.Positions

List.Positions หารายการของตำแหน่งทั้งหมดของค่าที่ระบุในรายการ ใช้สำหรับการค้นหาและการกำหนดตำแหน่งข้อมูล

List.Random

List.Random สร้างรายการของตัวเลขสุ่มจำนวนที่ระบุ ใช้สำหรับการสุ่มตัวอย่าง การทดลอง และการสร้างข้อมูลทดสอบ

List.RemoveFirstN

List.RemoveFirstN ลบจำนวน N รายการแรกจากรายการข้อมูล ใช้สำหรับการสุ่มตัวอย่าง การแยกข้อมูล และการตัดหัวข้อของรายการ

List.RemoveItems

List.RemoveItems จะคืน List ใหม่ที่ไม่มีสมาชิกที่ตรงกับสมาชิกใน removeItems List โดยการเปรียบเทียบจะเป็นแบบ Case Sensitive และตรงกันทุกประการ (Ordinal Comparison)

List.RemoveLastN

List.RemoveLastN ลบจำนวน N รายการสุดท้ายจากรายการข้อมูล ใช้สำหรับการตัดข้อมูลท้าย การแยกข้อมูล และการจัดการรายการ

List.RemoveMatchingItems

List.RemoveMatchingItems จะคืน List ใหม่ที่ไม่มีสมาชิกที่ตรงกับสมาชิกใน removeItems List โดยใช้ Comparer ที่กำหนด เช่น Comparer.OrdinalIgnoreCase เพื่อลบรายการแบบไม่สนใจตัวพิมพ์เล็ก/ใหญ่ ซึ่งเป็นจุดเด่นที่ทำให้ฟังก์ชันนี้ยืดหยุ่นกว่า List.RemoveItems

List.RemoveNulls

List.RemoveNulls ลบค่า null ทั้งหมดจากรายการ ใช้สำหรับการทำความสะอาดข้อมูล การลบข้อมูลที่หายไป และการเตรียมข้อมูล

List.RemoveRange

List.RemoveRange ลบรายการจำนวนที่ระบุโดยเริ่มจากตำแหน่งที่ระบุ ใช้สำหรับการตัดข้อมูล การจัดการรายการ และการแยกข้อมูล

List.ReplaceMatchingItems

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

List.ReplaceRange

List.ReplaceRange แทนที่รายการในช่วงที่ระบุด้วยรายการใหม่ ใช้สำหรับการแก้ไขข้อมูล การจัดการรายการ และการอัปเดตข้อมูล

enumerations (1)
AccessControlKind

ประเภทการแจงนับ (Enumeration Type) สำหรับกำหนดประเภทการควบคุมการเข้าถึงข้อมูล ใช้ในการพัฒนาตัวเชื่อมต่อ Power Query แบบกำหนดเอง

ดูฟังก์ชันที่เกี่ยวข้องทั้งหมด (31) →
List functions (7)
List.SingleOrDefault

List.SingleOrDefault คืนค่าเดียวจากรายการ หรือค่าเริ่มต้นหากไม่พบหรือมีมากกว่า 1 ค่า ใช้สำหรับการดึงข้อมูลเดียว

List.Split

List.Split แบ่งรายการให้เป็นกลุ่มย่อยตามขนาดที่ระบุ ใช้สำหรับการจัดกลุ่มข้อมูล การแบ่งหน้า และการประมวลผลแบทช์

List.StandardDeviation

List.StandardDeviation คำนวณส่วนเบี่ยงเบนมาตรฐานของรายการตัวเลข ใช้สำหรับการวิเคราะห์ข้อมูล สถิติ และการวัดความเปลี่ยนแปลง

List.Sum

List.Sum รวมค่าตัวเลขทั้งหมดในรายการ โดยละเว้นค่า null โดยอัตโนมัติ ฟังก์ชันนี้เป็นพื้นฐานสำหรับการคำนวณสรุป การจำสรุป และการวิเคราะห์ข้อมูลในการแปลงข้อมูล

List.Times

List.Times สร้างรายการของค่าเวลาที่มีช่วงเวลาเท่ากัน ใช้สำหรับการสร้างลำดับเวลา การวิเคราะห์อนุกรมเวลา และการสร้างข้อมูลทดสอบ

List.Transform

List.Transform ใช้สำหรับสร้างลิสต์ใหม่โดยนำฟังก์ชันไปประมวลผลแต่ละตัวในลิสต์เดิม

List.TransformMany

List.TransformMany ประมวลผลข้อมูลและคืนค่าผลลัพธ์ ใช้สำหรับการจัดการข้อมูล การแปลงข้อมูล และการวิเคราะห์

Comments

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