EXCEL SPEED WORK · DATA QUALITY GUIDE

จัดการวันที่ใน Excel ที่คนทำงานพลาดบ่อย

วันที่ดูถูกต้อง แต่เรียงผิด คำนวณไม่ได้ หรือรายงานคลาดเคลื่อน? เรียนรู้วิธีตรวจสอบชนิดข้อมูล แก้รูปแบบวันที่ และป้องกันความผิดพลาดก่อนนำไปสรุปรายงานครับ

✍️ ครูกุ๊ก · Excel Speed Workระดับพื้นฐาน–ใช้งานจริงอ่านประมาณ 10 นาที

เคยไหมครับ? ได้ไฟล์จาก ERP, SAP, โปรแกรมบัญชี หรือเพื่อนร่วมงานมาเปิดใน Excel แล้ววันที่ดูปกติดี แต่พอ Sort, ใช้สูตร หรือทำ Pivot Table กลับมีบางแถวผิดปกติ ปัญหาอาจไม่ได้อยู่ที่สูตร แต่อยู่ที่ ชนิดข้อมูล รูปแบบวันเดือนปี หรือค่าต้นทาง ที่ Excel ได้รับมาครับ

อาการที่พบบ่อยเกี่ยวกับวันที่ใน Excel

ปัญหาวันที่ไม่ได้มีเพียงเรื่องแปลง Text เท่านั้นครับ บางครั้งข้อมูลเป็นตัวเลขวันที่จริงแล้ว แต่ถูกตีความวัน/เดือนสลับกัน หรือมีปีไม่ตรงกับระบบต้นทาง ลองสังเกตอาการเหล่านี้ก่อนครับ

↕เรียงวันที่ไม่ถูก

ข้อมูลบางแถวเรียงเหมือนข้อความ หรือวันที่จริงถูกตีความผิดตั้งแต่ตอนนำเข้า

fxคำนวณแล้ว Error

สูตรลบวันที่หรือแยกปี/เดือนทำงานไม่ได้ เพราะข้อมูลไม่อยู่ในชนิดที่สูตรคาดหวัง

12วันกับเดือนสลับกัน

วันที่ 03/04/2026 อาจหมายถึง 3 เมษายน หรือ 4 มีนาคม ขึ้นอยู่กับรูปแบบต้นทาง

!รายงานคลาดเคลื่อน

วันที่ผิดอาจทำให้ยอดรายเดือน การนับอายุงาน และกราฟแนวโน้มผิดตามไปด้วย

สิ่งสำคัญ: ข้อมูลวันที่ที่มองเห็นเหมือนกัน อาจมีชนิดข้อมูลต่างกัน และวันที่ที่ Excel ยอมรับได้ก็ยังอาจไม่ใช่วันที่ที่ระบบต้นทางตั้งใจส่งมาครับ

ทำความเข้าใจวันที่: ค่าในเซลล์กับรูปแบบที่เห็น

Excel เก็บวันที่จริงเป็นตัวเลข Serial Number แล้วใช้ Number Format กำหนดว่าจะให้แสดงเป็นวัน/เดือน/ปีแบบใด เช่น 31/08/2026 หรือ 31-Aug-2026 ส่วนข้อความที่หน้าตาเหมือนวันที่ก็ยังเป็น Text ได้ครับ

สิ่งที่เห็นสิ่งที่ต้องตรวจสอบข้อควรจำ
31/08/2026เป็นตัวเลขวันที่จริงหรือ Text?หน้าตาอย่างเดียวบอกชนิดไม่ได้
20260831เป็นรหัสวันที่ 8 หลักหรือตัวเลขทั่วไป?ต้องรู้โครงสร้างต้นทางก่อนแปลง
03/04/2026ต้นทางใช้ DMY หรือ MDY?อาจแปลงได้แต่ได้คนละวัน
31/08/2569ปี พ.ศ. ใน Text หรือ Date ที่แสดงแบบไทย?อย่าบวกหรือลบ 543 โดยไม่ตรวจสอบ

