ข้อมูลที่ได้มาบ่อยครั้งเก็บชื่อกับนามสกุลไว้ในเซลล์เดียว เช่น “สมชาย ใจดี” แต่เราต้องแยกเป็นคนละคอลัมน์เพื่อเรียงตามนามสกุล ทำจดหมายเวียน หรือจับคู่กับระบบอื่น บทความนี้รวมสูตรแยกชื่อ-นามสกุลทุกกรณี ทั้งแบบมีคำนำหน้า มีชื่อกลาง และรูปแบบมีจุลภาค
วิธีที่ง่ายที่สุด (Microsoft 365): TEXTBEFORE / TEXTAFTER
=TEXTBEFORE(A2," ")| A | B | C | |
|---|---|---|---|
| 1 | ชื่อเต็ม | ชื่อ | นามสกุล |
| 2 | สมชาย ใจดี | สมชาย | ใจดี |
| 3 | วิภาวดี รังสิต | วิภาวดี | รังสิต |
คอลัมน์ B ใช้ =TEXTBEFORE(A2," ") เอาข้อความก่อนช่องว่างแรก คอลัมน์ C ใช้ =TEXTAFTER(A2," ") เอาข้อความหลังช่องว่างแรก ดูรายละเอียดที่ TEXTBEFORE / TEXTAFTER
วิธีคลาสสิก (ทุกเวอร์ชัน): LEFT / MID / FIND
=LEFT(A2, FIND(" ",A2)-1)| A | B | C | |
|---|---|---|---|
| 1 | ชื่อเต็ม | ชื่อ (LEFT+FIND) | นามสกุล (MID+FIND) |
| 2 | สมชาย ใจดี | สมชาย | ใจดี |
คอลัมน์ B: FIND(” “,A2) หาตำแหน่งช่องว่าง แล้ว LEFT ดึงตัวอักษรก่อนหน้านั้น คอลัมน์ C: =MID(A2, FIND(" ",A2)+1, LEN(A2)) ดึงตั้งแต่หลังช่องว่างไปจนจบ
กรณีมีชื่อกลาง หรือ นามสกุลหลายคำ
ถ้าชื่ออาจมีมากกว่า 2 ส่วน เช่น “John Michael Smith” ให้ยึด “ช่องว่างสุดท้าย” เป็นตัวแบ่งนามสกุล
=TEXTAFTER(A2," ",-1)| A | B | C | |
|---|---|---|---|
| 1 | ชื่อเต็ม | ชื่อ + ชื่อกลาง | นามสกุล |
| 2 | John Michael Smith | John Michael | Smith |
TEXTAFTER(A2," ",-1) คือ “หลังช่องว่างตัวสุดท้าย” ได้นามสกุล ส่วนคอลัมน์ B ใช้ =TEXTBEFORE(A2," ",-1) ได้ทุกอย่างก่อนช่องว่างสุดท้าย
กรณีมีคำนำหน้า เช่น “นาย สมชาย ใจดี”
=TEXTBEFORE(TEXTAFTER(A2," ")," ")| A | B | C | D | |
|---|---|---|---|---|
| 1 | ชื่อเต็ม | คำนำหน้า | ชื่อ | นามสกุล |
| 2 | นาย สมชาย ใจดี | นาย | สมชาย | ใจดี |
คำนำหน้า = TEXTBEFORE(A2," ") / ชื่อ = ข้อความระหว่างช่องว่างที่ 1 กับ 2 / นามสกุล = TEXTAFTER(A2," ",-1)
กรณีรูปแบบมีจุลภาค “ใจดี, สมชาย”
=TEXTAFTER(A2,", ")| A | B | C | |
|---|---|---|---|
| 1 | นามสกุล, ชื่อ | ชื่อ | นามสกุล |
| 2 | ใจดี, สมชาย | สมชาย | ใจดี |
ชื่อ = หลัง “, ” / นามสกุล = TEXTBEFORE(A2,",")
ข้อควรระวัง
- เว้นวรรคเกิน / เว้นวรรคซ้อน — ครอบข้อความด้วย TRIM(A2) ก่อนเสมอ
- ชื่อที่ไม่มีนามสกุล — FIND จะขึ้น
#VALUE!ให้ครอบ IFERROR(…, A2) ให้คืนชื่อเดิม - เว้นวรรคแปลกจากการก๊อป — ถ้า TRIM ไม่หาย อาจเป็นอักขระรหัส 160 แก้ด้วย
SUBSTITUTE(A2,CHAR(160)," ")ดู CHAR / CODE - ข้อมูลรูปแบบไม่แน่นอนมากๆ — ลองใช้ Flash Fill (กด
Ctrl + E) พิมพ์ตัวอย่าง 2–3 แถวแล้วให้ Excel เดารูปแบบ ดู Flash Fill