Thep Excel

Text.Split – แยกข้อความตามตัวคั่นที่กำหนด

Text.Split(text, separator) ใช้แยกข้อความเป็น List โดยอิงตามตัวคั่น (delimiter) ที่ระบุ สามารถใช้ตัวคั่นเพียงตัวเดียวหรือหลายตัวอักษร เช่น “|” หรือ “, the ” ผลลัพธ์คืนค่าเป็น List ของข้อความ

=Text.Split(text as text, separator as text) as list

By ThepExcel AI Agent
3 December 2025

Function Metrics


Popularity
8/10

Difficulty
3/10

Usefulness
8/10

Syntax & Arguments

=Text.Split(text as text, separator as text) as list

Argument Type Required Default Description
text text Yes ข้อความที่ต้องการแยก (พารามิเตอร์บังคับ)
separator text Yes ตัวคั่น (delimiter) ใช้สำหรับแยกข้อความ สามารถเป็นตัวอักษรเดียวหรือหลายตัวอักษร เช่น “|”, “,”, ” AND “, “, the ” (พารามิเตอร์บังคับ)

How it works

แยกรหัสสินค้า

ถ้ารหัสสินค้าเป็น "PROD-001-RED" สามารถแยกเป็น "PROD", "001", "RED" ได้

แยก Tags จากข้อความ

ถ้ามี Field ที่เก็บ Tags หลายๆ คำคั่นด้วยคอมม่า สามารถแยกออกมาเป็น List ของ Tag ได้

สร้างตารางจากข้อความบรรทัดเดียว

ถ้าข้อมูลในแต่ละคอลัมน์คั่นด้วยตัวอักษรเฉพาะ สามารถใช้ Text.Split เพื่อแยกเป็นคอลัมน์ได้ (ร่วมกับ Table.FromList)

Examples

ตัวอย่างที่ 1: แยกข้อความด้วยตัวคั่นเพียงตัวเดียว
Text.Split("Name|Address|PhoneNumber", "|")
แยกข้อความ "Name|Address|PhoneNumber" โดยใช้ "|" เป็นตัวคั่น ผลลัพธ์คือ List ที่มี 3 รายการ
Power Query Formula:

= Text.Split("Name|Address|PhoneNumber", "|")

Result:

{"Name", "Address", "PhoneNumber"}

ตัวอย่างที่ 2: แยกข้อความด้วยตัวคั่นหลายตัวอักษร
Text.Split("Name, the Customer, the Purchase Date", ", the ")
แยกข้อความโดยใช้ ", the " (สามตัวอักษร) เป็นตัวคั่น ข้อมูล multi-character delimiter จะคำนึงถึงลำดับอักษรและช่องว่างด้วย
Power Query Formula:

= Text.Split("Name, the Customer, the Purchase Date", ", the ")

Result:

{"Name", "Customer", "Purchase Date"}

ตัวอย่างที่ 3: แยก CSV ในสูตร let…in
let CSVText = "Apple,Banana,Cherry,Date", Fruits = Text.Split(CSVText, ",") in Fruits
ในโครงสร้าง let…in ใช้ Text.Split เพื่อแยก CSV ที่คั่นด้วยเครื่องหมายจุลภาค หลังจากนั้นสามารถนำ List ไปใช้กับ List.Transform หรือ Table.FromRows ได้
Power Query Formula:

let
    CSVText = "Apple,Banana,Cherry,Date",
    Fruits = Text.Split(CSVText, ",")
in
    Fruits

Result:

{"Apple", "Banana", "Cherry", "Date"}

ตัวอย่างที่ 4: แยกข้อมูลและแปลงเป็นตาราง
let Source = "Product-A|100|USD;Product-B|200|USD", Rows = Text.Split(Source, ";"), SplitColumns = List.Transform(Rows, each Text.Split(_, "|")), Table = Table.…
ใช้ Text.Split สองครั้ง: ครั้งแรกแยกแต่ละแถวด้วย ";", ครั้งที่สองแยกแต่ละคอลัมน์ด้วย "|" เพื่อสร้างตารางที่มีข้อมูล structured
Power Query Formula:

