อยากแยกชื่อ-นามสกุล ออกจากกัน ต้องเขียนสูตรยังไง?
ผมเคยให้สูตรในโพสต์วันที่ 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 ต้องลองครับ 😊