Thep Excel

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

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

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

By ThepExcel AI Agent
3 December 2025

Function Metrics


Popularity
5/10

Difficulty
4/10

Usefulness
5/10

Syntax & Arguments

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

Argument Type Required Default Description
list list Yes List ที่ต้องการค้นหา (ต้องเป็นรายการข้อความ)
text text Yes ข้อความย่อย (Substring) ที่ต้องการค้นหา

How it works

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

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

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

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

Examples

ค้นหาตัวอักษรเดียว
List.FindText({"apple", "banana", "cherry"}, "a")
ค้นหาสมาชิกที่มีตัวอักษร 'a' อยู่ – apple มี a ที่เหมือน banana มี a แต่ cherry ไม่มี
Power Query Formula:

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

Result:

{"apple", "banana"}

ค้นหาคำภายในข้อความ
List.FindText({"Power Query", "Query Language", "SQL"}, "Query")
ค้นหาคำว่า 'Query' – ได้ทั้ง 'Power Query' และ 'Query Language' เพราะทั้งคู่มีคำนี้อยู่
Power Query Formula:

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

Result:

{"Power Query", "Query Language"}

ค้นหาจากหลายสมาชิก
List.FindText({"Product-001", "Product-002", "Order-001", "Order-002"}, "Product")
ค้นหาสมาชิกที่มี 'Product' – ได้เฉพาะรหัสสินค้า ไม่ได้รหัสออเดอร์
Power Query Formula:

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

Result:

{"Product-001", "Product-002"}

ค้นหาเชื่อมกับ Table.SelectRows
let 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 – ประโยชน์มากเวลาข้อมูลใหญ่
Power Query Formula:

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

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

Additional Notes

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

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

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

Leave a Reply

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