Thep Excel

Text.StartsWithตรวจสอบว่าข้อความขึ้นต้นด้วยคำที่กำหนด

Text.StartsWith ตรวจสอบว่าข้อความหลักขึ้นต้นด้วยข้อความย่อยที่กำหนดหรือไม่ โดยคืนค่า true หรือ false สามารถระบุ Comparer เพื่อเลือกว่าจะให้ตรวจสอบแบบ Case Sensitive (ไว) หรือ Case Insensitive (ไม่ไว) ได้

fx
=Text.StartsWith(text, substring, [comparer]) as nullable logical

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

อัปเดต 3 December 2025

Syntax & Arguments

อาร์กิวเมนต์ ชนิด ค่าเริ่มต้น คำอธิบาย
text text ข้อความหลักที่ต้องการตรวจสอบว่าขึ้นต้นด้วยข้อความย่อยหรือไม่ สามารถเป็น null ได้
substring text ข้อความย่อยที่ต้องการตรวจสอบว่าข้อความหลักขึ้นต้นด้วยข้อความนี้หรือไม่
[comparer]ไม่บังคับ function Comparer.Ordinal ฟังก์ชัน Comparer สำหรับการเปรียบเทียบ เช่น Comparer.Ordinal (case-sensitive) หรือ Comparer.OrdinalIgnoreCase (case-insensitive) หากไม่ระบุจะใช้ Comparer.Ordinal เป็นค่าเริ่มต้น

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

Additional Notes

ฟังก์ชัน Text.StartsWith เป็นฟังก์ชันพื้นฐานสำหรับตรวจสอบว่าข้อความหลักขึ้นต้นด้วยข้อความย่อย (substring) ที่กำหนดหรือไม่ โดยจะคืนค่าเป็น true หากขึ้นต้นตรงกัน และ false หากไม่ตรงกัน เมื่อข้อความหลักเป็น null ฟังก์ชันจะคืนค่า null

ที่เจ๋งคือเราสามารถควบคุมว่าจะให้ตรวจสอบแบบ Case Sensitive (แยกตัวพิมพ์เล็ก-ใหญ่) หรือ Case Insensitive (ไม่แยก) ได้โดยใช้พารามิเตอร์ Comparer ซึ่งทำให้ยืดหยุ่นมากในการตรวจสอบข้อความ 😎

ส่วนตัวผมใช้ฟังก์ชันนี้บ่อยมากเมื่อต้องการกรองข้อมูลตามคำขึ้นต้น เช่น กรองรหัสสินค้าที่ขึ้นต้นด้วย “PROD-” หรือกรองชื่อลูกค้าที่ขึ้นต้นด้วยอักษรบางตัว โดยมักใช้ร่วมกับ Table.SelectRows เพื่อสร้าง filter condition ที่ซับซ้อน

How it works

กรองข้อมูลตามรหัสสินค้า

เลือกเฉพาะรายการสินค้าที่รหัสขึ้นต้นด้วย "PROD" หรือ "SKU"

จัดกลุ่มข้อมูลตามหมวดหมู่

ถ้าข้อความในคอลัมน์ขึ้นต้นด้วย "Fruits" ให้จัดอยู่ในหมวดหมู่ผลไม้

Examples

ตัวอย่างที่ 1: ตรวจสอบการขึ้นต้นแบบ Case SensitiveText.StartsWith("Hello World", "Hello")

ข้อความ "Hello World" ขึ้นต้นด้วย "Hello" ตรงทุกตัว (รวมตัวพิมพ์ใหญ่ H) ดังนั้นจึงคืนค่า true

ส่วนตัวผมใช้ example นี้เป็นการตรวจสอบพื้นฐาน เพราะการแยกตัวพิมพ์เล็ก-ใหญ่เป็นจริงใน Power Query

fx
=Text.StartsWith("Hello World", "Hello")

ผลลัพธ์true
ตัวอย่างที่ 2: ตรวจสอบแล้วคืนค่า falseText.StartsWith("Hello World", "hello")

ข้อความ "Hello World" ไม่ได้ขึ้นต้นด้วย "hello" (ตัวพิมพ์เล็ก h) เพราะมันขึ้นต้นด้วย "Hello" (ตัวพิมพ์ใหญ่ H) ดังนั้นคืนค่า false

นี่คือสาเหตุทั่วไปของเหตุการณ์ที่ unexpected ครับ เพราะบางคนลืมว่า Power Query เป็น case-sensitive 😅

fx
=Text.StartsWith("Hello World", "hello")

ผลลัพธ์false
ตัวอย่างที่ 3: ใช้ Comparer.OrdinalIgnoreCase สำหรับ Case InsensitiveText.StartsWith("Apple Pie", "apple", Comparer.OrdinalIgnoreCase)

ด้วยการใช้ Comparer.OrdinalIgnoreCase ฟังก์ชันจะไม่สนใจความแตกต่างของตัวพิมพ์เล็ก-ใหญ่ ดังนั้น "Apple Pie" ถือว่าขึ้นต้นด้วย "apple" จึงคืนค่า true

ที่ต้องระวังคือ Comparer.OrdinalIgnoreCase จะทำการเปรียบเทียบแบบ ordinal (ตามลำดับไบต์) ไม่ใช่ culturally aware ถ้าต้องการ culture-aware comparison ให้ใช้ Comparer.FromCulture("th-TH") แทน

fx
=Text.StartsWith("Apple Pie", "apple", Comparer.OrdinalIgnoreCase)

