สิ่งที่ผมมักพบบ่อย ๆ เลย clean data ที่ได้มาทำต่อ ก็มักจะเป็น คนที่ให้ข้อมูลเรามา ใส่ข้อมูล 2 หรือ 3 อย่างไว้ใน cell เดียวกัน 😆
แน่นอนครับ คนเราส่วนมากไม่รู้ตั้งแต่แรกหรอกว่า ควรจะทำ data normalization 😲 ก่อนเก็บข้อมูล
[26 ม.ค. 2566] แยกชื่อ-สกุลด้วยสูตร ⬅️อ่านจากลิงค์นี้
โดยเฉพาะชื่อ-สกุลของคน มาหลากหลายรูปแบบมาก ดังนี้เราจะค่อย ๆ ดูไปทีละแบบเท่าที่เคยเจอมาก็แล้วกัน
😁 เริ่มจากกรณีที่เข้าใจว่า ง่ายที่สุดก่อนก็แล้วกัน
กรณีแรก: ชื่อ-สกุล ไม่มีคำนำหน้า
ชื่อ-สกุล | Full Name |
---|---|
ฐิติสร เสถียรไทย | Thitisorn Sathianthai |
แกล้วกล้า วิจิตรพงศ์พันธ์ | Klaew-kla Vijitpongpun |
ธนุธรรม แสนสุรินทร์ | Tanutam Sansurin |
ปุรันต์ โรจนสุขชัย | Puran Rojjanasukchai |
โมกขเวสา กาสันต์ | Mokkhavesa Gason |
บุปกรณ์ พญา | Buppakorn Phaya |
ภรา พิชิต | Phara Pichit |
ธนศร กาญจนพาสน์ | Tanusorn Kanjanapas |
ฐิติวุฒิ แก้วมณี | Thitiwut Kaewmanee |
ทรงพล เตมีรักษ์ | Songpol Temirak |
ปมุต ศุภรัตน์ | Pamut Suparat |
ทัดพงศ์ สิทธิราษฎร์ | Tadpong Sitdhiras |
ปวรุต ประเวศ | Pawarut Praves |
ปัณณธร พฤกษาพรรณ | Pannathorn Prugsanapan |
เนติวิทย์ มณีรัตนา | Netiwit Maneerattana |
อรุณ ชื่นจำรัส | Aroon Cheenchamras |
เจริญ ศุภชัย | Charoen Supachai |
ถวัลย์ วิจิตรพงศ์พันธ์ | Thawan Vijitpongpun |
ปัทมา ทับชุมพร | Pattama Thabchumpon |
กรณีแบบนี้คุณต้องขอบคุณ คนที่ให้ข้อมูลมาเป็นอย่างมาก 🥰 ถือว่า แทบไม่ต้องทำอะไรเพิ่มเลย
มี 2 ทางเลือกใช้เราใช้
- Text to Column (กด Alt ➡ A ➡ E) หรือไปที่แถบ Data > Text to Column
- ใช้สูตร
Text to Column
- เพิ่มคอลัมภ์เปล่าด้านขวามาอีก 1 คอลัมภ์ หรือ 2 คอลัมภ์ หากมีชื่อกลาง
- เลือกคอลัมภ์ “ชื่อ-สกุล” แล้วไปที่แถบ Data > Text to Column หรือกดปุ่ม Alt ▶ A ▶ E
- ที่ตัวเลือก เลือกเป็น “Delimited”
- เลือกประเภทของ ตัวคั่นข้อมูล (Delimit) ที่เราต้องการ ซึ่งกรณีนี้คือ ช่องว่าง (Space) และอย่าลืม ติ๊ก ที่ Treat consecutive as one เผื่อกรณีที่มี space มากกว่า 1 คั่นระหว่างชื่อ-สกุล แล้วกดปุ่ม Next
- เลือกประเภทข้อมูล ซึ่งในที่นี้เป็น “ชื่อ-สกุล” เลือกเป็น Text และเลือก cell ที่เราต้องนำข้อมูลไปใส่ (หลังคำว่า Destination) ในตัวอย่างผมใส่ cell เดิม คือ A1
- หากคุณ เลือกให้ข้อมูลทับจุดเดิม จะมีกล่องข้อความเตือนแสดงขึ้นมา ถ้าแน่ในให้ตอบ 🆗 ไป