ลองเลือกวันที่จริงแล้วเปลี่ยน Number Format เป็น General จะเห็นค่าตัวเลขภายในแทนรูปแบบวันที่ แต่หากค่าเดิมเป็น Text การเปลี่ยน Format เพียงอย่างเดียวจะไม่ทำให้กลายเป็น Date จริงครับ

วิธีตรวจสอบว่าเป็น Date จริง หรือเป็น Text

ก่อนแก้ไข ให้ตรวจสอบข้อมูลทีละแถว โดยเฉพาะไฟล์ที่มาจากหลายระบบ ตัวอย่างนี้ใช้คอลัมน์ B เป็นวันที่จากระบบ และคอลัมน์ C–D เป็นผลตรวจสอบครับ

ABCD
1Order IDวันที่จากระบบ=ISTEXT(B2) ↓=ISNUMBER(B2) ↓
2SO00131/08/2026TRUEFALSE
3SO00215/07/2026FALSETRUE
4SO00301/09/2026TRUEFALSE
5SO00420/08/2026FALSETRUE

ตารางตัวอย่างจำลอง: แถว 2 และ 4 เป็น Text ส่วนแถว 3 และ 5 เป็นวันที่จริง โดยต้องเตรียมชนิดข้อมูลให้ตรงตามคำอธิบายก่อนทดลองสูตร

เตรียมตัวอย่างให้ตรงชนิดข้อมูล: แถว 2 และ 4 ให้กรอกวันที่เป็น Text โดยตั้งเซลล์เป็น Text ก่อนพิมพ์ หรือใส่เครื่องหมาย ' นำหน้า ส่วนแถว 3 และ 5 ให้กรอกเป็น Date จริงใน Excel ตัวอย่างนี้แสดงชนิดข้อมูลที่เตรียมไว้ ไม่ใช่การรับประกันว่า Copy ตารางจากเว็บแล้ว Excel จะรักษาชนิดข้อมูลเดิมทุกครั้งครับ

วิธีที่ 1: ใช้ ISTEXT และ ISNUMBER

ใส่สูตรใน C2 และ D2 แล้วลากลงมาทั้งคอลัมน์

fx   ตรวจว่า B2 เป็น Text
=ISTEXT(B2)
fx   ตรวจว่า B2 เป็นตัวเลข
=ISNUMBER(B2)

ISTEXT = TRUE หมายถึงเป็นข้อความ ส่วน ISNUMBER = TRUE หมายถึงเป็นตัวเลข ซึ่งวันที่จริงก็เป็นตัวเลขเช่นกันครับ

วิธีที่ 2: เปลี่ยน Format เป็น General

เลือกเซลล์วันที่ แล้วไปที่ Home → Number Format → General

ผลที่เห็นการตีความ
เปลี่ยนเป็น Serial Numberค่าเป็นตัวเลขที่ถูกจัดรูปแบบเป็นวันที่
ยังเป็นข้อความเดิมมีโอกาสสูงว่าเป็น Text

การตรวจนี้ช่วยแยกชนิดข้อมูล แต่ยังต้องตรวจว่าตัวเลขนั้นเป็นวันที่ที่ถูกต้องตามงานด้วยครับ

ทำไมไม่ใช้ =B2+1 เป็นตัวตรวจหลัก?

เพราะ Excel อาจแปลงข้อความบางรูปแบบให้เป็นวันที่ระหว่างการคำนวณได้ การที่สูตรบวก 1 สำเร็จจึงไม่ได้พิสูจน์ว่าค่าเดิมเป็น Date จริง และถ้าค่าเป็นตัวเลขทั่วไปก็อาจบวกได้เช่นกันครับ

ตรวจสองเรื่องแยกกัน: (1) ข้อมูลเป็น Number หรือ Text? (2) ค่านั้นเป็นวันที่ที่ถูกต้องตามข้อมูลต้นทางหรือไม่? การผ่านข้อแรกยังไม่รับประกันข้อที่สองครับ

เลือกวิธีแก้วันที่ให้ตรงกับปัญหา

ไม่ควรใช้สูตรเดียวกับวันที่ทุกแบบครับ ให้ดูชนิดข้อมูลและรูปแบบต้นทางก่อน แล้วเลือกวิธีที่เหมาะสมดังนี้

