“มีวิธีเชื่อมข้อความใน Excel ที่สะดวกกว่า & ไหมคะ?” ลูกศิษย์คนหนึ่งถาม
ถ้าเป็นก่อนหน้านี้ ผมคงตอบว่า ไม่มี
เพราะการใช้ & (Ampersand) แม้เป็นวิธีทื่อๆ แต่สะดวกกว่า CONCATENATE
แต่ถ้าถามตอนนี้ ผมจะตอบว่า TEXTJOIN ครับ ^__^
ฟังก์ชัน TEXTJOIN ดีกว่า & ยังไงน่ะหรือครับ?
ขออธิบายด้วยตัวอย่างนี้ครับ
สมมติเราต้องการเชื่อม Title, Name, Middle Name และ Surname เข้าด้วยกัน
ถ้าเป็นก่อนหน้านี้ ก็ใช้ฟังก์ชัน CONCATENATE เขียนสูตรว่า
=CONCATENATE(A2,B2,C2,D2)
ได้ผลลัพธ์เป็น
MrLionelMessi
แต่การเขียนสูตรแบบนี้ ไม่ค่อยเวิร์คในทางปฏิบัติเท่าไร
อ้าว!
เพราะผลลัพธ์ไม่ต่างจากเขียนสูตรด้วย
=A2&B2&C2&D2 เลย
A2&B2&C2&D2 แม้ดูโท่งๆ และเข้าใจง่ายกว่า CONCATENATE
(บางคนอาจไม่รู้จักฟังก์ชัน CONCATENATE)
มีอะไรที่ & สู้ CONCATENATE ไม่ได้ไหม?
ผลลัพธ์ที่ได้จาก CONCATENATE เหมือน & ทุกประการ
แต่ & ดูจะ “มีภาษี” ดีกว่า CONCATENATE เล็กน้อย
“มีภาษี” หมายถึงอะไร?
ที่บอกว่า & ดีกว่า
เพราะ CONCATENATE มีข้อจำกัดว่าเชื่อมข้อความได้ 255 ข้อความ
ในขณะที่ & ไม่มีข้อจำกัดนั้น
ข้อจำกัดนี้ อาจดูไกลตัว เพราะน้อยคนที่ใช้งาน CONCATENATE เชื่อม 256 ข้อความเข้าด้วยกัน
(สุดท้ายแล้วทั้งสองแบบ ก็ติดข้อจำกัดเรื่อง 1 เซลล์ห้ามมีตัวอักษรเกิน 32,767 อักขระอยู่ดี)
แต่…
ไม่ว่าจะเป็น CONCATENATE(A2,B2,C2,D2) หรือ A2&B2&C2&D2 ก็ไม่สะดวกกับชีวิตจริงเลย
เพราะตอนเขียนสูตร ต้องนั่งจิ้มทีละเซลล์ๆ
A2, B2, C2, D2
ไม่สามารถเขียนเป็นช่วงเซลล์ หรือเขียนเป็น A2:D2 ได้
สร้างความโทมนัสอย่างยิ่งยวด T_T
แต่…
ปัญหานี้หมดไปแล้ว !
เมื่อ Excel 2016 สร้างฟังก์ชันใหม่ชื่อ
CONCAT
(คนละฟังก์ชันกับ CONCATENATE นะ)
จุดเด่นของ CONCAT คือ อ้างอิงข้อความเป็นช่วงได้ หรือเขียนเป็น
=CONCAT(A2:D2) ได้ !!
ได้ผลล้พธ์เหมือน =CONCATENATE(A2,B2,C2,D2) ทุกประการ
แต่สะดวกกว่า 80 เท่า !
ไม่ต้องสนใจด้วยว่าช่วงข้อมูลมีค่าว่างหรือเปล่า เพราะสูตรไม่สนค่าว่าง
สร้างความโสมนัสแก่ผู้ใช้งานยิ่งนัก ^__^
พรู๊ม พรู๊ม พรู๊ม !!
(เสียงจุดพลุไฟ ^^)
จริงๆแล้ว CONCAT คือฟังก์ชันที่เกิดมาทดแทน CONCATENATE
เพราะไม่มีความสามารถใดที่ CONCATENATE ทำได้ แต่ CONCAT ทำไม่ได้
ในอนาคต CONCATENATE อาจถูกลบไปจาก MS Excel
ทำไมถึงคิดอย่างนั้นน่ะหรือครับ?
เพราะถ้าพิมพ์ =CONC ลงไปในเซลล์ใดๆ (Excel 2016) ไอคอนของ CONCATENATE จะมีเครื่องหมายเตือน (Warning) ด้านล่างขวา
เครื่องหมายเตือนนี้แปลว่า ฟังก์ชันนี้อาจใช้ไม่ได้ในอนาคต
แต่ตอนนี้ยังใช้ได้อยู่ เพื่อให้ผู้ใช้ปรับตัว และรองรับสูตรที่เคยเขียนด้วยฟังก์ชันนั้น
(ฟังก์ชันที่มีไอคอนเตือนแบบนี้มีหลายตัว เช่น RANK, PERCENTILE, QUARTILE)
แต่… (อีกแล้ว)
ปัญหาของ CONCAT คือ ไม่สามารถใส่ตัวเชื่อม (delimiter) เพื่อคั่นระหว่างข้อความได้
จากเคสเดิม ถ้าต้องการให้ผลลัพธ์เป็น
Mr Lionel Messi
(ใช้ space คั่นระหว่างข้อความ)
CONCAT ทำไม่ได้ !
จากที่เคยดีใจ ถึงกับทรุด…
(นึกภาพคนทรุดตัว สองเข่าติดพื้น คอตก มีไฟสปอตไลต์ส่องจากด้านบน ^^)
ถ้าต้องการผลลัพธ์ Mr Lionel Messi ต้องเขียนสูตรอย่างไร?
อาจเขียนเป็น
=A2&” “&B2&” “&D2
(เคสนี้ C2 เป็นค่าว่าง)
แต่วิธีนี้ไม่ค่อยสะดวก สูตรยาว
แถมต้องนั่งเล็งว่า บางเซลล์เป็นค่าว่างหรือเปล่า
แต่…. (สุดท้ายแล้ว)
ปัญหานี้จะหมดไป เมื่อใช้ Excel 2016 และใช้งานฟังก์ชันใหม่ที่ชื่อว่า
TEXTJOIN
จากเคสนี้ ถ้าเราเขียนสูตรเป็น
=TEXTJOIN(” “,TRUE,A2:D2)
จะได้คำตอบ
Mr Lionel Messi
โชะเด๊ะ !!
ตู้ม ตู้ม ตู้ม !!
ปะรัม ปะรัม ปะรัม !!
จะเห็นได้ว่า การเขียนสูตรด้วย TEXTJOIN เจ๋งกว่า & เยอะมาก
มารู้จัก TEXTJOIN ให้มากขึ้นกันครับ ^__^
โครงสร้างของ TEXTJOIN คือ
=TEXTJOIN( delimiter, ignore_empty, text1, [text2],…)
delimiter คือ อักขระที่ใช้คั่นระหว่างข้อความ (ถ้าต้องการให้มี) เช่น “,” (comma) “/” (slash) ” ” (space)
(ถ้าต้องการให้ข้อความติดกัน ไม่ต้องระบุ delimiter หรืออาจใส่เป็น “” ก็ได้)
ignore_empty ใส่ได้ 2 แบบ คือ TRUE, FALSE
TRUE แปลว่า ถ้าข้อความที่เลือกมีค่าว่าง ให้ข้ามค่าว่างนั้นไปเลย
FALSE แปลว่า ถ้าข้อความที่เลือกมีค่าว่าง ให้แสดงค่าว่างนั้นเป็นช่องว่าง
text1, [text2],… คือ เซลล์ที่ต้องการเชื่อมเข้าด้วยกัน
ความเจ๋งของ text1, [text2] คือ สามารถใส่เป็นช่วงเซลล์ได้
เช่น A2:D2
แปลว่า ตอนเขียนสูตร เราลากช่วงข้อมูลได้โดยตรงเลย ไม่ต้องเลือกทีละเซลล์แล้วคั่นด้วยเครื่องหมาย , (comma)
ซึ่งความสามารถนี้ CONCATENATE ทำไม่ได้ !
.
จากที่เล่ามาทั้งหมด จะเห็นได้ว่า
- ไม่มีความสามารถใดที่ CONCATENATE ทำได้ แต่ & ทำไม่ได้
- ทั้ง CONCATENATE และ & ไม่สามารถเขียนสูตรแบบช่วง (A2:D2) ได้
- CONCAT คือฟังก์ชันที่เกิดมาทดแทน CONCATENATE ความเจ๋งคือเขียนสูตรแบบช่วง (A2:D2) ได้
- TEXTJOIN เจ๋งกว่า CONCAT ตรงใส่อักขระคั่นระหว่างข้อความ (delimiter) ได้
หรือพูดง่ายๆคือ TEXTJOIN น็อค CONCATENATE แบบหมดจด
งั้น CONCATENATE ก็ไม่มีประโยชน์แล้วสิ?
CONCATENATE ยังคงมีประโยชน์ครับ
เหตุผลแรกคือ TEXTJOIN และ CONCAT ใช้ได้เฉพาะเวอร์ชัน 2016 เท่านั้น แต่ CONCATENATE ใช้ได้ตั้งแต่เวอร์ชันดึกดำบรรพ์
บางสถานการณ์เราอาจต้องใช้เวอร์ชันเก่า จึงควรรู้จักฟังก์ชันให้หลากหลาย
อีกเหตุผลคือ ทุกฟังก์ชันต่างมี “ความงาม” ของตัวเอง
แม้ & ทำได้ทุกอย่างที่ CONCATENATE ทำ
แต่ลองนึกภาพการเขียนสูตร
=A2&B2&C2&D2&E2&F2&G2&H2&I2
กับ
=CONCATENATE(A2, B2, C2, D2, E2, F2, G2, H2, I2)
คิดเหมือนผมไหมครับว่าสูตรของ CONCATENATE ดูงดงามกว่า
แม้ TEXTJOIN ทำได้ทุกอย่างที่ CONCAT ทำ
แต่ TEXTJOIN เป็นฟังก์ชันที่ต้องการ 3 องค์ประกอบ (Argument) ในขณะที่ CONCAT ต้องการเพียงองค์ประกอบเดียว
CONCAT มีความงามที่ TEXTJOIN ไม่มี
และนั่นอาจเป็นเหตุผลว่าทำไม Microsoft ถึงสร้างทั้ง CONCAT และ TEXTJOIN ใน Excel 2016
ทุกฟังก์ชันต่างมีความงามของตัวเอง เพียงแต่เรามองเห็นความงามนั้นหรือไม่
สูตร Excel ไม่ได้มีแค่ ตรรกะ แต่ยังมี ศิลปะ แอบซ่อนอยู่
ศิลปะในตรรกะ และ ตรรกะในศิลปะ
ทั้งยังมีมนต์ขลัง สะกดผู้คนให้ต้องมนต์
ผมว่า… ผมต้องมนต์สะกดเข้าซะแล้ว
แล้วคุณล่ะครับ ต้องมนต์สะกดเหมือนผมไหม ^__^
.
สำหรับคนที่สนใจไฟล์ตัวอย่างของบทความนี้ ดาวน์โหลดจากลิงค์ด้านล่างได้เลยครับ ^__^
TEXTJOIN_CONCAT_CONCATENATE_171123
.
หากคุณชอบบทความแนวนี้ สามารถอัพเดตบทความใหม่ๆโดยคลิก Like เฟสบุ๊คแฟนเพจ วิศวกรรีพอร์ต หรือคลิก ที่นี่
อย่าลืมแชร์ให้เพื่อนอ่านเพื่อเป็นกำลังใจให้คนเขียนด้วยนะครับ ^__^
.
อ้างอิงข้อมูลจาก
CONCATENATE in Excel: combine text strings, cells and columns
https://support.office.com/en-us/article/CONCATENATE-function-8f8ae884-2ca8-4f7a-b093-75d702bea31d
https://exceljet.net/excel-functions/excel-textjoin-function
ตอนนี้ใช้ excel 2013 อยู่ค่ะถ้าอยากใช้ฟังก์ชันนี้จะต้องเขียนขึ้นเองใช้ไหมคะ
ใช่ครับ ต้องใช้ VBA เขียนฟังก์ชันขึ้นใช้เองครับ
ถ้าต้องการให้ Join พร้อมกับขึ้นบรรทัดใหม่ หรือ ใส่สี เข้าไป ทำได้มั้ยครับ
เหตุผลในการขึ้นบรรทัดใหม่คืออะไรครับ
ผมมีการสรุปข้อมูลสินค้า ให้อยู่ใน Cell เดี่ยว โดยการใช้ Alt+Enter เพื่อขึ้นบรรทัดใหม่อะครับ ทีนี้ อยากจะทำให้ข้อมูลนั้น มีความเป็น Dynamic เช่น ไปดึงข้อมูลจาก Cell อื่น แล้วข้อมูลตรงนี้ก็จะเปลี่ยนตามประมาณนี้ครับ
ไม่ค่อยแนะนำให้ใช้ Alt+Enter เพื่อปรับค่าการแสดงผลเช่นนี้ เพราะจะเกิดปัญหาใหม่ที่ใหญ่กว่าตามมาครับ
ถ้าจะใช้ Alt+Enter โดยส่วนตัวแนะนำให้ใช้กับการเขียนสูตร เพื่อให้สูตรอ่านง่ายขึ้นครับ