“มีวิธีเชื่อมข้อความใน Excel ที่สะดวกกว่า & ไหมคะ?” ลูกศิษย์คนหนึ่งถาม

ถ้าเป็นก่อนหน้านี้ ผมคงตอบว่า ไม่มี

เพราะการใช้ & (Ampersand) แม้เป็นวิธีทื่อๆ แต่สะดวกกว่า CONCATENATE

แต่ถ้าถามตอนนี้ ผมจะตอบว่า TEXTJOIN ครับ ^__^

ฟังก์ชัน TEXTJOIN ดีกว่า & ยังไงน่ะหรือครับ?

ขออธิบายด้วยตัวอย่างนี้ครับ

JoinTitle_Name_Surname

สมมติเราต้องการเชื่อม 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) ด้านล่างขวา

CONCATENATE_FunctionArgument

เครื่องหมายเตือนนี้แปลว่า ฟังก์ชันนี้อาจใช้ไม่ได้ในอนาคต

แต่ตอนนี้ยังใช้ได้อยู่ เพื่อให้ผู้ใช้ปรับตัว และรองรับสูตรที่เคยเขียนด้วยฟังก์ชันนั้น

(ฟังก์ชันที่มีไอคอนเตือนแบบนี้มีหลายตัว เช่น 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_CONCAT_CONCATENATE

จะเห็นได้ว่า การเขียนสูตรด้วย 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 เฟสบุ๊คแฟนเพจ วิศวกรรีพอร์ต หรือคลิก ที่นี่

อย่าลืมแชร์ให้เพื่อนอ่านเพื่อเป็นกำลังใจให้คนเขียนด้วยนะครับ ^__^

.

อ้างอิงข้อมูลจาก

https://www.ablebits.com/office-addins-blog/2015/07/15/excel-concatenate-strings-cells-columns/

https://support.office.com/en-us/article/CONCATENATE-function-8f8ae884-2ca8-4f7a-b093-75d702bea31d

https://support.office.com/en-us/article/Excel-specifications-and-limits-1672b34d-7043-467e-8e27-269d656771c3

https://exceljet.net/excel-functions/excel-textjoin-function