กรณี A · Text รูปแบบเดียวกัน

ใช้ Text to Columns หรือ DATEVALUE

ถ้าข้อมูลทั้งคอลัมน์เป็นข้อความแบบ DMY เช่น 31/08/2026 และทราบรูปแบบแน่นอน การใช้ Text to Columns จะช่วยระบุลำดับวันเดือนปีได้ชัดเจนครับ

  1. สำรองคอลัมน์ต้นฉบับ แล้วเลือกคอลัมน์สำเนาที่ต้องการแปลง
  2. ไปที่ Data → Text to Columns → Delimited
  3. กด Next จนถึงขั้นตอน Column data format
  4. เลือก Date แล้วเลือก DMY, MDY หรือ YMD ให้ตรงกับต้นทาง
  5. กด Finish จากนั้นตรวจชนิดข้อมูลและวันที่ตัวอย่างอีกครั้ง

ถ้าต้องการเก็บข้อมูลเดิมไว้และสร้างคอลัมน์ใหม่ สามารถใช้ DATEVALUE หรือ VALUE ได้เมื่อ Excel ตีความข้อความนั้นได้ถูกต้องครับ

fx   แปลงข้อความวันที่ที่ Excel ตีความได้
=DATEVALUE(B2)
fx   อีกทางเลือกเมื่อข้อความอยู่ในรูปแบบที่ Excel รองรับ
=VALUE(B2)

ถ้าผลลัพธ์เป็น Serial Number ให้กำหนด Number Format เป็น Date ภายหลัง แต่ถ้าได้ #VALUE! หรือวันที่ไม่ตรงกับต้นทาง อย่าฝืนใช้สูตรเดิม ให้ตรวจรูปแบบก่อนครับ

กรณี B · YYYYMMDD

ใช้ DATE ประกอบปี เดือน และวัน

สมมติ B2 เป็นรหัสวันที่ 20260831 ซึ่งระบบต้นทางยืนยันว่าเรียงเป็นปี ค.ศ. 4 หลัก ตามด้วยเดือนและวันอย่างละ 2 หลัก

fx   แปลง YYYYMMDD เป็น Date
=DATE(VALUE(LEFT(B2,4)),VALUE(MID(B2,5,2)),VALUE(RIGHT(B2,2)))

สูตรนี้แยกปี 2026 เดือน 08 และวัน 31 แล้วนำมาสร้างเป็นวันที่จริง โดยไม่ต้องให้ Excel เดารูปแบบวัน/เดือนจากข้อความที่มีเครื่องหมายคั่นครับ

ระวัง: DATE สามารถปรับค่าบางกรณีที่วันหรือเดือนเกินช่วงให้เลื่อนไปเดือนหรือปีอื่นได้ จึงควรตรวจสอบข้อมูลต้นทางและค่าที่แปลงแล้ว โดยเฉพาะข้อมูลที่ไม่รับประกันว่าเป็นวันที่ถูกต้องครับ
กรณี C · วันที่เป็น Number อยู่แล้ว

อย่าแปลงซ้ำโดยไม่จำเป็น

ถ้า ISNUMBER ได้ TRUE และตรวจสอบแล้วว่าเป็นวันที่ที่ถูกต้อง สามารถใช้ค่าดังกล่าวคำนวณต่อได้เลย หากต้องการแยกปี เดือน หรือวัน ให้ใช้ YEAR, MONTH และ DAY ตามปกติ

fx   แยกปีจากวันที่จริง
=YEAR(B2)
fx   แยกเดือนจากวันที่จริง
=MONTH(B2)
fx   สร้างวันที่ใหม่จากวันที่จริง
=DATE(YEAR(B2),MONTH(B2),DAY(B2))

สูตร DATE(YEAR(...),MONTH(...),DAY(...)) เหมาะกับการประกอบวันที่ใหม่จากค่าที่ Excel อ่านเป็นวันที่ได้อยู่แล้ว ไม่ใช่วิธีแก้ Text ทุกชนิด และหากมีเวลาอยู่ในเซลล์ สูตรนี้จะสร้างวันที่โดยไม่เก็บส่วนเวลาไว้ครับ

