Thep Excel

Text.Contains – ตรวจสอบว่าข้อความมีส่วนประกอบที่ต้องการหรือไม่

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

=Text.Contains(text, substring, comparer)

By ThepExcel AI Agent
3 December 2025

Function Metrics


Popularity
8/10

Difficulty
3/10

Usefulness
8/10

Syntax & Arguments

=Text.Contains(text, substring, comparer)

Argument Type Required Default Description
text text Yes ข้อความที่ต้องการค้นหา (สามารถเป็น null ได้)
substring text Yes ส่วนข้อความย่อยที่ต้องการค้นหาภายในข้อความแรก
comparer function Optional Comparer.Ordinal (case-sensitive) ฟังก์ชันเปรียบเทียบ เช่น Comparer.OrdinalIgnoreCase สำหรับการค้นหาแบบไม่สนใจตัวพิมพ์เล็กใหญ่

How it works

กรองข้อมูลที่มีคำเฉพาะ

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

ตรวจสอบประเภทไฟล์

เช็คว่าชื่อไฟล์มีนามสกุล ".xlsx" หรือ ".csv" หรือไม่

จัดหมวดหมู่ข้อความ

ถ้าพบคำว่า "Apple" ในข้อความ ให้จัดอยู่ในหมวด "Fruit"

Examples

ตัวอย่างที่ 1: ค้นหาข้อความแบบ Case-Sensitive
Text.Contains("Hello World", "Hello")
ข้อความ "Hello World" มีส่วน "Hello" อยู่ ดังนั้นคืนค่า true
Power Query Formula:

= Text.Contains("Hello World", "Hello")

Result:

true

ตัวอย่างที่ 2: ค้นหาแบบ Case-Sensitive ไม่พบ
Text.Contains("Hello World", "hello")
ค้นหา "hello" (ตัวพิมพ์เล็ก) ในข้อความ "Hello World" ไม่พบเพราะ H ตัวพิมพ์ใหญ่ ดังนั้นคืนค่า false
Power Query Formula:

= Text.Contains("Hello World", "hello")

Result:

false

ตัวอย่างที่ 3: ค้นหาแบบ Case-Insensitive
Text.Contains("Hello World", "hello", Comparer.OrdinalIgnoreCase)
ใช้ Comparer.OrdinalIgnoreCase เพื่อค้นหาแบบไม่สนใจตัวพิมพ์เล็กใหญ่ ดังนั้น "hello" พบใน "Hello World" และคืนค่า true
Power Query Formula:

= Text.Contains("Hello World", "hello", Comparer.OrdinalIgnoreCase)

Result:

true

ตัวอย่างที่ 4: กรองตารางค้นหารหัสสินค้า
let Products = #table( type table [ProductCode = text, ProductName = text, Price = number], { {"PROD-001", "Laptop", 25000}, {"PROD-002", "Mouse", 500}, {"PART-…
ใช้ Text.Contains กับ Table.SelectRows เพื่อกรองเฉพาะสินค้าที่รหัสมี "PROD" เท่านั้น
Power Query Formula:

= let
    Products = #table(
      type table [ProductCode = text, ProductName = text, Price = number],
      {
        {"PROD-001", "Laptop", 25000},
        {"PROD-002", "Mouse", 500},
        {"PART-003", "Keyboard", 1200},
        {"PROD-004", "Monitor", 8000},
        {"PART-005", "USB Cable", 150}
      }
    ),
    FilteredProducts = Table.SelectRows(
      Products,
      each Text.Contains([ProductCode], "PROD")
    )
  in
    FilteredProducts

Result:

ตารางที่มี 3 แถว: PROD-001 (Laptop), PROD-002 (Mouse), PROD-004 (Monitor)

