Splitter.SplitTextByDelimiter สร้างฟังก์ชันสำหรับแยกข้อความเป็นรายการโดยใช้ตัวคั่นที่ระบุ มีประโยชน์เมื่อต้องแยก CSV หรือข้อความที่คั่นด้วยตัวอักษรเฉพาะ
=Splitter.SplitTextByDelimiter(delimiter as text, optional quoteStyle as nullable number, optional csvStyle as nullable number) as function
=Splitter.SplitTextByDelimiter(delimiter as text, optional quoteStyle as nullable number, optional csvStyle as nullable number) as function
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| delimiter | text | Yes | ตัวคั่นที่ใช้แยกข้อความ เช่น “,” “;” “|” หรือสตริงใดๆ ที่ต้องการ | |
| quoteStyle | nullable number | Optional | null | ระบุวิธีจัดการข้อความในเครื่องหมาย เช่น QuoteStyle.Csv (ค่า 1) หรือ QuoteStyle.None (ค่า 0) |
| csvStyle | nullable number | Optional | null | ระบุวิธีจัดการลักษณะ CSV เฉพาะ เช่น CsvStyle.QuoteAfterDelimiter |
let Splitter = Splitter.SplitTextByDelimiter(","), Result = Splitter("Apple,Banana,Orange") in Resultlet
Splitter = Splitter.SplitTextByDelimiter(","),
Result = Splitter("Apple,Banana,Orange")
in
Result
{"Apple", "Banana", "Orange"}
let Splitter = Splitter.SplitTextByDelimiter(",", QuoteStyle.Csv), Result = Splitter("Smith, John,30,"New York, NY"") in Resultlet
Splitter = Splitter.SplitTextByDelimiter(",", QuoteStyle.Csv),
Result = Splitter("Smith, John,30,"New York, NY"")
in
Result
{"Smith", " John", "30", "New York, NY"}
let Splitter = Splitter.SplitTextByDelimiter(" | "), Result = Splitter("Product A | Product B | Product C") in Resultlet
Splitter = Splitter.SplitTextByDelimiter(" | "),
Result = Splitter("Product A | Product B | Product C")
in
Result
{"Product A", "Product B", "Product C"}
let Source = Table.FromRows( {{"John,25,NY"}, {"Jane,30,LA"}, {"Bob,28,TX"}}, {"FullData"} ), Splitter = Splitter.SplitTextByDelimiter(","), Split = Table.Trans…let
Source = Table.FromRows(
{{"John,25,NY"}, {"Jane,30,LA"}, {"Bob,28,TX"}},
{"FullData"}
),
Splitter = Splitter.SplitTextByDelimiter(","),
Split = Table.TransformColumns(
Source,
{{"FullData", Splitter}}
)
in
Split
ตารางเปลี่ยนจากข้อความเป็นรายการ {"John", "25", "NY"} เป็นต้น
Splitter.SplitTextByDelimiter ส่งกลับ “ฟังก์ชัน” ที่สามารถนำไปใช้หลายครั้ง ขณะที่ Text.Split ทำการแยกทันที ดังนั้น Splitter จึงมีประสิทธิภาพมากกว่าเมื่อต้องใช้แยกหลายครั้ง
ใช้เมื่อข้อมูล CSV มีค่าบางค่ามีตัวคั่นอยู่ภายใน เช่น “Smith, John” จะไม่ถูกแยกที่เครื่องหมายจุลภาค
ไม่ได้ Splitter.SplitTextByDelimiter ใช้แค่ข้อความธรรมดา หากต้องการ regex ให้ใช้ Text.Split กับ Regex.Split แทน
Splitter.SplitTextByDelimiter(delimiter, [quoteStyle], [csvStyle]) สร้างฟังก์ชันที่แยกข้อความเป็นรายการโดยใช้ตัวคั่นที่ระบุ ต่างจาก Text.Split ตรงที่มันส่งกลับ “ฟังก์ชัน” ซึ่งสามารถใช้หลายครั้งกับข้อมูลต่างๆ ได้ โดยจะคืนค่าเป็นรายการข้อความ (list of text).
จุดเด่นของฟังก์ชันนี้คือสามารถจัดการกับข้อมูล CSV ที่มีเครื่องหมายคำพูดได้อย่างถูกต้อง เช่น “Smith, John” จะยังคงเป็นสมาชิกเดียว ไม่แยกที่เครื่องหมายจุลภาค ด้วยการใช้พารามิเตอร์ quoteStyle.
ส่วนตัวผมใช้ Splitter.SplitTextByDelimiter ร่วมกับ Table.TransformColumns เพื่อแยกข้อมูลในคอลัมน์ทั้งหมด ทำให้โค้ดปึกแผ่นและมีประสิทธิภาพดีเยี่ยมครับ 😎