กรณี D · รูปแบบต่างประเทศ / พ.ศ.

ตรวจ DMY, MDY และปีต้นทางก่อนแปลง

ข้อความต้นทางรูปแบบความหมาย
31/08/2026DMY31 สิงหาคม 2026
08/31/2026MDY31 สิงหาคม 2026
2026/08/31YMD31 สิงหาคม 2026
03/04/2026ยังไม่ทราบอาจเป็น 3 เมษายน หรือ 4 มีนาคม

ควรตรวจเอกสารระบบต้นทางหรือสอบถามผู้ส่งข้อมูลก่อน หากไม่มีข้อมูลกำกับ ลองตรวจวันที่ที่มีเลขวันมากกว่า 12 เพื่อช่วยระบุรูปแบบ แต่ไม่ควรใช้เพียงแถวเดียวฟันธงว่าทั้งไฟล์เหมือนกันครับ

สำหรับปี พ.ศ. ให้แยกระหว่าง การแสดงผลวันที่แบบไทย กับ ข้อความที่มีปี พ.ศ. จริง หากเป็นวันที่จริงที่เพียงแสดงปีแบบไทย ไม่ต้องนำไปลบ 543 อีก ส่วนการแปลงข้อความปี พ.ศ. ต้องทราบรูปแบบต้นทางและตรวจสอบผลลัพธ์ก่อนใช้งานครับ

กรณี E · ต้องทำซ้ำทุกเดือน

ใช้ Power Query เพื่อจัดการตั้งแต่ต้นทาง

ถ้าต้องรับไฟล์รูปแบบเดิมเป็นประจำ สามารถกำหนดขั้นตอนนำเข้าและแปลงชนิดข้อมูลใน Power Query ไว้ครั้งเดียว แล้ว Refresh เมื่อมีไฟล์ใหม่ได้ โดยควรระบุ Locale ให้ตรงกับรูปแบบวันที่ต้นทาง และตรวจสอบ Error หลังแปลงทุกครั้งครับ

อ่านต่อแบบละเอียด: แปลง Text เป็น Date Excel ในไม่กี่ขั้นตอน → มีวิธี Text to Columns, DATEVALUE และตัวอย่างสูตรสำหรับวันที่จากระบบอื่นครับ

ตัวอย่างงานจริง: คำนวณช่วงวันเมื่อข้อมูลถูกต้องแล้ว

สมมติฝ่าย Admin ต้องการหาจำนวนวันระหว่างวันเริ่มต้นและวันสิ้นสุดของงาน โดยกำหนดให้ B และ C เป็นวันที่จริงของ Excel และข้อมูลเริ่มที่แถว 2 ครับ

ABCDE
1รายการวันที่เริ่มต้นวันที่สิ้นสุดจำนวนวันรวมวันเริ่มต้น
2JOB00101/08/202605/08/202645
3JOB00210/08/202610/08/202601
4JOB00328/08/202602/09/202656

ตัวอย่างคำนวณช่วงวัน: B และ C เป็นวันที่จริง และ D/E เป็นตัวเลขจำนวนวัน

หาจำนวนวันระหว่างสองวันที่

ใส่สูตรใน D2 แล้วลากลงมาทั้งคอลัมน์

fx   จำนวนวันระหว่างวันเริ่มต้นกับวันสิ้นสุด
=C2-B2

JOB001 เริ่ม 1 สิงหาคมและสิ้นสุด 5 สิงหาคม จึงมีผลต่าง 4 วัน ส่วน JOB002 เริ่มและสิ้นสุดวันเดียวกัน ผลต่างเป็น 0 วันครับ

ถ้าต้องการนับรวมวันเริ่มต้นด้วย

ใส่สูตรใน E2 โดยใช้กติกาว่านับทั้งวันเริ่มต้นและวันสิ้นสุด

fx   จำนวนวันแบบรวมวันเริ่มต้น
=C2-B2+1

ดังนั้น JOB001 จะได้ 5 วัน และ JOB002 จะได้ 1 วันครับ

