ข้อมูลที่ส่งออกจากระบบราชการ ระบบบัญชีไทย หรือก๊อปมาจากเว็บ มักมีวันที่เป็นแบบ “15/08/2569” หรือ “15 ส.ค. 2569” ซึ่ง Excel มองเป็นข้อความ ไม่ใช่วันที่จริง เลยเอาไปเรียงลำดับ ลบกัน หรือคำนวณอายุไม่ได้ บทความนี้รวมสูตรแปลงวันที่ พ.ศ. ให้กลายเป็นวันที่จริง (ค.ศ.) ที่ Excel เข้าใจ ครบทุกรูปแบบที่เจอบ่อย พร้อมวิธีแปลงกลับ
🎬 ดูวิดีโอสอน (1 นาที 32 วินาที) บน Excel จริง หรืออ่านขั้นตอนละเอียดด้านล่างได้เลย
หลักการ: แกะ วัน / เดือน / ปี แล้วประกอบใหม่ด้วย DATE
สูตรหัวใจคือ DATE(ปี, เดือน, วัน) เราแค่ต้องดึงตัวเลขสามส่วนออกมาจากข้อความ แล้วลบ 543 ออกจากปี ก่อนส่งให้ DATE
รูปแบบที่ 1: ตัวเลขล้วน 15/08/2569

LEFT ดึง 2 ตัวแรก (วัน) MID ดึงตำแหน่งที่ 4 ยาว 2 ตัว (เดือน) RIGHT ดึง 4 ตัวท้าย (ปี พ.ศ.) แล้ว -543 เป็น ค.ศ. เซลล์ผลลัพธ์อาจโชว์เป็นตัวเลข serial ให้กด Ctrl+1 เปลี่ยนรูปแบบเป็น Date
รูปแบบที่ 2: มีชื่อเดือนไทย 15 ส.ค. 2569
ต้องแปลงชื่อเดือนเป็นตัวเลขก่อน ด้วยการเทียบกับลิสต์ชื่อเดือน วางลิสต์ ม.ค. ... ธ.ค. ไว้ที่ $E$1:$E$12

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,"[$-107041E]d mmmm yyyy") ใน Excel (ภาพจากหน้าจอจริง)](https://ms365ibex.com/wp-content/uploads/2026/10/excel-thai-buddhist-date-convert-4-real.png)
รหัส [$-107041E] ใน TEXT สั่งให้แสดงเป็นภาษาไทยและปีเป็น พ.ศ. (ใช้ปฏิทินพุทธ) ส่วนรหัส [$-th-TH] จะได้ชื่อเดือนภาษาไทยแต่ปียังเป็น ค.ศ. ถ้าอยากให้เซลล์วันที่จริงแสดงเป็น พ.ศ. โดยไม่แปลงเป็นข้อความ ให้ตั้ง Custom Format เป็น [$-107041E]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) แปลงทีเดียวทั้งคอลัมน์จะเร็วและจัดการรูปแบบหลากหลายได้ดีกว่าสูตร
- ตรวจผลเสมอ — หลังแปลง ลองเรียงจากน้อยไปมาก ถ้าลำดับถูกต้องแปลว่าเป็นวันที่จริงแล้ว