เลือกประเภทข้อมูล และที่ที่จะให้เขาข้อมูลไปใส่ (หลังคำว่า Destination)


จะสังเกตได้ว่าถึงจะมี “คำนำหน้า” มาด้วย แต่มีการใช้ space หรือช่องวางคั่นไว้ ก็สามารถใช้ Text to Column เช่นกัน
ใช้สูตรแยก ชื่อ-สกุล
สำหรับการใช้สูตร (formula) จากตัวอย่างเดิม ผมแทรกคอลัมภ์ เพิ่มขึ้นมา B ใช้เก็บชื่อ ส่วน C ใช้เก็บนามสกุล ดังภาพ

สำหรับสูตรแยกชื่อ จะเรียกใช้ฟังก์ชันอยู่ 3 ฟังก์ชัน ก็คือ TRIM(), LEFT(), และ FIND()
ซึ่งอัลกอริทึมก็คือ “ให้นับเอาตัวอักขระจากซ้ายมือไปจนกว่าจะเจอช่องว่าง“
สูตรที่ใช้ใน B2 คือ
=TRIM(LEFT(A2,FIND(" ",A2)))
ดังนั้นเราก็เลยฟังก์ชัน LEFT() ซึ่งจะทำหน้าที่เก็บอักขระตั้งแรกตัวแรกไปจนกว่า ฟังก์ชัน FIND() จะพบว่า ช่องว่าง หรือ space อยู่ลำดับที่เท่าไหร่ ซึ่งตรงนี้ใครจะใช้ SEARCH() ก็ได้นะ 😙
และเมื่อได้ข้อความ (ในที่นี้คือ ชื่อ) มาแล้ว เราจะใช้ฟังก์ชัน TRIM() ตัดช่องวาง (space) ส่วนเกินออกไป ไม่ว่าจะอยู่ด้านหน้า ด้านหลัง หรือเกินมาระหว่างคำ (ในภาษาอังกฤษ เพราะภาษาไทยเราไม่ได้เว้นช่อวว่างระหว่างคำ) ก็ตาม ซึ่งถ้าอยู่ระหว่างคำจะเก็บไว้ 1 ช่องว่าง
ส่วนการแยกเอา “นามสกุล” นั้นจะมีอัลกอริทึมกลับกันกับ “ชื่อ” คือ ให้นับเอาอักขระจากขวามือ โดยจำนวนอักขระที่จะเอา เท่ากับความยาวของอักขระทั้งหมดใน cell นั้น ลบด้วยจุดแรกที่พบ ช่องว่าง
สูตรที่ใช้ใน C2 คือ
=TRIM(RIGHT(A2,LEN(A2)-FIND(" ",A2)))
การนับเอาอักขระจากด้านขวามือ เราจะใช้ฟังก์ชัน RIGHT() และมีอีกฟังก์ชันเพิ่มขึ้นมาก็คือ LEN() ซึ่งจะใช้นับจำนวนอักขระที่มีอยู่ใน cell นั้น ๆ และสุดท้ายเราจะใช้ TRIM() ตัดช่องว่างที่เกินมาเหมือนเดิม
กรณีที่สอง: ชื่อ ชื่อกลาง 😮 และสกุล ไม่มีคำนำหน้า
หากทุกคนมีชื่อกลาง เราจะสามารถใช้ Text to Column ได้ แต่ในความเป็นจริง คงไม่เป็นเช่นนั้น ลองดูตัวอย่างนี้

ในกรณีนี้การแยกชื่อกลาง จะมีเงื่อนไขเข้ามาเกี่ยวข้อง
Leave a Reply