ฟังก์ชันข้อความ — LEFT/RIGHT/MID, TRIM, TEXTJOIN, TEXT
1. เมื่อข้อมูลข้อความไม่ยอมอยู่ในรูปที่เราอยากได้
บทความที่แล้วเราคุยเรื่อง SUMIFS และเพื่อนๆ ที่ช่วยสรุปตัวเลข คราวนี้ผมจะพาคุณมาลุยอีกฝั่งที่คนทำงานเจอทุกวันครับ นั่นคือ ข้อมูลที่เป็นตัวอักษร
ลองนึกภาพงานจริงดูนะครับ รหัสสินค้าที่ต้องแยกปีออกมา ชื่อลูกค้าที่ก๊อปมาจากระบบเก่าแล้วมีช่องว่างเกินเต็มไปหมด หรือรายงานที่อยากให้ตัวเลขแสดงเป็น 12,500 บาท แทนที่จะเป็น 12500 เฉยๆ งานพวกนี้แก้ทีละเซลล์ไม่ไหวแน่นอน
ประเด็นคือ Excel ไม่ได้เก็บแค่ตัวเลข ข้อมูลส่วนใหญ่ในองค์กรเป็นข้อความ — รหัส ชื่อ ที่อยู่ อีเมล หมายเลขโทรศัพท์ ถ้าเราไม่มีเครื่องมือจัดการข้อความที่มือโปร เราจะต้องนั่งก๊อป-วาง-แก้ด้วยมือจนมือเจ็บ ข้อผิดพลาดก็หลุดง่าย
ชุดเครื่องมือที่เราจะใช้วันนี้มีดังนี้ครับ
- LEFT / RIGHT / MID ตัดตัวอักษรจากซ้าย ขวา และตรงกลาง
- LEN วัดความยาวข้อความ
- TRIM / SUBSTITUTE ล้างช่องว่างและแทนตัวคั่น
- TEXTJOIN / CONCAT รวมข้อความหลายชิ้นเข้าด้วยกัน
- TEXT จัดรูปแบบตัวเลขและวันที่ให้อ่านง่าย
เปิดไฟล์ตัวอย่าง แล้วทำตามไปด้วยกันนะครับ ผมเตรียมไว้ 3 ชีท ไล่จากการตัดข้อความ ไปการรวมข้อความ และปิดท้ายด้วยการจัดรูปแบบ
💡 เคล็ดลับ: ผลลัพธ์ของฟังก์ชันกลุ่มนี้เป็น ข้อความ เสมอ ต่อให้หน้าตาเหมือนตัวเลขก็ตาม ถ้าจะเอาไปบวกลบต่อ ให้ครอบด้วยฟังก์ชัน VALUE หรือนำมาคูณด้วย 1 ก่อนเสมอครับ
📌 ข้อควรจำ: ฟังก์ชันข้อความเหล่านี้ไม่สนใจภาษา — ไทย อังกฤษ จีน ญี่ปุ่น ตัดและรวมได้หมด เพราะ Excel มองแค่ “ตัวอักษร” ไม่ได้มอง “ความหมาย”
2. LEFT / RIGHT / MID — ตัดตัวอักษรตามตำแหน่ง
เริ่มที่ชีทแรก LEFT RIGHT MID ครับ ผมจำลองรหัสสินค้าแบบที่ร้านค้าไทยใช้กันเยอะ คือ SKU-2026-0156 ซึ่งแบ่งเป็นสามส่วน ได้แก่ คำนำหน้า SKU, ปี ค.ศ. 4 หลัก และเลขลำดับ 4 หลัก
ดึงคำนำหน้าด้วย LEFT นับจากซ้าย
=LEFT(A5,3)
ได้ SKU ครับ ส่วนเลขลำดับท้ายสุดใช้ RIGHT นับจากขวา
=RIGHT(A5,4)
ได้ 0156 และถ้าอยากได้ปีที่อยู่ตรงกลาง ต้องใช้ MID ที่ระบุทั้งจุดเริ่มและจำนวนตัวอักษร
=MID(A5,5,4)
เริ่มนับที่ตำแหน่งที่ 5 (ตัวถัดจากขีดแรก) แล้วตัดไป 4 ตัว ได้ 2026 พอดี ส่วน LEN เอาไว้เช็กความยาวว่ารหัสครบหรือเปล่า
=LEN(A5)
ผลลัพธ์ทั้งแถวเป็นแบบนี้ครับ
| รหัสสินค้า | LEFT 3 ตัว | MID ปี | RIGHT 4 ตัว | LEN |
|---|---|---|---|---|
| SKU-2026-0156 | SKU | 2026 | 0156 | 13 |
| SKU-2026-0157 | SKU | 2026 | 0157 | 13 |
| SKU-2026-0158 | SKU | 2026 | 0158 | 13 |
| SKU-2027-0001 | SKU | 2027 | 0001 | 13 |
สังเกตแถวสุดท้ายที่ปีเปลี่ยนเป็น 2027 สูตรเดิมยังทำงานถูกต้อง เพราะโครงสร้างรหัสมีความยาวคงที่
📌 ข้อควรจำ: MID เริ่มนับตำแหน่งแรกเป็น 1 ไม่ใช่ 0 ครับ ถ้านับพลาดไปหนึ่งช่อง ผลลัพธ์จะเพี้ยนทั้งคอลัมน์เลย ลองใช้ LEN ช่วยไล่ตำแหน่งก่อนเขียนสูตรจริง
3. LEN — วัดความยาวเพื่อเช็กก่อนตัด
หลายคนมองข้าม LEN ไป แต่ว่าผมบอกเลยว่ามันคือตัวช่วยหาตำแหน่งที่ซื่อสัตย์ที่สุด ตอนเราใช้ MID เราต้องบอกว่าเริ่มตัวที่เท่าไหร่ ถ้าไม่รู้ว่าข้อความยาวแค่ไหน ก็เดาไม่ถูก
ในชีทเดียวกัน ผมใช้ LEN(A5) เช็กว่าแต่ละรหัสยาว 13 ตัวพอดี ถ้ารหัสไหนสั้นกว่าหรือยาวกว่า แปลว่าระบบต้นทางส่งมาไม่ครบ เราจะได้ไล่แก้ตั้งแต่ต้นทาง ไม่ต้องรอให้สูตรตัดผิดแล้วค่อยมาตามหาว่าพังตรงไหน
💡 เคล็ดลับ: ถ้ารหัสมีความยาวไม่คงที่ LEN ยังช่วยได้อีกทาง คือเอาไปจับคู่กับ MID แบบยาวเกินไปหน่อย Excel จะหยุดเองเมื่อข้อความหมด เราไม่ต้องคำนวณความยาวเป๊ะเสมอไป
4. TRIM และ SUBSTITUTE — ล้างข้อมูลให้สะอาด
เลื่อนลงมาส่วนกลางของชีทเดิมครับ ตรงนี้ผมใส่ชื่อพนักงานที่ก๊อปมาแบบมีช่องว่างเกินทั้งหน้าและหลัง เช่น สมชาย ใจดี ซึ่งเป็นอาการคลาสสิกของข้อมูลที่ดึงมาจากระบบอื่น
TRIM จัดการให้เรียบร้อยในสูตรเดียว
=TRIM(A13)
มันจะลบช่องว่างหน้า ลบช่องว่างท้าย และบีบช่องว่างระหว่างคำที่ติดกันหลายช่องให้เหลือช่องเดียว ส่วน SUBSTITUTE ใช้แทนที่ข้อความบางส่วน ในตัวอย่างผมแทนช่องว่างด้วยขีด
=SUBSTITUTE(TRIM(A13)," ","-")
ผมจงใจครอบ TRIM ไว้ข้างในก่อน เพราะถ้าแทนที่ทั้งที่ยังมีช่องว่างเกิน จะได้ขีดรัวๆ เต็มไปหมดครับ ลองเทียบความยาวก่อนและหลังดู
| ข้อความดิบ | หลัง TRIM | หลัง SUBSTITUTE | LEN ก่อน | LEN หลัง |
|---|---|---|---|---|
| สมชาย ใจดี | สมชาย ใจดี | สมชาย-ใจดี | 16 | 10 |
| มานี มีสุข | มานี มีสุข | มานี-มีสุข | 13 | 10 |
| วิภา แก้วใส | วิภา แก้วใส | วิภา-แก้วใส | 15 | 11 |
ตัวเลข LEN ที่หายไปคือช่องว่างที่มองไม่เห็นด้วยตาเปล่า ซึ่งเป็นสาเหตุอันดับหนึ่งที่ทำให้ VLOOKUP หรือ SUMIFS หาค่าไม่เจอครับ
⚠️ ข้อควรระวัง: ถ้า TRIM แล้วความยาวยังไม่ลด แปลว่าตัวที่ปนมาอาจไม่ใช่ช่องว่างปกติ แต่เป็น non-breaking space จากการก๊อปหน้าเว็บ ให้ล้างด้วย
=TRIM(SUBSTITUTE(A13,CHAR(160)," "))แทนครับ
5. LEFT ผสม FIND — ตัดข้อความที่ความยาวไม่คงที่
โจทย์จริงไม่ได้สวยเหมือนรหัส SKU เสมอไป ส่วนล่างของชีทแรกผมใส่รหัสแบบ BKK-ฝ่ายขาย ที่ความยาวแต่ละแถวไม่เท่ากัน วิธีคือให้ FIND ไปหาตำแหน่งของตัวคั่นก่อน แล้วค่อยตัด
=LEFT(A20,FIND("-",A20)-1)
FIND คืนตำแหน่งของขีดออกมา เราลบ 1 เพื่อไม่ให้ขีดติดมาด้วย ได้ BKK ส่วนฝั่งขวาใช้ MID ต่อจากขีด
=MID(A20,FIND("-",A20)+1,LEN(A20))
ได้ ฝ่ายขาย ครับ เคล็ดตรงนี้คือใส่ LEN เป็นจำนวนตัวอักษร เพราะยาวเกินก็ไม่พัง Excel จะหยุดเองเมื่อข้อความหมด
📌 ข้อควรจำ: FIND จะแจ้ง error ทันที ถ้าหาตัวคั่นไม่เจอ ฉะนั้นข้อมูลที่ปนมาอาจมีบางแถวไม่มีขีดเลย ให้ใช้ IFERROR ครอบไว้ เพื่อไม่ให้ทั้งคอลัมน์พังจากแค่หนึ่งแถว
6. TEXTJOIN และ CONCAT — รวมข้อความในสูตรเดียว
ไปที่ชีท TEXTJOIN CONCAT ครับ ข้อมูลเป็นทะเบียนพนักงาน 5 คน แยกคอลัมน์ชื่อ นามสกุล และแผนก โดยผมจงใจให้แถวสุดท้าย (ก้อง) ไม่มีนามสกุล เพื่อให้เห็นความต่างชัดๆ
คอลัมน์ D ใช้ TEXTJOIN ประกอบชื่อเต็ม
=TEXTJOIN(" ",TRUE,A5,B5)
พารามิเตอร์แรกคือตัวคั่น พารามิเตอร์ที่สองคือ ignore_empty ถ้าใส่ TRUE มันจะข้ามเซลล์ว่างให้เลย แถวของก้องจึงได้ ก้อง เฉยๆ ไม่มีช่องว่างห้อยท้าย ต่างจากการเขียน =A9&" "&B9 ที่จะได้ช่องว่างติดมาด้วย
จุดแข็งจริงๆ ของ TEXTJOIN คือรับทั้งช่วงข้อมูลได้เลย
=TEXTJOIN(", ",TRUE,D5:D9)
ได้รายชื่อทั้งหมดต่อกันเป็นบรรทัดเดียวคั่นด้วยจุลภาค เอาไปวางในอีเมลหรือหัวรายงานได้ทันที ส่วน CONCAT เหมาะกับการต่อแบบไม่มีตัวคั่น
=CONCAT(A5,B5)
ได้ สมชายใจดี ติดกันเลย เหมาะกับการประกอบรหัสมากกว่าประกอบชื่อคน
ที่เด็ดกว่านั้นคือจับ TEXTJOIN คู่กับ IF เพื่อรวมเฉพาะแถวที่ตรงเงื่อนไข
=TEXTJOIN(", ",TRUE,IF(C5:C9="ขาย",D5:D9,""))
ได้ สมชาย ใจดี, อนุชา ศรีสุข คือเฉพาะคนแผนกขาย เพราะแถวที่ไม่ตรงเงื่อนไขจะกลายเป็นข้อความว่าง แล้ว ignore_empty ก็เก็บกวาดให้เอง
💡 เคล็ดลับ: ถ้าคุณใช้ Microsoft 365 กด Enter ธรรมดาสูตรนี้ทำงานได้เลย แต่ถ้าเป็น Excel รุ่นเก่าต้องกด Ctrl + Shift + Enter เพื่อยืนยันเป็นสูตรอาร์เรย์ครับ
7. เทียบให้ชัด — เครื่องหมาย & กับ TEXTJOIN
หลายคนคุ้นเคยกับการต่อข้อความด้วยเครื่องหมาย & อยู่แล้ว เช่น
=A5&" "&B5
วิธีนี้เร็วและเข้าใจง่าย แต่ข้อเสียคือเซลล์ไหนว่าง มันก็ยังเติมขีดหรือช่องว่างตามที่เราเขียนไว้ ทำให้ผลลัพธ์มีช่องว่างหลุดๆ หลุดๆ ส่วน TEXTJOIN มีสวิตช์ ignore_empty ให้ข้ามเซลล์ว่างได้ และที่สำคัญคือรับช่วงได้ทั้งคอลัมน์ ไม่ต้องต่อทีละตัว
ผมวางสองตัวไว้ข้างกันในชีทเดียวให้คุณลองเปรียบเทียบเอง สรุปสั้นๆ คือ ต่อสองสามชิ้นใช้ & ก็พอ แต่พอต้องรวมทั้งช่วงหรือมีค่าว่างปน ให้หยิบ TEXTJOIN ดีกว่าครับ
8. TEXT — แต่งตัวเลขและวันที่ให้อ่านง่าย
มาที่ชีทสุดท้าย TEXT ฟอร์แมต ครับ ฟังก์ชัน TEXT ทำหน้าที่เหมือนช่างแต่งหน้าให้ข้อมูล โครงสร้างง่ายมาก
=TEXT(ค่าที่ต้องการ, "รหัสรูปแบบ")
ในชีทผมใส่ยอดขายสินค้า 4 รายการ พร้อมวันที่ขายจริงตั้งแต่ 3 มกราคม 2026 ถึง 21 เมษายน 2026 และอัตราเติบโต ลองดูสูตรที่ผมเตรียมไว้ในตารางสรุป
| สิ่งที่ต้องการ | สูตร | ผลลัพธ์ |
|---|---|---|
| ราคาพร้อมคอมมา | =TEXT(B5,”#,##0″)&” บาท” | 12,500 บาท |
| ราคาทศนิยม 2 ตำแหน่ง | =TEXT(B5,”#,##0.00″)&” บาท” | 12,500.00 บาท |
| วันที่มาตรฐาน | =TEXT(C5,”dd/mm/yyyy”) | 03/01/2026 |
| เดือนย่อและปี | =TEXT(C5,”mmm yyyy”) | ม.ค. 2026 |
| ชื่อวัน | =TEXT(C5,”dddd”) | วันเสาร์ |
| อัตราเติบโต | =TEXT(D5,”0.0%”) | 18.5% |
แถวสุดท้ายของตารางสรุปในไฟล์คือของโปรดผมเลยครับ เอา TEXT ไปประกอบเป็นประโยครายงานสำเร็จรูป
="ขาย "&A5&" วันที่ "&TEXT(C5,"dd/mm/yyyy")&" ยอด "&TEXT(B5,"#,##0")&" บาท"
ได้ประโยคว่า ขาย เสื้อยืด วันที่ 03/01/2026 ยอด 12,500 บาท ซึ่งอัปเดตตามข้อมูลอัตโนมัติ ใช้ทำสรุปรายวันส่งหัวหน้าได้สบาย
⚠️ ข้อควรระวัง: ถ้าไม่ครอบวันที่ด้วย TEXT แล้วเอาไปต่อด้วยเครื่องหมาย & ตรงๆ คุณจะได้เลข serial เช่น 46025 โผล่มาแทนวันที่ครับ เพราะเบื้องหลัง Excel เก็บวันที่เป็นตัวเลขเสมอ
9. รหัสรูปแบบที่ใช้บ่อย — โน้ตดูดอง
คุณไม่ต้องจดจำรหัสทั้งหมด แต่ควรจดตัวที่ใช้บ่อยไว้หลายครั้งจะจำเองครับ ผมสรุปโน้ตดูดองไว้ให้ที่นี่
| รูปแบบ | รหัส | ตัวอย่างผลลัพธ์ |
|---|---|---|
| ตัวเลขพร้อมคอมมา | #,##0 | 12,500 |
| ตัวเลขทศนิยม 2 ตำแหน่ง | #,##0.00 | 12,500.00 |
| วันที่ dd/mm/yyyy | dd/mm/yyyy | 03/01/2026 |
| วันที่เดือนย่อ | mmm yyyy | ม.ค. 2026 |
| ชื่อวัน | dddd | วันเสาร์ |
| เปอร์เซ็นต์ 1 ตำแหน่ง | 0.0% | 18.5% |
| เปอร์เซ็นต์จำนวนเต็ม | 0% | 19% |
| วันที่เต็มแบบไทย | dddd d mmmm yyyy | วันเสาร์ 3 มกราคม 2026 |
| เงินบาทถ้วน | #,##0″ บาท” | 12,500 บาท |
| เงินบาทมีสตางค์ | #,##0.00″ บาท” | 12,500.00 บาท |
💡 เคล็ดลับ: ถ้าต้องการรหัสรูปแบบที่ไม่มาตรฐาน เช่น วันที่ไทยปี พ.ศ. ลองใช้ Format Cells > Custom แล้วคัดลอกรหัสมาใส่ใน TEXT ได้เลย
📌 ข้อควรจำ: รหัสรูปแบบคุ้มครองตัวอักษรที่มีความหมายพิเศษ (d, m, y, h, s, #, 0, ., 🙂 ถ้าอยากให้ตัวอักษรเหล่านั้นแสดงเป็นตัวอักษรธรรมดา ให้ครอบด้วยเครื่องหมายคำพูด เช่น
"m"เพื่อให้ได้ตัว m ตรงๆ ไม่ใช่เดือน
10. สถานการณ์งานจริง — ประยุกต์รวมหลายฟังก์ชัน
สถานการณ์ที่ 1: ร้านค้าออนไลน์จัดรหัสสินค้าใหม่
ทีมสินค้ามีรายการเก่ารหัสแบบ PROD-2026-001-A ต้องแยกปี, ลำดับ, และรุ่นแยกคอลัมน์ ใช้ LEFT+MID+RIGHT คู่นี้กับ FIND ตัดทีละส่วน แล้วค่อยเอาไปต่อกับ TEXTJOIN สร้างรหัสใหม่แบบ 2026-001-A ได้ในสูตรเดียวครับ
สถานการณ์ที่ 2: ฝ่ายบุคคลล้างชื่อพนักงานจากระบบเก่า
ข้อมูลมีช่องว่าง non-breaking space ปนอยู่มาก ใช้ TRIM(SUBSTITUTE(A1,CHAR(160)," ")) แล้วค่อย TEXTJOIN รวมชื่อ-นามสกุลให้เรียบร้อย ก่อนนำเข้า HR System ใหม่
สถานการณ์ที่ 3: ฝ่ายขายสรุปรายงานอัตโนมัติ
ทุกวันโหลดข้อมูล Raw มาแล้วใช้ TEXT ประกอบเป็นประโยคพร้อมส่ง Line/Email แทนที่จะนั่งพิมพ์เอง สูตรสุดท้ายในชีท TEXT ฟอร์แมต คือตัวอย่างพร้อมใช้เลยครับ
11. สรุป
มาถึงตรงนี้คุณคงเห็นภาพแล้วว่าเซตฟังก์ชันข้อความนี้ครอบคลุมงานจริงเกือบทุกด้านครับ
- LEFT / RIGHT / MID + FIND ตัดข้อความได้ทั้งความยาวคงที่และไม่คงที่
- LEN เป็นตาข่ายเช็กก่อนตัด กันพลาด
- TRIM / SUBSTITUTE ล้างข้อมูลก๊อปมาจากระบบอื่น
- TEXTJOIN / CONCAT รวมข้อความยืดหยุ่นกว่าเครื่องหมาย &
- TEXT แต่งตัวเลขและวันที่ให้อ่านง่ายและใช้งานต่อได้
จุดสำคัญที่ผมอยากให้จดจำ: ผลลัพธ์ของฟังก์ชันกลุ่มนี้เป็นข้อความเสมอ ถ้าต้องเอาไปคำนวณต่อ ต้องแปลงด้วยฟังก์ชัน VALUE หรือนำมาคูณ 1 ก่อน ไม่งั้นจะได้ error แปลกๆ ที่งงว่าทำไมตัวเลขที่ดูแล้วเป็นตัวเลขกลับบวกไม่ได้
ลองเปิดไฟล์ตัวอย่างครับ แล้วไล่เล่นทั้ง 3 ชีทดูนะครับ เริ่มจากชีท LEFT RIGHT MID ฝึกตัดและล้างข้อมูล แล้วไป TEXTJOIN CONCAT ลองรวมช่วงและใส่เงื่อนไข IF ดู ปิดท้ายที่ TEXT ฟอร์แมต แต่งตัวเลขวันที่และลองประกอบประโยครายงาน
บทความหน้าเราจะไปรู้จัก ฟังก์ชันวันที่และเวลา — DATEDIF, EOMONTH, WORKDAY, NETWORKDAYS เพื่อคำนวณอายุ งวดสิ้นเดือน และวันทำงานแบบมือโปร เจอกันครับ! 😊
📖 อ่านต่อ: ถ้าคุณอยากทบทวน SUMIFS กลับไปอ่านบทความก่อนหน้าได้เลยครับ หรืออ่านบทความอื่นใน “Excel สำหรับทำงาน” ที่สอนจัดการข้อมูลแบบเต็มๆ รวมถึง Flash Fill ที่ช่วยลดงานคีย์ข้อมูลข้อความเยอะมาก