แปลง Text เป็น Date Excel ทำอย่างไร? แก้วันที่เป็นข้อความในไม่กี่ขั้นตอน
วันที่ดูถูกต้อง แต่ Sort ไม่ได้ คำนวณไม่ได้ หรือ Pivot Table Group ไม่ผ่าน? เรียนรู้วิธีตรวจสอบและแปลงวันที่จากระบบอื่นให้ใช้งานต่อได้อย่างถูกต้องครับ
ทำไมวันที่ดูถูกต้อง แต่ Excel ใช้งานไม่ได้?
เคยได้รับไฟล์จาก ERP, SAP, โปรแกรมบัญชี, HR หรือ CSV แล้วพบว่า Sort วันที่ไม่ถูกต้อง คำนวณจำนวนวันไม่ได้ หรือ Pivot Table Group เดือน/ปีไม่ได้ไหมครับ? หนึ่งในสาเหตุสำคัญคือข้อมูลที่ดูเหมือนวันที่ถูกเก็บเป็นข้อความ (Text)
วันที่จริงของ Excel ถูกเก็บเป็นตัวเลข Serial Number แล้วใช้ Number Format กำหนดหน้าตา เช่น 31/08/2026 ส่วนข้อความที่มีหน้าตาเหมือนกันอาจยังไม่ใช่วันที่จริง จึงต้องตรวจสอบชนิดข้อมูลก่อนครับ
ข้อความอาจเรียงตามตัวอักษร และไม่แสดงตัวเลือกวันที่ตามที่คาดหวัง
YEAR, MONTH หรือการลบวันที่อาจผิดพลาด หรือถูกตีความไม่ตรงกับต้นทาง
การ Group ตามเดือน/ปีอาจมีปัญหาเมื่อฟิลด์ปะปน Text หรือข้อมูลที่ไม่ใช่วันที่
เช็กก่อนว่าเป็น Date จริง หรือเป็น Text
สมมติข้อมูลอยู่ที่ A2 และแสดงเป็น 31/08/2026 เราสามารถใช้ ISTEXT และ ISNUMBER ตรวจสอบค่าที่เก็บอยู่ได้ครับ
=ISTEXT(A2)=ISNUMBER(A2)ลองสร้างตารางนี้ โดยกำหนด A2 เป็นข้อความ และ A3 เป็นวันที่จริงที่กรอกผ่าน Excel ครับ
| A | B | C | D | |
|---|---|---|---|---|
| 1 | ข้อมูลที่เห็น | ชนิดข้อมูลต้นทาง | ISTEXT | ISNUMBER |
| 2 | 31/08/2026 | Text | TRUE | FALSE |
| 3 | 31/08/2026 | Date จริง | FALSE | TRUE |
แถว 2 และ 3 อาจมองเห็นเหมือนกัน แต่ชนิดข้อมูลต่างกัน คอลัมน์ C และ D เป็นผลลัพธ์ตัวอย่างของสูตร ISTEXT และ ISNUMBER
ตรวจด้วย General อีกวิธีหนึ่ง
เลือกเซลล์แล้วเปลี่ยน Number Format เป็น General หากเป็นวันที่จริง Excel จะแสดง Serial Number เช่น วันที่ 31 สิงหาคม 2026 มีค่า Serial 46265 ในระบบวันที่ 1900 ที่ใช้ทั่วไป แต่ถ้าเป็น Text มักยังคงแสดงเป็นข้อความเดิม
Text มักชิดซ้ายและตัวเลขมักชิดขวาตามค่าเริ่มต้น แต่ผู้ใช้สามารถเปลี่ยน Alignment ได้ จึงควรใช้สูตรหรือดูชนิดข้อมูลจริงประกอบครับ
วิธีที่ 1: Text to Columns — แปลงทั้งคอลัมน์แบบไม่ใช้สูตร
สำหรับข้อมูลที่มีรูปแบบเหมือนกันทั้งคอลัมน์ เช่น DD/MM/YYYY ผมแนะนำให้เริ่มจาก Text to Columns ครับ เพราะสามารถระบุได้ชัดเจนว่าข้อมูลเรียงวัน เดือน ปีอย่างไร
สมมติข้อมูลต้นทางอยู่ที่ A2:A6 และต้องการเก็บต้นฉบับไว้ โดยให้ผลลัพธ์ออกที่คอลัมน์ B
หากต้องสร้างข้อมูลทดลองเอง ให้กำหนดคอลัมน์ A เป็น Text ก่อนกรอก หรือพิมพ์เครื่องหมาย apostrophe นำหน้าวันที่ เช่น '31/08/2026 เพื่อให้ Excel เก็บเป็นข้อความ โดยเครื่องหมายดังกล่าวจะไม่แสดงในเซลล์ตามปกติครับ
| A | B | C | D | |
|---|---|---|---|---|
| 1 | วันที่จากระบบ (Text) | วันที่ที่แปลงแล้ว | ตรวจสอบ Date | ปี ค.ศ. |
| 2 | 31/08/2026 | 31/08/2026 | TRUE | 2026 |
| 3 | 15/07/2026 | 15/07/2026 | TRUE | 2026 |
| 4 | 01/09/2026 | 01/09/2026 | TRUE | 2026 |
| 5 | 20/05/2026 | 20/05/2026 | TRUE | 2026 |
| 6 | 09/04/2026 | 09/04/2026 | TRUE | 2026 |
ตารางนี้เป็นตัวอย่างผลลัพธ์หลังแปลง โดย A เป็น Text ต้นทาง, B เป็น Date จริง, C และ D เป็นคอลัมน์ตรวจสอบ
ทำตามขั้นตอนนี้
- ตรวจสอบและสำรองข้อมูลต้นฉบับ
ยืนยันว่าข้อมูลเป็น Text และรู้รูปแบบวัน/เดือน/ปีจากระบบต้นทางก่อนเริ่ม
- เลือก A2:A6
เลือกเฉพาะช่วงข้อมูลวันที่ที่ต้องการแปลง
- ไปที่ Data → Text to Columns
เลือก Delimited แล้วกด Next
- ตรวจสอบ Delimiter
ถ้าไม่ได้ต้องการแยกคอลัมน์ ให้ตรวจสอบว่าไม่มีตัวคั่นที่จะแยกข้อมูลผิด แล้วกด Next
- เลือก Column data format → Date
เลือก DMY สำหรับข้อมูล 31/08/2026 เพราะต้นทางเรียงวัน/เดือน/ปี
- กำหนด Destination แล้วกด Finish
หากต้องการเก็บ A ไว้ ให้ตั้ง Destination เป็น
$B$2ตรวจสอบว่า B ว่าง และลองกับข้อมูลบางแถวก่อน
หลังแปลง ให้ตั้งคอลัมน์ B เป็น Date Format ที่ต้องการ แล้วตรวจสอบว่าค่าที่ได้เป็น Date จริงครับ
=ISNUMBER(B2)=YEAR(B2)Text to Columns อาจเขียนทับข้อมูลเดิมหรือข้อมูลในคอลัมน์ข้างเคียงได้ ควรสำรองไฟล์และตรวจสอบตำแหน่งผลลัพธ์ก่อนเสมอครับ
DMY, MDY และ YMD — จุดที่แปลงสำเร็จแต่วันที่อาจผิด
รูปแบบวันที่จากระบบอื่นอาจต่างกัน แม้ตัวเลขจะคล้ายกันก็ตามครับ
| ข้อมูลต้นทาง | รูปแบบ | ความหมาย |
|---|---|---|
31/08/2026 | DMY | 31 สิงหาคม 2026 |
08/31/2026 | MDY | 31 สิงหาคม 2026 |
2026/08/31 | YMD | 31 สิงหาคม 2026 |
ตัวอย่างที่ต้องระวัง: 03/04/2026
หากต้นทางเป็น DMY จะหมายถึง 3 เมษายน 2026 แต่ถ้าเป็น MDY จะหมายถึง 4 มีนาคม 2026 ทั้งสองแบบเป็นวันที่ถูกต้อง Excel จึงอาจไม่แสดง Error เลยครับ
| ข้อมูล | หากเป็น DMY | หากเป็น MDY |
|---|---|---|
03/04/2026 | 3 เมษายน 2026 | 4 มีนาคม 2026 |
ควรยืนยันรูปแบบจากระบบต้นทาง และตรวจสอบตัวอย่างที่เลขวันมากกว่า 12 เช่น 25/08/2026 เพื่อช่วยแยก DMY กับ MDY ก่อนแปลงข้อมูลทั้งหมดครับ
แล้วข้อมูล พ.ศ. ล่ะ?
ถ้าต้นทางใช้ปี พ.ศ. เช่น 31/08/2569 ต้องตรวจสอบก่อนว่าเป็นข้อความปี พ.ศ. จริง หรือเป็นวันที่จริงที่เครื่องแสดงผลเป็น พ.ศ. อย่าเพิ่งบวกหรือลบ 543 โดยเดาครับ
หากข้อมูลเป็นข้อความปี พ.ศ. จริง ต้องแปลงปีให้เป็น ค.ศ. อย่างถูกต้องก่อนสร้าง Date ที่ใช้คำนวณต่อได้ ส่วนวันที่จริงที่เพียงแสดงเป็น พ.ศ. ไม่จำเป็นต้องเปลี่ยนค่า Serial Number ครับ
วิธีที่ 2: DATEVALUE — เก็บต้นฉบับและสร้างคอลัมน์ใหม่
DATEVALUE เหมาะกับกรณีที่ต้องการเก็บข้อมูลเดิมไว้ และข้อความวันที่อยู่ในรูปแบบที่ Excel สามารถตีความได้ตามการตั้งค่าที่ใช้งานครับ
สมมติ A2 เป็น Text 31/08/2026 และเครื่องสามารถอ่านรูปแบบ DMY นี้ได้
=DATEVALUE(A2)DATEVALUE จะคืนค่า Serial Number ของวันที่ จากนั้นกำหนด Number Format ของ B2 เป็น Date และลากสูตรลงแถวถัดไปได้ครับ
| A | B | C | |
|---|---|---|---|
| 1 | วันที่ต้นทาง (Text) | สูตร DATEVALUE | ปี ค.ศ. |
| 2 | 31/08/2026 | 31/08/2026 | 2026 |
| 3 | 15/07/2026 | 15/07/2026 | 2026 |
| 4 | 01/09/2026 | 01/09/2026 | 2026 |
คอลัมน์ B แสดงผลเป็น Date หลังใช้ DATEVALUE ส่วนคอลัมน์ C สามารถใช้ =YEAR(B2) แล้วลากลงได้
ทำไม DATEVALUE ขึ้น #VALUE!?
สาเหตุหนึ่งคือ Excel ไม่สามารถตีความข้อความตามรูปแบบวันที่ที่คาดหวังได้ เช่น ข้อมูลเป็น DMY แต่เครื่องคาดหวัง MDY นอกจากนี้ข้อความที่ไม่ใช่วันที่หรือมีอักขระแปลกปลอมก็อาจทำให้แปลงไม่ได้ครับ
วิธีที่ 3: แปลง YYYYMMDD ด้วย DATE + LEFT + MID + RIGHT
ข้อมูลจาก ERP หรือ Database บางระบบอยู่ในรูปแบบ 8 หลัก เช่น 20260831 หมายถึง 31 สิงหาคม 2026 กรณีนี้สามารถแยกปี เดือน วัน แล้วประกอบเป็น Date ได้ครับ
สมมติ A2 เป็น 20260831 (Text หรือตัวเลข 8 หลัก) และต้องการผลลัพธ์ใน B2
=DATE(LEFT(A2,4),MID(A2,5,2),RIGHT(A2,2))| ส่วนของสูตร | ค่าที่ดึงได้ | ความหมาย |
|---|---|---|
LEFT(A2,4) | 2026 | ปี |
MID(A2,5,2) | 08 | เดือน |
RIGHT(A2,2) | 31 | วัน |
| A | B | C | |
|---|---|---|---|
| 1 | ข้อมูล YYYYMMDD | Date ที่แปลงแล้ว | ตรวจสอบชนิดข้อมูล |
| 2 | 20260831 | 31/08/2026 | TRUE |
| 3 | 20260715 | 15/07/2026 | TRUE |
| 4 | 20260901 | 01/09/2026 | TRUE |
คอลัมน์ C ใช้ =ISNUMBER(B2) เพื่อตรวจสอบว่า B เป็นตัวเลขวันที่จริง และกำหนด B เป็น Date Format แล้ว
ตรวจสอบวันที่ที่ไม่ถูกต้องก่อนนำไปใช้
DATE สามารถปรับค่าที่เกินช่วงให้กลายเป็นวันอื่นได้ เช่น DATE(2026,2,31) จะได้ 03/03/2026 แทนที่จะขึ้น Error ดังนั้นการประกอบ Date สำเร็จจึงยังไม่รับประกันว่าข้อมูลต้นทางถูกต้องครับ
สำหรับข้อมูลรูปแบบ YYYYMMDD ที่ยืนยันว่ามี 8 หลักแล้ว สามารถใช้สูตรตรวจสอบว่าปี เดือน และวันหลังแปลงตรงกับต้นทางหรือไม่ โดยให้ B2 เป็นวันที่ที่สร้างจากสูตรด้านบน
=IF(AND(YEAR(B2)=--LEFT(A2,4),MONTH(B2)=--MID(A2,5,2),DAY(B2)=--RIGHT(A2,2)),"ถูกต้อง","ตรวจสอบวันที่")20260231 สูตร DATE อาจได้ 03/03/2026 แต่สูตรตรวจสอบจะพบว่าเดือนและวันไม่ตรงกับต้นทาง จึงแสดง “ตรวจสอบวันที่” ครับ ควรตรวจสอบจำนวนหลัก ปีที่เป็นไปได้ และข้อมูลผิดรูปแบบก่อนใช้สูตรนี้กับข้อมูลจำนวนมากด้วยเลือกวิธีแปลงให้ตรงกับปัญหา
ไม่จำเป็นต้องใช้สูตรเดียวแก้ทุกกรณีครับ ให้เลือกตามลักษณะข้อมูลและความถี่ของงาน
| สถานการณ์ | วิธีที่แนะนำ | ข้อควรระวัง |
|---|---|---|
| Text ทั้งคอลัมน์ รูปแบบเดียวกัน | Text to Columns | ระบุ DMY/MDY/YMD และตรวจ Destination |
| ต้องการเก็บข้อมูลเดิมไว้ | DATEVALUE | ใช้เมื่อ Excel ตีความรูปแบบต้นทางได้ถูกต้อง |
| ข้อมูลเป็น YYYYMMDD | DATE + LEFT/MID/RIGHT | ตรวจสอบจำนวนหลักและวัน/เดือนที่ถูกต้อง |
| Import รูปแบบเดิมทุกเดือน | Power Query | กำหนดชนิดข้อมูลและ Locale ให้ตรงต้นทาง |
| ข้อมูลจากต่างประเทศ | ตรวจสอบรูปแบบก่อนแปลง | อย่าเดา DMY/MDY จากวันที่กำกวม |
| ข้อมูลปี พ.ศ. | ตรวจสอบชนิดข้อมูลและแปลงปีตามต้นทาง | อย่าบวก/ลบ 543 กับวันที่จริงโดยไม่จำเป็น |
งานที่ต้องทำซ้ำ: ใช้ Power Query
ถ้าต้องรับไฟล์รูปแบบเดิมทุกเดือน เราสามารถกำหนดขั้นตอนทำความสะอาดและแปลงชนิดข้อมูลไว้ใน Power Query แล้ว Refresh เมื่อข้อมูลใหม่เข้ามาได้ครับ
ตัวอย่าง ถ้าต้นทางเป็นข้อความ DMY ให้เลือกคอลัมน์วันที่ → Change Type → Using Locale → เลือก Data Type เป็น Date และ Locale ที่ใช้รูปแบบวันที่ตรงกับต้นทาง เช่น English (United Kingdom) สำหรับ DMY ที่เหมาะสมกับข้อมูลนั้น จากนั้นตรวจผลลัพธ์ก่อน Load กลับ Excel
Workshop: แปลงวันที่จากระบบ HR ก่อนทำ Pivot Table
สมมติฝ่าย HR Export ข้อมูลพนักงานจากระบบ โดย Start Date เป็น Text รูปแบบ DMY และต้องการสรุปจำนวนพนักงานเข้าใหม่รายเดือนครับ
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Employee ID | Start Date (Text) | Start Date (Date) | ปี ค.ศ. | เดือน |
| 2 | EMP001 | 15/01/2026 | 15/01/2026 | 2026 | 1 |
| 3 | EMP002 | 20/02/2026 | 20/02/2026 | 2026 | 2 |
| 4 | EMP003 | 05/03/2026 | 05/03/2026 | 2026 | 3 |
| 5 | EMP004 | 18/03/2026 | 18/03/2026 | 2026 | 3 |
| 6 | EMP005 | 10/04/2026 | 10/04/2026 | 2026 | 4 |
ข้อมูลเริ่มแถว 2 คอลัมน์ C เป็นผลลัพธ์หลังแปลงจาก Text เป็น Date จริง โดยเก็บคอลัมน์ B ต้นทางไว้
- ตรวจสอบ Start Date ต้นทาง
ยืนยันว่าคอลัมน์ B เป็น Text และรูปแบบต้นทางเป็น DMY
- แปลงเป็น Date จริงในคอลัมน์ C
ใช้ Text to Columns โดยเลือก B2:B6 และกำหนด Destination เป็น C2 หรือใช้วิธีที่เหมาะกับข้อมูลต้นทาง
- สร้างคอลัมน์ปีและเดือน
เมื่อ C เป็น Date จริงแล้ว ใส่สูตรใน D2 และ E2 แล้วลากลง
=YEAR(C2)=MONTH(C2)จากนั้นสามารถนำ Start Date ที่แปลงแล้วไปใช้กับ Pivot Table เพื่อ Group ตามเดือน/ปี หรือใช้คอลัมน์ปีและเดือนในการสรุปรายงานได้ โดยต้องตรวจสอบว่าไม่มี Text หรือข้อมูลวันที่ผิดปะปนอยู่ครับ
คำถามที่พบบ่อยและสรุปก่อนนำข้อมูลไปใช้
วันที่ใน Excel เป็น Text ดูอย่างไร?
ใช้ ISTEXT และ ISNUMBER ตรวจสอบชนิดข้อมูล หรือเปลี่ยนเป็น General เพื่อดูค่าภายใน วันที่จริงเป็นตัวเลข แต่ ISNUMBER เป็น TRUE เพียงอย่างเดียวไม่ได้ยืนยันว่าตัวเลขนั้นเป็นวันที่ที่ถูกต้องครับ
แปลง Text เป็น Date โดยไม่ใช้สูตรได้ไหม?
ได้ครับ ใช้ Data → Text to Columns → Date แล้วเลือก DMY, MDY หรือ YMD ให้ตรงกับต้นทาง จากนั้นตรวจสอบ Destination และผลลัพธ์ก่อนใช้ข้อมูลทั้งหมด
ทำไม DATEVALUE ขึ้น #VALUE!?
หนึ่งในสาเหตุคือ Excel ไม่สามารถตีความข้อความวันที่ตามรูปแบบที่คาดหวังได้ เช่น ต้นทางเป็น DMY แต่เครื่องคาดหวัง MDY ควรตรวจสอบรูปแบบต้นทางและอักขระในข้อมูลก่อนครับ
วันที่ YYYYMMDD แปลงอย่างไร?
สำหรับข้อมูล 8 หลักที่มีรูปแบบถูกต้อง สามารถใช้ =DATE(LEFT(A2,4),MID(A2,5,2),RIGHT(A2,2)) แล้วตรวจสอบปี เดือน และวันหลังแปลง เพื่อป้องกันกรณี DATE ปรับวันที่ที่ไม่ถูกต้องไปเป็นวันอื่นครับ
เปลี่ยน Format เป็น Date แล้วทำไมยังไม่หาย?
เพราะ Number Format เปลี่ยนเฉพาะการแสดงผล ไม่ได้เปลี่ยน Text ให้เป็น Date จริง ต้องแปลงข้อมูลก่อน แล้วจึงกำหนดรูปแบบวันที่ที่ต้องการครับ
ข้อมูลวันที่ พ.ศ. ต้องลบ 543 ทุกครั้งไหม?
ไม่ครับ ถ้าเป็นวันที่จริงที่เพียงแสดงผลเป็น พ.ศ. ไม่ต้องเปลี่ยนค่า Serial Number แต่ถ้าต้นทางเป็นข้อความปี พ.ศ. จริง จึงต้องแปลงปีให้ถูกต้องตามรูปแบบข้อมูลก่อนสร้าง Date ครับ
Checklist ก่อนทำรายงาน
ตรวจสอบว่าข้อมูลเป็น Date จริง → ยืนยัน DMY/MDY/YMD → ตรวจปี ค.ศ./พ.ศ. → ลองเทียบวันที่กับต้นทาง → ตรวจค่าว่างและวันที่ผิด → จึงนำไปใช้กับสูตร Pivot Table หรือ Dashboard ครับ
การแปลง Text เป็น Date Excel ไม่ยาก แต่สิ่งสำคัญกว่าการแปลงให้สำเร็จคือ ต้องได้วันที่ตรงกับข้อมูลต้นทางจริง ครับ หากเป็นงานครั้งเดียวที่รูปแบบสม่ำเสมอ Text to Columns มักเหมาะมาก ส่วนงานที่ต้อง Import ซ้ำทุกเดือนสามารถต่อยอดด้วย Power Query เพื่อบันทึกขั้นตอนและ Refresh ได้