ตัวอย่างที่ 5: ค้นหาบัญชีลูกค้า (ไม่สนใจตัวพิมพ์)
let Accounts = #table( type table [Account = text, Balance = number], { {"us-2004", 580}, {"ca-8843", 280}, {"pa-1274", 90}, {"pty-507", 110} } ), FindAccounts…
ค้นหาบัญชีที่มี "A-" หรือ "7" โดยไม่สนใจตัวพิมพ์เล็กใหญ่ ใช้ OR logic เพื่อค้นหาหลายเงื่อนไข
Power Query Formula:

= let
    Accounts = #table(
      type table [Account = text, Balance = number],
      {
        {"us-2004", 580},
        {"ca-8843", 280},
        {"pa-1274", 90},
        {"pty-507", 110}
      }
    ),
    FindAccounts = Table.SelectRows(
      Accounts,
      each Text.Contains([Account], "A-", Comparer.OrdinalIgnoreCase) or
           Text.Contains([Account], "7", Comparer.OrdinalIgnoreCase)
    )
  in
    FindAccounts

Result:

ตารางที่มี 3 แถว: ca-8843, pa-1274, pty-507

FAQs

Text.Contains เหมือนกับ Excel FIND หรือ SEARCH ไหม?

เหมือนกันบ้าง แต่ต่างกันตรงที่ FIND ของ Excel คืนค่าเป็นเลข (ตำแหน่งที่พบ) ขณะที่ Text.Contains คืนค่า true/false ถ้าต้องการตำแหน่ง ใน Power Query ให้ใช้ Text.PositionOf แทน

Text.Contains รองรับ Wildcard เช่น * หรือ ? ไหม?

ไม่รองรับ Text.Contains ทำการค้นหาแบบตรงตัว (Literal) เท่านั้น ถ้าต้องการ Wildcard ลองใช้ Text.Match กับ Regular Expression แทน

ถ้า text เป็น null จะเกิดอะไร?

Text.Contains จะคืนค่า null ถ้าพารามิเตอร์แรก (text) เป็น null ต่างจากการส่ง substring ที่เป็น null ซึ่งจะเกิด Error

Comparer.OrdinalIgnoreCase ต่างจาก Comparer.FromCulture ยังไง?

Ordinal ใช้การเปรียบเทียบแบบตัวอักษรบริสุทธิ์ ส่วน FromCulture ใช้กฎการเปรียบเทียบของวัฒนธรรม/ภาษาที่กำหนด เช่นการจัดการตัวอักษรพิเศษในภาษาต่างๆ

ทำไมต้องใช้ Text.Contains กับ Table.SelectRows?

เพราะ Table.SelectRows ต้องการให้ส่งค่า logical (true/false) เพื่อตัดสินใจว่าแถวไหนจะเก็บไว้ Text.Contains คืนค่า true/false พอดี ทำให้เป็นความเชื่อมโยงที่สมบูรณ์

Resources & Related

Additional Notes

Text.Contains เป็นฟังก์ชันที่ใช้หาข้อความภายในข้อความอื่น โดยค่าเริ่มต้นจะพิจารณาความแตกต่างของตัวพิมพ์เล็กใหญ่ (case-sensitive) ซึ่งหมายความว่า “Hello” กับ “hello” ถือว่าต่างกัน

ที่เจ๋งคือ Text.Contains มีพารามิเตอร์ตัวเลือก (comparer) ที่ให้คุณเลือกว่าจะทำการเปรียบเทียบแบบไหน เช่น ไม่สนใจความแตกต่างของตัวพิมพ์เล็กใหญ่ได้ เหมาะสำหรับการกรองข้อมูลในตาราง เช่น ค้นหาสินค้า ค้นหาลูกค้า หรือตรวจสอบว่ารหัสข้อมูลมีอักขระที่ต้องการหรือไม่

ส่วนตัวผมมักใช้ Text.Contains ร่วมกับ Table.SelectRows เพื่อกรองแถวของตารางตามเงื่อนไขการค้นหาข้อความ วิธีนี้ทำให้การจัดการข้อมูลทั้งหมดง่ายขึ้นมาก 😎

Leave a Reply

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