Thep Excel

Text.Cleanลบตัวอักษรควบคุมออกจากข้อความ

Text.Clean ลบตัวอักษรควบคุมที่ไม่สามารถพิมพ์ได้ (Control Characters) เช่น Line Feed, Tab, Carriage Return ออกจากข้อความ โดยเก็บเฉพาะตัวอักษรที่มองเห็นได้และพิมพ์ได้

fx
=Text.Clean(text) as nullable text

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

อัปเดต 3 December 2025

Syntax & Arguments

อาร์กิวเมนต์ ชนิด คำอธิบาย
text nullable text ข้อความที่ต้องการลบตัวอักษรควบคุมออก ยอมรับค่า null

Additional Notes

Text.Clean ใช้สำหรับทำความสะอาดข้อความโดยลบตัวอักษรควบคุม (Control Characters) ทั้งหมดออก ได้แก่ Line Feed (#(lf)), Carriage Return (#(cr)), Tab (#(tab)) และอื่นๆ

ที่เจ๋งคือฟังก์ชันนี้ทำงานได้ดีมากตอนคุณนำเข้าข้อมูลจากระบบเก่าหรือไฟล์ที่มีการจัดรูปแบบแปลกๆ ซึ่งมักจะมี Control Character ซ่อนอยู่เบื้องหลัง

ส่วนตัวผมใช้ Text.Clean บ่อยมากตอนต้องทำความสะอาดข้อมูลจาก CSV หรือ TXT ที่นำมาจากระบบต่างชาติครับ เพราะระบบนั้นมักใช้ Encoding ต่างๆ แล้วปล่อยให้ Control Character อยู่ยุ่งๆ 😎

Examples

ลบ Line Feed (ตัวอักษรขึ้นบรรทัดใหม่)Text.Clean("Hello#(lf)World")

Text.Clean ลบตัวอักษร Line Feed (#(lf)) ออก โดยเก็บเฉพาะข้อความจริง Hello กับ World และติดกันไปเลยโดยไม่มีช่องว่าง

fx
= Text.Clean("Hello#(lf)World")

ผลลัพธ์"HelloWorld"
ลบหลาย Control Characters พร้อมกันlet DirtyText = "Data#(tab)Value#(cr)#(lf)Next", Cleaned = Text.Clean(DirtyText) in Cleaned

ข้อความ DirtyText มี Tab (#(tab)), Carriage Return (#(cr)), และ Line Feed (#(lf)) ผสมกันอยู่ Text.Clean ลบทั้งหมดออกให้เหลือแค่ "DataValueNext" อย่างเรียบร้อย

fx
= let
DirtyText = "Data#(tab)Value#(cr)#(lf)Next",
Cleaned = Text.Clean(DirtyText)
in
Cleaned

ผลลัพธ์"DataValueNext"
ใช้ใน Table.AddColumn เพื่อทำความสะอาดคอลัมน์ทั้งหมดlet Source = Table.FromRows( {{"Hello#(lf)World", "Test#(tab)Data"}, {"ABC#(cr)D", "XY#(lf)Z"}}, {"Column1", "Column2"} ), Cleaned = Table.TransformColumns( Sou…

ใช้ Table.TransformColumns เพื่อใช้ Text.Clean กับคอลัมน์ทั้งหมด แต่ละแถวจะลบ Control Character ออกอย่างอัตโนมัติ ฉันชอบวิธีนี้มากเพราะสะดวกในการทำความสะอาดข้อมูลจำนวนมาก 😎

fx
= let
Source = Table.FromRows(
{{"Hello#(lf)World", "Test#(tab)Data"}, {"ABC#(cr)D", "XY#(lf)Z"}},
{"Column1", "Column2"}
),
Cleaned = Table.TransformColumns(
Source,
{{"Column1", Text.Clean}, {"Column2", Text.Clean}}
)
in
Cleaned

ผลลัพธ์Column1: ["HelloWorld", "ABCD"], Column2: ["TestData", "XYZ"]
ลบ Control Character แล้ว Trim ช่องว่างด้านหน้าหลังlet RawData = " Text with#(tab)Spaces ", Step1 = Text.Clean(RawData), Step2 = Text.Trim(Step1) in Step2

ขั้นแรก Text.Clean ลบ Control Character (Tab) ออก ได้ " Text withSpaces " จากนั้น Text.Trim ลบช่องว่างด้านหน้าหลัง ได้ผลลัพธ์สุดท้าย "Text withSpaces" ส่วนตัวผมมักใช้ชุดนี้ร่วมกันครับ เพราะข้อมูลจริงมักมีทั้ง Control Character และช่องว่าง

fx
= let
RawData = " Text with#(tab)Spaces ",
Step1 = Text.Clean(RawData),
Step2 = Text.Trim(Step1)
in
Step2

ผลลัพธ์"Text withSpaces"

FAQs

Text.Clean กับ Text.Trim ต่างกันยังไง?+

Text.Clean ลบตัวอักษรควบคุม (Control Characters) เช่น Line Feed, Tab ส่วน Text.Trim ลบเฉพาะช่องว่าง (Space) ด้านหน้าและหลังเท่านั้น คนมักสับสนเพราะชื่อดูคล้ายๆ กัน ส่วนตัวผมแนะนำให้ใช้ทั้งคู่ – ลบ Control Character ด้วย Text.Clean แล้วลบ Space ด้วย Text.Trim นะครับ

Text.Clean ลบ Space ธรรมดาได้ไหม?+

ไม่ได้ครับ Text.Clean เลือกลบได้แค่ Control Character ที่มี Unicode code point น้อยกว่า 32 (ยกเว้น Space ที่เป็น 32) ถ้าต้องการลบ Space ธรรมดา ต้องใช้ Text.Replace หรือ Text.Trim แทน

ถ้า input เป็น null จะเกิดอะไรขึ้น?+

จะคืนค่า null กลับมา ไม่มี Error ปรากฏนะครับ ซึ่งดีมากตอนทำงานกับข้อมูลที่อาจมี null cells ผมมักใช้ Text.Clean โดยไม่ต้องกังวลว่า null จะทำให้เกิด Error

Text.Clean ทำงานกับ Unicode ได้ไหม?+

ได้นะครับ Text.Clean ลบ Control Character จาก Unicode ทั้งหมด ไม่เฉพาะ ASCII เท่านั้น แต่เกือบทั้งหมดที่ใช้ข่าว ใช้บ่อยๆ จะเป็น ASCII Control Character อยู่แล้ว

Resources & Related

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

ฟังก์ชันนี้Text.CleanText functions
Text functions (4)
Text.Proper

แปลงอักษรตัวแรกของทุกคำเป็นตัวพิมพ์ใหญ่ (Title Case) และส่วนที่เหลือเป็นตัวพิมพ์เล็ก

Text.Remove

Text.Remove จะคืนค่าข้อความใหม่ที่ตัดตัวอักษรที่อยู่ใน removeChars ออกไปทั้งหมด เป็นฟังก์ชันตรงข้ามกับ Text.Select

Text.Replace

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

Text.Trim

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

Number functions (1)
Number.FromText

Number.FromText แปลงค่าข้อความที่เป็นตัวแทนของตัวเลขเป็นค่าตัวเลขจริง รองรับการจัดรูปแบบตัวเลขต่างๆ รวมถึงสัญกรณ์วิทยาศาสตร์

Table functions (1)
Table.TransformColumns

Table.TransformColumns ใช้สำหรับแปลงข้อมูลในคอลัมน์โดยใช้ฟังก์ชันที่กำหนดไว้ แต่ละคอลัมน์สามารถมีการแปลงแตกต่างกันได้ รองรับการเปลี่ยนแปลงประเภทข้อมูลในเวลาเดียวกัน

Comments

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