วันอาทิตย์ที่ 19 มกราคม พ.ศ. 2557

Date or Not??? วันที่ไม่เป็นวันที่

วันที่ไม่เป็นวันที่

จากประสบการณ์ตรงของผม ผมมักจะได้รับรายงาน Excel จากบริษัทอื่น ๆ ซึ่งมักจะมีรูปแบบวันที่ไม่เหมือนกับหน้าตาที่ใช้เอง แต่หากจัด Format ใหม่ ก็จะเปลี่ยนหน้าตาที่ไม่คุ้นเคย ให้กลายเป็นแบบที่ใช้เองได้ไม่ยากนัก

เช่น บริษัทอื่นอาจใช้รูปแบบวันที่ ค.ศ./เดือน/วัน แต่ผมใช้ วัน/เดือน/ค.ศ.


แต่กระนั้นก็ตาม ยังไม่วายเกิดปัญหาใหญ่จนได้ เนื่องจากว่าหากดึงข้อมูลออกจากระบบ ข้อมูลทุกอย่างยกเว้น จำนวนเงิน จะถูกบันทึกในรูปแบบตัวอักษร (Text) ทั้งหมดเลย พอเปลี่ยน Format ก็จะกลายเป็นเครื่องหมาย # ยาวเหยียดเลย


เอาล่ะสิ แล้วจะทำไงล่ะทีนี้ จะมานั่งแก้ที่ละเซลล์คงไม่ไหว และก็มีโอกาสที่จะพิมพ์ผิดอีกด้วย ถ้างั้นก็คงต้องใช้สูตรช่วยสักหน่อยละ

แต่ก่อนจะใช้สูตร ต้องเข้าใจโครงสร้างของวันที่ก่อน


ในตัวอย่างผมต้องการพิมพ์วันที่ 14 July 2013 โดยจัด Format แบบ Short date หากพิมพ์ข้อมูลในแบบที่ 1, 2, 4 และ 5 จะได้ข้อมูลวันที่ ที่ถูกต้อง หากพิมพ์แบบที่ 3 จะได้เครื่องหมาย # แสดงว่าพิมพ์แบบไม่มีเครื่องหมายคั่นใช้ไม่ได้ ส่วนแบบที่ 6 และ 7 ใช้เครื่องหมายคั่นเป็น . ก็ใช้ไม่ได้ แบบที่ 8 และ 9 เจตนาคือจะพิมพ์เป็น ปี เดือน วัน แต่ในเมื่อรูปแบบที่เราจัดเป็น วัน เดือน ปี มันก็เลยขึ้นวันที่อื่นขึ้นมา ซึ่งจะทำให้ได้ค่าที่ผิด จะต้องมีการจัด Format ใหม่ ส่วนแบบที่ 10 ก็จะเหมือนกับแบบที่ 3 ใช้ไม่ได้

สรุปว่า รูปแบบวันที่หากเราจะกำหนดให้เป็นแบบ วัน เดือน ปี แล้ว ก็จะมีรูปแบบคือ วัน/เดือน/ปี หรือ วัน-เดือน-ปี

ร่ายมาตั้งนาน แค่จะบอกว่า วันที่ครบชำระ ในตัวอย่างของผมมันไม่ใช่วันที่ ><" แต่มันเป็นตัวหนังสือ ต้องหาทางทำให้มันเป็นวันที่ก่อน เริ่มเลยละกัน

1. สังเกตว่าในช่อง วันที่ครบชำระ จะมีตัวอักษรอยู่ 8 ตัว โดยเป็นแบบ ปี เดือน วัน ติดกันไม่มีเครื่องหมายคั่น ลองจินตนาการตามผมดูว่า เราจะจับมันแยกออกเป็น 3 กลุ่ม แล้วเอาเครื่องหมาย / ไปแทรก เพื่อให้มันกลายเป็นวันที่นั่นเอง

2. เริ่มแยกปี ค.ศ.ด้วย left ซึ่งจะส่งค่าจากซ้ายสุดมาแสดงผล


=left(C4,4) หมายถึงเอาค่าจากซ้ายสุดในเซลล์ C4 มาแสดงผล 4 ตัว ก็จะได้ 2013
สมมติถ้าเราเปลี่ยนเป็น =left(C4,5) ก็จะได้ผลลัพธ์ 20131 ออกมาแทน
เริ่มเห็นปลายทางบ้างล่ะ

3. แยกเดือนซึ่งเป็นตัวอักษรในตำแหน่งที่ 5 และ 6 จำนวน 2 ตัว โดยใช้ mid


=mid(C4,5,2) หมายถึงเอาค่าจากเซลล์ C4 นับตัวแรกในตำแหน่งที่ 5 มาแสดงผล 2 ตัว จึงได้ค่าเป็น 11 สมมติถ้าเปลี่ยนเป็น =mid(C4,3,4) เอาค่าจากเซลล์ C4 นับตัวแรกในตำแหน่งที่ 3 มาแสดงผล 4 ตัวก็จะได้ผลลัพธ์ 1311 ออกมาแทน

4. แยกปีซึ่งเป็นตัวอักษรในตำแหน่งที่ 7 และ 8 คราวนี้ก็ไม่ยากแล้วสิ ใช้ mid เหมือนเดิม



5. คราวนี้ก็ได้ครบล่ะ วัน เดือน ปี ก็จับมารวมกันโดยใช้ date






=date(ปี,เดือน,วัน) ตามรูปแบบสูตรไปเลยครับ ก็จะได้วันที่ตาม Format ที่ถูกต้อง

เฮ้ออ........... เหนื่อยตั้งนาน พิมพ์ใหม่น่าจะง่ายกว่ามั้ย ........... ขอบอกไว้เลยครับ เหนื่อยในวันนี้ วันหน้าก็ไม่ต้องแก้ไขงานแล้วครับ copy & paste โลด ได้วันที่ถูกใจกันไปเลย ^__^



ไม่มีความคิดเห็น:

แสดงความคิดเห็น