Thep Excel

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

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

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

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

อัปเดต 3 December 2025

Syntax & Arguments

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

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 ได้อย่างมีประสิทธิภาพ 😎

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 รายการ

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

ผลลัพธ์{"Name", "Address", "PhoneNumber"}
ตัวอย่างที่ 2: แยกข้อความด้วยตัวคั่นหลายตัวอักษรText.Split("Name, the Customer, the Purchase Date", ", the ")

แยกข้อความโดยใช้ ", the " (สามตัวอักษร) เป็นตัวคั่น ข้อมูล multi-character delimiter จะคำนึงถึงลำดับอักษรและช่องว่างด้วย

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

ผลลัพธ์{"Name", "Customer", "Purchase Date"}
ตัวอย่างที่ 3: แยก CSV ในสูตร let…inlet CSVText = "Apple,Banana,Cherry,Date", Fruits = Text.Split(CSVText, ",") in Fruits

ในโครงสร้าง let…in ใช้ Text.Split เพื่อแยก CSV ที่คั่นด้วยเครื่องหมายจุลภาค หลังจากนั้นสามารถนำ List ไปใช้กับ List.Transform หรือ Table.FromRows ได้

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

ผลลัพธ์{"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

fx
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

ผลลัพธ์ตารางที่มี 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

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

ผลลัพธ์[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

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

ฟังก์ชันนี้Text.SplitText functions
Text functions (9)
Text.AfterDelimiter

ดึงข้อความหลังจากตัวคั่นที่กำหนด สามารถเลือกว่าจะใช้ตัวคั่นที่ 1, 2, 3 เป็นต้น

Text.BeforeDelimiter

Text.BeforeDelimiter ดึงข้อความส่วนที่อยู่ก่อนตัวคั่นที่กำหนด พร้อมตัวเลือกระบุตัวคั่นตัวไหน

Text.BetweenDelimiters

ดึงข้อความที่อยู่ระหว่างตัวคั่น 2 ตัว

Text.Combine

Text.Combine ใช้สำหรับรวมข้อความหลายตัวจาก List เข้าด้วยกันเป็นข้อความเดียว โดยสามารถเลือกใช้ตัวคั่น (separator) เช่น ลูกน้ำ เครื่องหมายขีด หรือ space ได้ เหมาะสำหรับสร้างชื่อเต็ม ที่อยู่ หรือรหัสประจำตัวจากส่วนประกอบย่อยๆ

Text.Replace

Text.Replace ใช้สำหรับแทนที่ทุกส่วนของข้อความเก่าในข้อความหลักด้วยข้อความใหม่ เป็น Case Sensitive และแทนที่ทีละครั้งที่เจอในข้อความทั้งหมด

Text.Select

Text.Select จะคืนค่าข้อความใหม่ที่ประกอบด้วยตัวอักษรที่อยู่ใน selectChars เท่านั้น อักขระใดที่ไม่อยู่ในรายการนี้จะถูกลบออกไป มีประโยชน์มากในการ Clean Data

Text.SplitAny

Text.SplitAny ใช้สำหรับแยกข้อความด้วยอักขระใดๆ ในรายการ แตกต่างจาก Text.Split ที่ใช้สตริงตัวคั่นเดียว

Text.ToList

Text.ToList จะแยกข้อความหลักออกเป็น List ของ Text String โดยแต่ละสมาชิกใน List จะเป็นตัวอักษร 1 ตัว (รวมถึงช่องว่างและอักขระพิเศษ) ตามลำดับที่ปรากฏในข้อความต้นฉบับ

Text.Trim

Text.Trim ลบอักขระที่ระบุออกจากต้นและท้ายของข้อความ ค่าเริ่มต้นจะลบแค่ช่องว่าง

enumerations (1)
ExtraValues.Type

ระบุการกระทำเมื่อพบค่าเกินมาในแถว (Extra Values) – ถ้า Splitter Function ส่งคอลัมน์มามากกว่าที่คาดหวัง ให้ Power Query รู้ว่าต้องทำไง

Accessing data functions (1)
Html.Table

Html.Table ใช้สำหรับแยกข้อมูลจากตารางหรือรายการในเอกสาร HTML โดยใช้ CSS selectors เพื่อกำหนดตำแหน่งและคอลัมน์

Comments

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