1 ก.พ. 2023 เวลา 01:00 • วิทยาศาสตร์ & เทคโนโลยี

สูตร Excel 365 แยกชื่อ-นามสกุล (ได้ทุกชื่อ)

อยากแยกชื่อ-นามสกุล ออกจากกัน ต้องเขียนสูตรยังไง?
 
ผมเคยให้สูตรในโพสต์วันที่ 29 มกราคม 2023 สูตรนั้นกระชับ แต่แยกบางชื่อ เช่น นางสาวิตรี ไม่ได้
 
ทำไมไม่ได้?
เพราะสูตรจะมองว่าคำนำหน้าชื่อคือ นางสาว ไม่ใช่นาง!
 
ใช่, นางสาวัตถี นางสาวิณี นางสาวิกา ชื่อพวกนี้ก็แยกไม่ได้เช่นกัน
แล้วจะทำยังไง?
เคสยาก สูตรที่แก้ก็ต้องยากตาม
จากภาพ สูตรแยกคำนำหน้าออกจากชื่อในเซลล์ C2 คือ
=MAP(A2:A8,LAMBDA(name,LET(m,MAP(G2:G6,LAMBDA(title,UNICODE(TEXTAFTER(name,title)))),LOOKUP(2,1/((m<3631)+(m>3647)),G2:G6))))
ใช่! สูตรโคตรโหด
หลักการของสูตรนี้คือ เช็คว่าอักขระตัวแรกของชื่อต้องเป็นพยัญชนะ (UNICODE < 3631) หรือเป็นสระบางอย่าง เช่น สระเอ สระแอ สระโอ (UNICODE > 3647) เท่านั้น
สระบางอย่าง เช่น สระอิ สระอี สระอุ หรือไม้หันอากาศ (UNICODE 3631-3647) จะถูกมองว่าไม่ใช่อักขระแรกของชื่อ ผลการคำนวณจึงถูกต้อง
 
คนคิดสูตรนี้คือคุณโบ Excel Wizard
เรื่องสูตร เค้าคือเบอร์ต้น ๆ ของโลกเลย 😊
อ้อ, G2:G6 คือลิสต์ความเป็นไปได้ที่จะเจอคำนำหน้าชื่อในรูปแบบต่าง ๆ
จะเตรียมเผื่อไว้ 20 แบบ (เช่น นพ. ภก. ภญ. ว่าที่ ร.ต.) ก็ได้เลย แต่ต้องเรียงข้อมูลจากน้อยไปมาก (ก-ฮ)
 
อ้อ2, ไม่ต้องก๊อปปี้สูตรมาที่เซลล์ C3-C8 นะ สูตรจะ SPILL ลงมาเอง 😀
พอได้คำนำหน้าชื่อ หลังจากนั้นก็ง่ายแล้ว
 
จากภาพ สูตรแยกชื่อออกจากคำนำหน้าในเซลล์ D2 คือ
=MAP(A2:A8,C2#,LAMBDA(name,title,TEXTBEFORE(TRIM(TEXTAFTER(name,title))," ")))
 
สูตรแยกนามสกุลออกจากชื่อในเซลล์ E2 คือ
=TRIM(TEXTAFTER(A2:A8,D2#))
 
(ไม่ต้องก๊อปปี้สูตรเช่นกัน สูตรจะ SPILL ลงมาเอง)
 
ใช้สูตรนี้ แยกได้ทุกชื่อแน่นอน
ใครใช้ Excel 365 ต้องลองครับ 😊
โฆษณา