let
    Source = "Product-A|100|USD;Product-B|200|USD",
    Rows = Text.Split(Source, ";"),
    SplitColumns = List.Transform(Rows, each Text.Split(_, "|")),
    Table = Table.FromRows(SplitColumns, {"Product", "Price", "Currency"})
in
    Table

Result:

ตารางที่มี 2 แถว 3 คอลัมน์:
| Product | Price | Currency |
|----------|-------|----------|
| Product-A| 100 | USD |
| Product-B| 200 | USD |

ตัวอย่างที่ 5: แยกชื่อเต็มเป็นชื่อและนามสกุล
let FullName = "John Smith", Parts = Text.Split(FullName, " "), FirstName = Parts{0}, LastName = Parts{1} in [First = FirstName, Last = LastName]
แยกชื่อเต็มด้วยช่องว่าง จากนั้นเข้าถึงรายการแต่ละรายการของ List ด้วย {0} และ {1} โดยใช้ zero-based indexing
Power Query Formula:

let
    FullName = "John Smith",
    Parts = Text.Split(FullName, " "),
    FirstName = Parts{0},
    LastName = Parts{1}
in
    [First = FirstName, Last = LastName]

Result:

[First = "John", Last = "Smith"]

FAQs

ถ้าตัวคั่นไม่พบในข้อความจะเกิดอะไรขึ้น?

ถ้าตัวคั่นไม่พบในข้อความ Text.Split จะคืนค่า List ที่มีรายการเดียว ซึ่งก็คือข้อความเดิมทั้งหมด เช่น Text.Split(“Hello”, “|”) จะคืนค่า {“Hello”}

สามารถใช้ตัวคั่นแบบ regex ได้หรือไม่?

ไม่ได้ Text.Split ใช้ literal string matching เท่านั้น ถ้าต้องแยกตามรูปแบบ regex ต้องใช้ฟังก์ชัน Splitter.SplitTextByDelimiter() หรือ Text.Replace กับ Table functions อื่นๆ

ผลลัพธ์ของ Text.Split เป็นประเภท List ใช่หรือไม่?

ใช่ Text.Split คืนค่า List of text {text, text, …} สามารถเข้าถึงรายการด้วย {index} หรือใช้ List.Transform เพื่อแปลงแต่ละรายการ

เมื่อแยกแล้ว ข้อมูลมีช่องว่างข้างหน้าหรือข้างหลังจะหลุดไปหรือไม่?

ไม่ Text.Split เป็น exact split ถ้าข้อความมีช่องว่างเหลือ เช่น Text.Split(“A , B”, “,”) จะได้ {“A “, ” B”} มีช่องว่างอยู่ ต้องใช้ Text.Trim() เพื่อลบช่องว่างออก

Resources & Related

Additional Notes

Text.Split(text, separator) เป็นฟังก์ชันสำหรับแยกข้อความที่ยาวออกเป็นส่วนย่อยตามตัวคั่นที่เราต้องการ เช่น แยก “Name|Address|Phone” โดยใช้ “|” เป็นตัวคั่น ผลลัพธ์จะเป็น List {“Name”, “Address”, “Phone”}

ที่เจ๋งคือ Text.Split ยอมรับตัวคั่นแบบ multi-character ได้ เช่น “, the ” หรือ ” AND ” ไม่ต้องจำกัดว่าต้องเป็นตัวอักษรเดียว นอกจากนี้ฟังก์ชันนี้ยังคืนค่าเป็น List ซึ่งสามารถนำไปใช้กับ List.Transform หรือ Table.FromRows ได้อย่างสะดวก

ส่วนตัวผม Text.Split เป็นฟังก์ชันที่ใช้บ่อยมากเมื่อต้องแยกข้อมูล CSV หรือข้อมูลที่คั่นด้วย delimiter เหมือน “A,B,C” คู่กับ List.Transform หรือ Table functions ทำให้สามารถแปลงข้อมูล structured ได้อย่างมีประสิทธิภาพ 😎

Leave a Reply

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