Thep Excel

List.Containsตรวจสอบว่า List มีสมาชิกที่กำหนดหรือไม่

List.Contains จะคืนค่า true หาก value ที่กำหนดเป็นสมาชิกของ List และคืนค่า false หากไม่พบ สามารถระบุ Comparer เพื่อกำหนดว่าจะให้ตรวจสอบแบบ Case Sensitive หรือ Case Insensitive ได้

fx
=List.Contains(list, value, [comparer]) as logical

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

อัปเดต 3 December 2025

Syntax & Arguments

อาร์กิวเมนต์ ชนิด ค่าเริ่มต้น คำอธิบาย
list list List ที่ต้องการค้นหา
value any ค่าที่ต้องการค้นหาใน List
[comparer]ไม่บังคับ function Comparer.Ordinal ฟังก์ชัน Comparer สำหรับกำหนดวิธีการเปรียบเทียบ

[ ] = อาร์กิวเมนต์ที่ไม่บังคับ

Additional Notes

ฟังก์ชัน List.Contains ใน Power Query ใช้สำหรับตรวจสอบว่า List มีสมาชิกที่ตรงกับค่าที่ต้องการค้นหาอยู่ภายในหรือไม่ โดยจะคืนค่า true หากพบ และ false หากไม่พบ

ที่เจ๋งคือ List.Contains ทำงานได้เร็วแม้กับ List ที่มีจำนวนสมาชิกมากๆ ก็ตาม นอกจากนี้ยังสามารถระบุ Comparer เพื่อกำหนดว่าการตรวจสอบจะเป็น Case Sensitive หรือ Case Insensitive ได้อีกด้วย

ส่วนตัวผมใช้ฟังก์ชันนี้บ่อยมากเวลาต้อง Filter ข้อมูลโดยดูจากค่าที่อยู่ใน List ที่สร้างมาก่อนหน้า มันช่วยให้โค้ดสะอาดและเข้าใจง่ายขึ้นเยอะครับ 😎

How it works

ตรวจสอบสิทธิ์การเข้าถึง

เช็คว่าชื่อผู้ใช้อยู่ใน List ของผู้ดูแลระบบหรือไม่

กรองข้อมูลตามรายการ

ใช้เพื่อกรองข้อมูลในตาราง ให้เหลือเฉพาะรายการที่อยู่ใน List ของค่าที่ยอมรับ

Examples

ตัวอย่างที่ 1: ตรวจสอบว่ามีสมาชิกList.Contains({"apple", "banana", "cherry"}, "banana")

List มีคำว่า "banana" อยู่ จึงคืนค่า true

fx
=List.Contains({"apple", "banana", "cherry"}, "banana")

ผลลัพธ์true
ตัวอย่างที่ 2: ตรวจสอบว่าไม่มีสมาชิกList.Contains({"apple", "banana"}, "orange")

List ไม่มีคำว่า "orange" อยู่ จึงคืนค่า false

fx
=List.Contains({"apple", "banana"}, "orange")

ผลลัพธ์false
ตัวอย่างที่ 3: ไม่สนใจตัวพิมพ์เล็ก/ใหญ่List.Contains({"Apple", "Banana"}, "apple", Comparer.OrdinalIgnoreCase)

ใช้ Comparer.OrdinalIgnoreCase เพื่อไม่สนใจ Case Sensitive ทำให้ "apple" และ "Apple" ถูกมองว่าเหมือนกัน

fx
=List.Contains({"Apple", "Banana"}, "apple", Comparer.OrdinalIgnoreCase)

ผลลัพธ์true
ตัวอย่างที่ 4: ตรวจสอบกับตัวเลขlet Numbers = {10, 20, 30, 40, 50}, Check = List.Contains(Numbers, 30) in Check

List.Contains ทำงานได้กับตัวเลขเช่นกัน มันเปรียบเทียบค่าตัวเลขแล้วคืนค่า true หากพบค่า 30 ใน List

fx
let
Numbers = {10, 20, 30, 40, 50},
Check = List.Contains(Numbers, 30)
in
Check

ผลลัพธ์true

FAQs

List.Contains ต่างจาก List.FindText อย่างไร?+

List.Contains ตรวจสอบว่ามีสมาชิกที่ 'ตรงกันเป๊ะ' หรือไม่ ส่วน List.FindText ตรวจสอบว่ามีสมาชิกที่ 'มีข้อความย่อย' ที่กำหนดอยู่หรือไม่ เจอบ่อยครั้งที่คนสับสนครับ 😅

ทำไมถึงคืนค่า false ทั้งๆ ที่ค่าดูเหมือนอยู่ใน List?+

ปัญหานี้เกิดจาก Data Type ไม่ตรงกันบ่อยครั้งครับ เช่น ค้นหา 30 (Number) แต่ List มี "30" (Text) ลองใช้ Comparer.Ordinal หรือแปลง Data Type ให้เหมือนกันก่อนนะ

Resources & Related

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

ฟังก์ชันนี้List.ContainsList functions
List functions (6)
List.AllTrue

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

List.AnyTrue

List.AnyTrue คืนค่า true หากมีเงื่อนไขอย่างน้อยหนึ่งข้อใน List เป็นจริง

List.ContainsAll

List.ContainsAll คืนค่า true ถ้า List หลักมีสมาชิกครบทุกตัวที่ระบุใน List ที่สอง

List.ContainsAny

List.ContainsAny คืนค่า true ถ้า List หลักมีสมาชิกอย่างน้อยหนึ่งตัวจาก List ที่สอง

List.FindText

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

List.PositionOf

List.PositionOf จะคืนค่า Index แรกสุด (0-based) ของ value ที่พบใน list ถ้าไม่พบจะคืนค่า -1 สามารถระบุ occurrence เพื่อหาตำแหน่งของตัวที่ซ้ำกัน และใช้ comparer เพื่อกำหนดวิธีการเปรียบเทียบ (Case Sensitive/Insensitive)

Table functions (2)
Table.ColumnNames

Table.ColumnNames ดึงชื่อคอลัมน์ทั้งหมดจากตาราง และส่งกลับมาเป็นลิสต์ข้อความ ซึ่งจำเป็นสำหรับการตรวจสอบ schema แบบ dynamic

Table.ColumnNames

Table.ColumnNames ดึงชื่อคอลัมน์ทั้งหมดจากตารางและคืนค่าเป็นลิสต์ของข้อความ เหมาะสำหรับการทำงานแบบไดนามิกกับโครงสร้างตารางที่ไม่แน่นอน

Comparer functions (1)
Comparer.OrdinalIgnoreCase

Comparer.OrdinalIgnoreCase เป็นฟังก์ชันที่คืนค่าเป็น 'Function' ซึ่งใช้ในการเปรียบเทียบค่า 2 ค่า โดยจะถือว่า "A" และ "a" เท่ากัน (return 0) ใช้เป็น Argument สุดท้ายในหลายๆ ฟังก์ชัน เช่น List.Contains, Text.Contains, Table.Distinct

Record functions (1)
Record.FieldNames

ฟังก์ชันสำหรับดึงรายชื่อ Field ทั้งหมดจาก Record และคืนค่าเป็น List ของ Text

Comments

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