กลับไปหน้า Power Query
ทริคPower Query

Split Column (แยกคอลัมน์)

แยกข้อความในคอลัมน์เดียวออกเป็นหลายคอลัมน์ตามตัวคั่นหรือจำนวนอักขระ

เริ่มอ่านตรงนี้ก่อน

อธิบายแบบง่าย

Split Column (แยกคอลัมน์) คือเรื่องที่ช่วยให้เราใช้เชื่อมต่อและทำความสะอาดข้อมูลซ้ำๆ ให้เป็นขั้นตอนก่อนเอาไปทำรายงานได้ถูกทางขึ้น

ระดับ

เหมาะกับคนเริ่มต้น

ใช้เมื่อไหร่

คอลัมน์เดียวมีทั้งรหัสและชื่อรวมกัน เช่น "P001 - น้ำมันพืช"

อ่านแล้วทำอะไรต่อ

คอลัมน์ Product เก็บ "P001 - น้ำมันพืช" แยกที่ " - " ได้คอลัมน์ Code = P001 และ Name = น้ำมันพืช

เห็นภาพ: ทริคนี้เป็นยังไง

ก่อน: รหัสกับชื่อรวมในคอลัมน์เดียว
Product
----------------------
P001 - น้ำมันพืช
P002 - ข้าวสาร
P003 - น้ำตาลทราย
หลัง: แยกที่ " - " ได้ Code และ Name
= Table.SplitColumn(Source, "Product",
    Splitter.SplitTextByDelimiter(" - ", QuoteStyle.Csv),
    {"Code", "Name"})

Code    Name
------  -----------
P001    น้ำมันพืช
P002    ข้าวสาร
P003    น้ำตาลทราย
คอลัมน์เดียวที่มัดรหัสกับชื่อรวมกัน แยกออกเป็นสองคอลัมน์ที่นำไปจับคู่ข้อมูลได้

ใช้ตอนไหน?

  • คอลัมน์เดียวมีทั้งรหัสและชื่อรวมกัน เช่น "P001 - น้ำมันพืช"
  • ต้องแยกชื่อกับนามสกุลออกจากกันเพื่อจัดเรียงหรือจับคู่ข้อมูล
  • วันที่หรือที่อยู่ถูกเก็บรวมเป็นข้อความก้อนเดียว ต้องแตกออกเป็นส่วน ๆ

ความหมาย

Split Column คือการแยกข้อความที่อยู่ในคอลัมน์เดียวให้กลายเป็นหลายคอลัมน์ โดยแยกตามตัวคั่น (delimiter — เช่น เครื่องหมายจุลภาค ขีด หรือเว้นวรรค) หรือแยกตามจำนวนอักขระ เหมาะกับข้อมูลที่ถูกจับมัดรวมกันมา เช่น 'รหัส-ชื่อสินค้า' หรือ 'ชื่อ นามสกุล'

แยกตามตัวคั่นหรือจำนวนอักขระ

เลือกคอลัมน์ แล้วใช้ Split Column เลือกว่าจะแยก By Delimiter (ตามตัวคั่น) หรือ By Number of Characters (ตามจำนวนอักขระ) แล้วเลือกว่าจะแยกที่ตัวคั่นแรก ตัวคั่นสุดท้าย หรือทุกตัวคั่น

Home > Split Column > By Delimiter
// เลือก Custom delimiter = " - "  Split at = Each occurrence
// M ที่ได้:
= Table.SplitColumn(Source, "Product",
    Splitter.SplitTextByDelimiter(" - ", QuoteStyle.Csv),
    {"Code", "Name"})

ตัวอย่างการใช้

แยกรหัสกับชื่อสินค้า

คอลัมน์ Product เก็บ "P001 - น้ำมันพืช" แยกที่ " - " ได้คอลัมน์ Code = P001 และ Name = น้ำมันพืช

= Table.SplitColumn(Source, "Product",
    Splitter.SplitTextByDelimiter(" - ", QuoteStyle.Csv),
    {"Code", "Name"})