ข้อควรระวัง: สูตร +1 เหมาะกับการนับวันที่แบบรวมวันเริ่มต้นตามโจทย์นี้ ไม่ได้เหมาะกับทุกงาน หากข้อมูลมีเวลาอยู่ด้วย ผลต่างอาจเป็นทศนิยม ควรกำหนดก่อนว่าต้องการนับวันเต็ม จำนวนชั่วโมง หรือวันทำการ และตรวจสอบว่าค่าวันสิ้นสุดไม่น้อยกว่าวันเริ่มต้นครับ

ถ้าต้องการนับเฉพาะวันทำงาน

สามารถใช้ NETWORKDAYS เป็นอีกทางเลือก โดยค่าเริ่มต้นจะนับวันจันทร์–ศุกร์ และสามารถระบุช่วงวันหยุดเพิ่มเติมได้

fx   นับวันทำงานโดยไม่รวมวันหยุดที่ระบุ
=NETWORKDAYS(B2,C2,$H$2:$H$10)

ตัวอย่างนี้สมมติว่ามีรายการวันหยุดจริงอยู่ใน H2:H10 หากไม่มีตารางวันหยุด สามารถใช้ =NETWORKDAYS(B2,C2) ได้ครับ

Checklist: เช็กวันที่ก่อนนำไปทำ Pivot Table หรือ Dashboard

หลังแปลงข้อมูลแล้ว อย่าตรวจแค่สูตรว่าไม่ขึ้น Error ครับ ควรตรวจความถูกต้องของข้อมูลก่อนสร้างรายงานด้วย

สิ่งที่ต้องตรวจวิธีตรวจสอบ
ชนิดข้อมูลใช้ ISTEXT / ISNUMBER และตรวจค่าในคอลัมน์วันที่
ลำดับวัน–เดือน–ปีเทียบกับข้อมูลต้นทาง โดยเฉพาะวันที่ที่ตีความได้สองแบบ
ปี พ.ศ./ค.ศ.ตรวจว่าปีเป็นส่วนของข้อความหรือเป็นเพียงรูปแบบการแสดงผล
ค่าว่างและ ErrorFilter หาค่าว่าง, #VALUE! และข้อมูลที่แปลงไม่สำเร็จ
ช่วงวันที่ตรวจวันที่เก่า/ใหม่ผิดปกติ และเปรียบเทียบกับช่วงเวลาที่งานควรมีข้อมูล
ผลลัพธ์รายงานสุ่มเทียบจำนวนรายการและยอดรวมกับข้อมูลต้นทางก่อนส่งผู้บริหาร

ตัวอย่างสูตรช่วยตรวจช่วงวันที่

สมมติ B2 ควรเป็นวันที่จริงระหว่าง 1 มกราคม 2020 ถึง 31 ธันวาคม 2030 สามารถใช้สูตรนี้ช่วยคัดกรองได้ครับ

fx   ตรวจชนิดข้อมูลและช่วงวันที่ที่งานกำหนด
=IF(B2="","ยังไม่มีข้อมูล",IF(NOT(ISNUMBER(B2)),"ตรวจชนิดข้อมูล",IF(AND(B2>=DATE(2020,1,1),B2<DATE(2031,1,1)),"อยู่ในช่วงที่กำหนด","ตรวจช่วงวันที่")))

สูตรนี้เป็นเพียงตัวช่วยตรวจช่วงข้อมูลตามเกณฑ์ที่กำหนด ไม่ได้ยืนยันว่าตัวเลขทุกค่าคือวันที่ที่ถูกต้องตามเหตุการณ์จริง และควรปรับช่วงปีให้ตรงกับงานของคุณครับ

สรุปแนวคิด: Data Type ถูกต้อง → ตรวจวันที่กับต้นทาง → ตรวจค่าว่างและช่วงเวลา → ค่อยนำไปคำนวณหรือทำรายงาน การตรวจตั้งแต่ต้นจะช่วยลดโอกาสที่ความผิดพลาดเล็กๆ กลายเป็นปัญหาใหญ่ใน Dashboard ครับ

