Thep Excel

List.FindTextค้นหาข้อความภายใน List

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

fx
=List.FindText(list, text) as list

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

อัปเดต 3 December 2025

Syntax & Arguments

อาร์กิวเมนต์ ชนิด คำอธิบาย
list list List ที่ต้องการค้นหา (ต้องเป็นรายการข้อความ)
text text ข้อความย่อย (Substring) ที่ต้องการค้นหา

Additional Notes

List.FindText เป็นฟังก์ชันสำหรับค้นหาเนื้อหาข้อความภายในสมาชิกของ List โดยมันจะตรวจสอบทีละสมาชิก แล้วคืนค่า List ใหม่ที่มีเฉพาะสมาชิกที่ ‘มี’ ข้อความที่ค้นหาอยู่ภายใน (Substring matching) ไม่ใช่แค่ Match ทั้งคำ

ที่เจ๋งคือ มันทำให้ผมค้นหาได้ยืดหยุ่นมาก เช่นค้นหา ‘cat’ ในรายชื่อสัตว์ก็จะจับ ‘cat’, ‘catfish’, ‘concatenate’ ไปหมด ไม่ต้องเขียน Complex Formula

ส่วนตัวผม ผมใช้กับ Table.SelectRows เพื่อกรองข้อมูลจากตารางใหญ่ พอมีเงื่อนไขค้นหาข้อความแล้ว มันเร็วและชัดเจนมาก 😎

How it works

ค้นหาสินค้าที่เกี่ยวข้อง

ค้นหารายการสินค้าที่มีคำว่า "Samsung" หรือ "iPhone" อยู่ในชื่อสินค้า

กรองข้อความใน Log File

เลือกเฉพาะบรรทัดใน Log File ที่มีคำว่า "Error" หรือ "Warning" เพื่อตรวจสอบปัญหา

Examples

ค้นหาตัวอักษรเดียวList.FindText({"apple", "banana", "cherry"}, "a")

ค้นหาสมาชิกที่มีตัวอักษร 'a' อยู่ – apple มี a ที่เหมือน banana มี a แต่ cherry ไม่มี

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

ผลลัพธ์{"apple", "banana"}
ค้นหาคำภายในข้อความList.FindText({"Power Query", "Query Language", "SQL"}, "Query")

ค้นหาคำว่า 'Query' – ได้ทั้ง 'Power Query' และ 'Query Language' เพราะทั้งคู่มีคำนี้อยู่

fx
=List.FindText({"Power Query", "Query Language", "SQL"}, "Query")

ผลลัพธ์{"Power Query", "Query Language"}
ค้นหาจากหลายสมาชิกList.FindText({"Product-001", "Product-002", "Order-001", "Order-002"}, "Product")

ค้นหาสมาชิกที่มี 'Product' – ได้เฉพาะรหัสสินค้า ไม่ได้รหัสออเดอร์

fx
=List.FindText({"Product-001", "Product-002", "Order-001", "Order-002"}, "Product")

ผลลัพธ์{"Product-001", "Product-002"}
ค้นหาเชื่อมกับ Table.SelectRowslet Data = Table.FromRecords({{Name="Alice Smith", Age=25}, {Name="Bob Johnson", Age=30}, {Name="Alice Brown", Age=28}}), FilterList = List.FindText(Data[Name],…

ใช้ List.FindText เพื่อหา Names ที่มี 'Alice' แล้วใช้กรอง Table – ประโยชน์มากเวลาข้อมูลใหญ่

fx
let
Data = Table.FromRecords({{Name="Alice Smith", Age=25}, {Name="Bob Johnson", Age=30}, {Name="Alice Brown", Age=28}}),
FilterList = List.FindText(Data[Name], "Alice"),
Result = Table.SelectRows(Data, each List.Contains(FilterList, [Name]))
in
Result

ผลลัพธ์ตารางที่มีแค่ Alice Smith และ Alice Brown

FAQs

List.FindText เป็น Case Sensitive หรือไม่?+

เป็น Case Sensitive ครับ ผม test ดูแล้ว List.FindText({"Apple", "apple"}, "apple") จะได้แค่ {"apple"} ไม่จับ "Apple" ถ้าต้องไม่สนใจตัวพิมพ์ใหญ่/เล็ก ต้องใช้ Text.Lower กับทั้ง List และ Text

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

ผมชี้แจงนะ – List.Contains เป็นการหา Exact Match พอดีๆ (หรือเกือบพอดี) ส่วน List.FindText เป็นการหา Substring Match (ค้นหาข้อความย่อยภายใน) ดังนั้น List.FindText ยืดหยุ่นกว่า

ถ้า List ว่างหรือ Text ว่างจะเกิดอะไร?+

ถ้า List ว่าง จะได้ List ว่าง ถ้า Text ว่าง ผมเดาว่าจะได้ List เต็มทั้งหมด (เพราะทุกข้อความมี Empty String อยู่) ลองเองดีที่สุด

Resources & Related

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

ฟังก์ชันนี้List.FindTextList functions
List functions (2)
List.Contains

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

List.Select

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

Table functions (1)
Table.SelectRows

Table.SelectRows เป็นฟังก์ชันสำหรับกรองตาราง (filter table) ใน Power Query โดยใช้ฟังก์ชันเงื่อนไข (condition function) เพื่อตรวจสอบแต่ละแถว ถ้าเงื่อนไขคืนค่า true จะเก็บแถวนั้นไว้ ถ้าเป็น false จะตัดทิ้ง สามารถใช้ keyword 'each' ร่วมกับการอ้างอิงคอลัมน์ด้วย [ColumnName] เพื่อเขียนเงื่อนไขได้สะดวก รองรับการกรองตามตัวเลข ข้อความ วันที่ การตรวจสอบค่า null และเงื่อนไขที่ซับซ้อนด้วย and/or operators ฟังก์ชันนี้รองรับ Query Folding ซึ่งช่วยเพิ่มประสิทธิภาพเมื่อทำงานกับ data source ขนาดใหญ่

Text functions (1)
Text.Contains

Text.Contains ใช้สำหรับตรวจสอบว่าข้อความที่กำหนด (text) มีข้อความย่อยที่ต้องการค้นหา (substring) อยู่ภายในหรือไม่ ส่งคืนค่า true หรือ false

Comments

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