สูตร 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 ต้องลองครับ 😊

วิศวกรรีพอร์ต

คนธรรมดาผู้มีประสบการณ์ทำงานหลากหลายตำแหน่ง คลุกคลีกับการทำรีพอร์ตมาโดยตลอด สุดท้ายค้นพบแนวทางของตัวเอง จึงอยากแบ่งปันเคล็ดลับและประสบการณ์ให้กับผู้สนใจ

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.