ข้อมูลที่ส่งออกจากระบบราชการ ระบบบัญชีไทย หรือก๊อปมาจากเว็บ มักมีวันที่เป็นแบบ “15/08/2569” หรือ “15 ส.ค. 2569” ซึ่ง Excel มองเป็นข้อความ ไม่ใช่วันที่จริง เลยเอาไปเรียงลำดับ ลบกัน หรือคำนวณอายุไม่ได้ บทความนี้รวมสูตรแปลงวันที่ พ.ศ. ให้กลายเป็นวันที่จริง (ค.ศ.) ที่ Excel เข้าใจ ครบทุกรูปแบบที่เจอบ่อย พร้อมวิธีแปลงกลับ
หลักการ: แกะ วัน / เดือน / ปี แล้วประกอบใหม่ด้วย DATE
สูตรหัวใจคือ DATE(ปี, เดือน, วัน) เราแค่ต้องดึงตัวเลขสามส่วนออกมาจากข้อความ แล้วลบ 543 ออกจากปี ก่อนส่งให้ DATE
รูปแบบที่ 1: ตัวเลขล้วน 15/08/2569
=DATE(RIGHT(A2,4)-543, MID(A2,4,2), LEFT(A2,2))| A | B | |
|---|---|---|
| 1 | ข้อความวันที่ (พ.ศ.) | วันที่จริง |
| 2 | 15/08/2569 | 15/08/2026 |
| 3 | 01/01/2570 | 01/01/2027 |
LEFT ดึง 2 ตัวแรก (วัน) MID ดึงตำแหน่งที่ 4 ยาว 2 ตัว (เดือน) RIGHT ดึง 4 ตัวท้าย (ปี พ.ศ.) แล้ว -543 เป็น ค.ศ. เซลล์ผลลัพธ์อาจโชว์เป็นตัวเลข serial ให้กด Ctrl+1 เปลี่ยนรูปแบบเป็น Date
รูปแบบที่ 2: มีชื่อเดือนไทย 15 ส.ค. 2569
ต้องแปลงชื่อเดือนเป็นตัวเลขก่อน ด้วยการเทียบกับลิสต์ชื่อเดือน วางลิสต์ ม.ค. ... ธ.ค. ไว้ที่ $E$1:$E$12
=DATE(TEXTAFTER(A2," ",-1)-543, MATCH(TEXTBEFORE(TEXTAFTER(A2," ")," "), $E$1:$E$12, 0), TEXTBEFORE(A2," "))| A | B | |
|---|---|---|
| 1 | ข้อความ | วันที่จริง |
| 2 | 15 ส.ค. 2569 | 15/08/2026 |
| 3 | 3 ม.ค. 2570 | 03/01/2027 |
TEXTBEFORE / TEXTAFTER ตัดข้อความตามช่องว่าง ได้วัน / ชื่อเดือน / ปี ออกมา แล้ว MATCH หาว่าชื่อเดือนนั้นอยู่ลำดับที่เท่าไรในลิสต์ (= เลขเดือน) ถ้าใช้ Excel รุ่นก่อน 365 ให้ใช้ FIND กับ MID แทน TEXTBEFORE/TEXTAFTER
รูปแบบที่ 3: Excel อ่านเป็นวันที่แล้ว แต่ปีเพี้ยนไป 543 ปี
บางไฟล์ Excel อ่านวันที่ได้เอง แต่ตีความปี 2569 เป็น ค.ศ. ทำให้วันที่กระโดดไปอยู่ปี 2569 (อีก 500 กว่าปีข้างหน้า) เช็คด้วย YEAR แล้วหักออก
=IF(YEAR(A2)>2200, DATE(YEAR(A2)-543, MONTH(A2), DAY(A2)), A2)| A | B | |
|---|---|---|
| 1 | วันที่ที่อ่านมาผิด | แก้แล้ว |
| 2 | 15/08/2569 | 15/08/2026 |
เงื่อนไข YEAR(A2)>2200 ใช้กันพลาด ถ้าปีมากผิดปกติแปลว่ายังเป็น พ.ศ. อยู่ ค่อยหัก 543 ถ้าปีปกติ (เป็น ค.ศ. อยู่แล้ว) ก็ปล่อยผ่าน
แปลงกลับ: วันที่จริง → ข้อความ พ.ศ.
=TEXT(A2,"[$-th-TH]d mmmm yyyy")| A | B | |
|---|---|---|
| 1 | วันที่จริง | รูปแบบไทย |
| 2 | 15/08/2026 | 15 สิงหาคม 2569 |
รหัส [$-th-TH] ใน TEXT สั่งให้แสดงเป็นภาษาไทยและปีเป็น พ.ศ. อัตโนมัติ ถ้าอยากให้เซลล์วันที่จริงแสดงเป็น พ.ศ. โดยไม่แปลงเป็นข้อความ ให้ตั้ง Custom Format เป็น [$-th-TH]d/m/yyyy แทน คำนวณต่อได้ตามปกติ
ข้อควรรู้
- ปี 2 หลัก (15/08/69) — กำกวมว่าเป็น 2569 หรือ 2069 ต้องเติมเงื่อนไขเอง เช่น
IF(RIGHT(A2,2)+0<50, 2500, 2400)+RIGHT(A2,2)-543 - เผื่อข้อมูลไม่สม่ำเสมอ — ครอบด้วย IFERROR เพื่อไม่ให้ทั้งคอลัมน์พังเพราะแถวเดียวผิดรูปแบบ
- ข้อมูลเยอะมาก — ใช้ Power Query (Get & Transform) แปลงทีเดียวทั้งคอลัมน์จะเร็วและจัดการรูปแบบหลากหลายได้ดีกว่าสูตร
- ตรวจผลเสมอ — หลังแปลง ลองเรียงจากน้อยไปมาก ถ้าลำดับถูกต้องแปลว่าเป็นวันที่จริงแล้ว