ผลลัพธ์true
ตัวอย่างที่ 4: ใช้ในตาราง Power Query เพื่อกรองข้อมูลlet Products = Table.FromRecords({ [ProductCode = "PROD-001", ProductName = "Apple"], [ProductCode = "PROD-002", ProductName = "Banana"], [ProductCode = "SERV-0…

ตัวอย่างนี้แสดงการใช้ Text.StartsWith ร่วมกับ Table.SelectRows ในสถานการณ์จริง โดยสร้างตาราง Products แล้วกรองเฉพาะสินค้าที่มีรหัส (ProductCode) ขึ้นต้นด้วย "PROD-"

โดยใช้เงื่อนไข each Text.StartsWith([ProductCode], "PROD-") ซึ่ง 'each' วนลูปตรวจสอบทุกแถว และ [ProductCode] คือการอ้างอิงคอลัมน์ ProductCode ในแถวปัจจุบัน

ผลลัพธ์จะได้เฉพาะแถวสินค้า 3 รายการ (PROD-001, PROD-002, PROD-003) ส่วน SERV-001 ถูกกรองออก เพราะมันขึ้นต้นด้วย "SERV-" ไม่ใช่ "PROD-" ส่วนตัวผมชอบใช้ pattern นี้มากครับ เพราะทำให้โค้ด readable และ maintainable ได้ดี 💡

fx
let
Products = Table.FromRecords({
[ProductCode = "PROD-001", ProductName = "Apple"],
[ProductCode = "PROD-002", ProductName = "Banana"],
[ProductCode = "SERV-001", ProductName = "Consulting"],
[ProductCode = "PROD-003", ProductName = "Cherry"]
}),
OnlyProductCodes = Table.SelectRows(
Products,
each Text.StartsWith([ProductCode], "PROD-")
)
in
OnlyProductCodes

ผลลัพธ์Table with 3 rows:
[ProductCode="PROD-001", ProductName="Apple"]
[ProductCode="PROD-002", ProductName="Banana"]
[ProductCode="PROD-003", ProductName="Cherry"]

FAQs

Text.StartsWith เป็น Case Sensitive โดยค่าเริ่มต้นหรือไม่?+

ใช่ครับ เป็น Case Sensitive เมื่อไม่ระบุ Comparer parameter ดังนั้น Text.StartsWith("Apple", "apple") จะคืนค่า false เพราะมันขึ้นต้นด้วย "A" ตัวพิมพ์ใหญ่ ไม่ใช่ "a" ตัวพิมพ์เล็ก

ถ้าต้องการให้ case-insensitive ต้องเพิ่มพารามิเตอร์ที่สามดังนี้ Text.StartsWith("Apple", "apple", Comparer.OrdinalIgnoreCase) หรือสามารถแปลงข้อความก่อนเปรียบเทียบได้เช่น Text.StartsWith(Text.Lower("Apple"), Text.Lower("apple")) ครับ

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

Text.StartsWith ตรวจสอบเฉพาะว่าข้อความขึ้นต้นด้วยข้อความย่อยที่กำหนดหรือไม่ ส่วน Text.Contains ตรวจสอบว่าข้อความใดจะมีข้อความย่อยนั้นอยู่ที่ไหนก็ได้ (ต้น กลาง ท้าย)

เช่น Text.StartsWith("Hello World", "World") จะคืนค่า false เพราะ "World" ไม่ได้อยู่ที่ต้น แต่ Text.Contains("Hello World", "World") จะคืนค่า true เพราะ "World" อยู่ในข้อความ 😎

ถ้า text parameter เป็น null จะคืนค่าอะไร?+

ถ้า text parameter (ตัวแรก) เป็น null ฟังก์ชันจะคืนค่า null โดยไม่คืนค่า true หรือ false

ดังนั้นถ้าต้องการตรวจสอบและจัดการกรณี null ต้องเขียนเงื่อนไขพิเศษ เช่น each [Column] null and Text.StartsWith([Column], "Prefix") เพื่อให้แน่ใจว่า [Column] ไม่เป็น null ก่อนทำการเปรียบเทียบ

Comparer.OrdinalIgnoreCase กับ Comparer.FromCulture ต่างกันอย่างไร?+

Comparer.OrdinalIgnoreCase ทำการเปรียบเทียบแบบ ordinal (ตามลำดับไบต์) โดยไม่สนใจตัวพิมพ์เล็ก-ใหญ่ แต่ไม่ได้พิจารณา cultural differences

ส่วน Comparer.FromCulture("th-TH") ทำการเปรียบเทียบแบบ culture-aware ซึ่งอาจให้ผลลัพธ์ต่างกันเมื่อจัดการกับภาษาอื่น เช่น ภาษาไทย ส่วนตัวผมแนะนำให้ใช้ Comparer.OrdinalIgnoreCase สำหรับการเปรียบเทียบทั่วไป และ Comparer.FromCulture เมื่อต้องจัดการข้อมูลที่มีความสำคัญทางวัฒนธรรม 💡

Resources & Related

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

ฟังก์ชันนี้Text.StartsWithText functions
Text functions (3)
Text.Contains

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

Text.EndsWith

Text.EndsWith ตรวจสอบว่าข้อความหลักลงท้ายด้วยข้อความย่อย (substring) ที่กำหนดหรือไม่ คืนค่า true หากตรงกัน และ false หากไม่ตรงกัน สามารถใช้ Comparer เพื่อควบคุม Case Sensitivity

Text.PositionOf

หาตำแหน่งของข้อความย่อยในข้อความหลัก (0-indexed) โดยคืนค่า -1 หากไม่พบ

Comments

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