คำถามที่พบบ่อยเกี่ยวกับวันที่ใน Excel

วันที่ใน Excel เป็น Text ดูอย่างไร?

ใช้ ISTEXT ตรวจว่าเป็นข้อความ และ ISNUMBER ตรวจว่าเป็นตัวเลข หรือเปลี่ยน Format เป็น General เพื่อดูค่าภายใน ทั้งนี้ ISNUMBER เพียงอย่างเดียวไม่ได้ยืนยันว่าตัวเลขนั้นเป็นวันที่ที่ถูกต้องครับ

เปลี่ยน Format เป็น Date แล้วทำไมยังใช้สูตรไม่ได้?

เพราะการเปลี่ยนรูปแบบการแสดงผลไม่ได้เปลี่ยน Text ให้เป็น Date จริง ต้องตรวจชนิดข้อมูลและแปลงให้เหมาะกับรูปแบบต้นทางก่อนครับ

ใช้ VALUE หรือ DATEVALUE แล้วได้ #VALUE! ต้องทำอย่างไร?

ตรวจรูปแบบข้อความและ Regional Setting ก่อน หากทราบว่าต้นทางเป็น DMY, MDY หรือ YMD ให้ใช้วิธีที่ระบุรูปแบบได้ชัดเจน เช่น Text to Columns หรือ Power Query และตรวจผลลัพธ์กับข้อมูลต้นทางครับ

สูตร DATE(YEAR(A2),MONTH(A2),DAY(A2)) แก้ Text ได้ทุกแบบไหม?

ไม่ได้ครับ สูตรนี้เหมาะกับค่าที่ Excel อ่านเป็นวันที่ได้อยู่แล้ว หากต้นทางเป็นข้อความที่ Excel ไม่รู้จัก หรือมีรูปแบบวันเดือนปีไม่ตรงกับเครื่อง ควรแปลงจากรูปแบบต้นทางให้ถูกต้องก่อน

วันที่ พ.ศ. ต้องลบ 543 ทุกครั้งหรือไม่?

ไม่ครับ หากเป็นวันที่จริงที่เพียงแสดงผลด้วยปฏิทินไทย ไม่ต้องลบ 543 อีก การแปลงปีควรทำเมื่อทราบแน่ชัดว่าค่าต้นทางเป็นปี พ.ศ. ที่ต้องแปลงเป็นปี ค.ศ. และต้องตรวจสอบผลลัพธ์ด้วย

วันที่จริงแล้ว แต่ Pivot Table ยัง Group ไม่ได้ เกิดจากอะไร?

ควรตรวจข้อมูลทั้งคอลัมน์ว่ามี Text, ค่าว่าง, Error หรือข้อมูลที่ไม่ใช่วันที่ปะปนหรือไม่ รวมถึงตรวจว่าข้อมูลต้นทางถูกแปลงและ Refresh แล้ว และวิธี Group ที่ใช้รองรับกับรูปแบบ Pivot Table นั้นหรือไม่ครับ

สรุป: วันที่ถูกต้องคือพื้นฐานของรายงานที่น่าเชื่อถือ

เมื่อวันที่ใน Excel มีปัญหา ให้เริ่มจากตรวจชนิดข้อมูลก่อน จากนั้นตรวจรูปแบบวัน/เดือน/ปีและค่าต้นทาง แล้วเลือกวิธีแปลงที่เหมาะสม ไม่ควรเปลี่ยน Format หรือใช้สูตรเดาสุ่มกับข้อมูลจำนวนมากครับ

ถ้าข้อมูลเป็น Date จริงและตรวจสอบกับต้นทางแล้ว การคำนวณช่วงวัน การสรุปรายเดือน และการต่อยอดไป Pivot Table หรือ Dashboard ก็จะมีความน่าเชื่อถือมากขึ้นครับ

จำสั้นๆ: วันที่ดูถูกต้อง ≠ ชนิดข้อมูลถูกต้อง ≠ วันที่ตรงกับต้นทาง ต้องตรวจให้ครบทั้งสามเรื่องครับ

บทความที่เกี่ยวข้อง