วันอังคารที่ 24 สิงหาคม พ.ศ. 2553

vba excel ตอน date format และ datetime function

สวัสดีครับ บทความตอนนี้ผมขอเสนอรูปแบบและฟังก์ชันหนึ่งซึ่งมีประโยชน์และพบเจอมากที่สุด นั่นคือ date format และ datetime function จากบทความเกี่ยวกับการประมวลผลด้วย KPI ที่ได้นำเสนอแนวคิดของการประเมินผลงานด้วย KPI หรือ BalanceScoreCard มาแล้วนั้น ท่านผู้อ่านจะเห็นว่ายังไงแล้วการเขียน vba ของเราต้องเกี่ยวข้องกับข้อมูลด้านเวลาหรือรูปแบบวันที่แน่ๆ บทความนี้ผมเลยขอนำเสนอการกำหนด date format การใช้ datetime function ข้อควรระวังในการใช้งาน รวมถึงการแปลงข้อมูลจาก String to datetime format การ Convert string to datetime ยังพบปัญหาอยู่มากในการจัดการฐานข้อมูลทั้งใน excel เอง datetime ใน sql หรือ datetime ใน php เอาไว้จะเล่าให้ฟังในคราวต่อๆไปนะครับ

การกำหนด date format ให้กับ เซลล์ ใน worksheet คลิกเลือกเซลล์ที่ต้องการกำหนดรูปแบบใหม่จากนั้นก็คลิกเมาส์ปุ่มขวาแล้วเลือก จัดรูปแบบเซลล์ ก็จะปรากฎหน้าต่าง การจัดรูปแบบเซลล์ จะปรากฎหน้าต่าง การจัดรูปแบบเซลล์ ให้เลือกแท็บ ตัวเลข เลือก วันที่ ใน List box ประเภทและเลือกลักษณะของ date format ที่ต้องการ ดังแสดงในภาพที่ 1 คลิก OK ก็เสร็จสิ้นการกำหนดรูปแบบของวันแล้วครับ ง่ายดีมั้ยครับ นั่นหมายถึงว่าเราได้กำหนด date format ให้กับเซลล์ที่เราเลือกแล้วในตัวอย่างนี้หมายถึงว่า วันที่จะอยู่ในรูปแบบ dd/mm/yyyy โดย yyyy จะเป็นปี คศ นะครับอย่าลืม 24/8/2553 excel จะมองเป็นวันที่ 24 สิงหาคม คศ 2553 โว้ ต้องระวังนะครับ

Set Date formatภาพที่ 1 การกำหนด date format ให้กับเซลล์ที่เลือก

ทีนี้ผมจะลองยกตัวอย่างการจัดการกับระบบประเมินผล KPI ที่ได้กล่าวนำมาบ้างดูนะครับ สมมุติว่าข้อมูลการบันทึกผลชี้วัด KPI ถูกส่งมาจากหลายๆแผนกแน่นอนหล่ะครับ รูปแบบของวันที่ในข้อมูลของการบันทึกผล KPI อาจจะไม่เหมือนกัน เราผู้รวบรวมข้อมูลจะทำอย่างไรดีหล่ะครับ อันดับแรกผมแนะนำเลยครับ ให้แจ้ง date format ของเราให้ทุกแผนกได้รับทราบทั่วกันเลยครับ อันนี้อาจจะช่วยลดจำนวนรูปแบบของวันที่ไม่ตรงกับที่เราต้องการลงได้ระดับหนึ่ง

ฟังก์ชันที่น่าสนใจเกี่ยวกับ datetime

Day จะคืนค่าวันที่ของเดือนกลับมาให้เราครับ เช่น =DAY(24/8/2010) ก็จะคืนเลข 24 กลับมา

MONTH จะคืนค่าลำดับของเดือน(1-12) กลับมาให้เราครับ เช่น =DAY(24/8/2010) ก็จะคืนเลข 8 กลับมา

YEAR จะคืนค่าปีกลับมาให้เราครับ เช่น =DAY(24/8/2010) ก็จะคืนเลข 2010 กลับมา

WEEKDAY จะคืนค่าตัวเลขตั้งแต่ 1 –7 ซึ่งเป็นวันในสัปดาห์มาให้ครับ

TODAY() จะส่งกลับวันที่ปัจจุบันมาให้ครับ ก็จะคืน 24/8/2010

หากข้อมูลในเซลล์เป็นชนิดข้อความ (Text format) เราสามารถใช้ฟังก์ชัน DateValue ทำการ Convert string to datetime โดยมีรูปแบบการใช้ datetime function ดังนี้

DateValue(date_text) เช่น =DateValue(“24/8/2010”)

หรือสมมุติให้ เซลล์ B1 เป็นข้อมูลแบบ text มีข้อมูลเป็น 24/8/53 ดังนั้นหากเรากำหนดให้เซลล์ C1 = DateValue(B1) ผลลัพธ์จะได้ว่าเซลล์ C1 มีข้อมูลเป็นแบบ Datetime format โดยมีค่าเป็นวันที่ 24 เดือนสิงหาคม คศ. 2010

ครับจากที่ได้แนะนำท่านผู้อ่านมาข้อควรระวังนะครับให้ตรวจเช็ครูปแบบข้อมูลให้ถูกต้องก่อนนะครับ รูปแบบข้อมูลที่ได้จาก excel หลากหลายต้องถูกปรับให้อยู่ในรูปแบบ Datetime format เดียวกันก่อนนะครับก่อนนำไปประมวลผลต่อ มิฉะนั้นจะเกิดความผิดพลาดอย่างร้ายแรงได้นะครับ เอาหล่ะครับมาถึงปัญหาหนึ่งที่เราพบ หากต้องการนับระยะห่างระหว่างวันสองวันจะทำอย่างไรหล่ะครับ เช่น ระยะห่างตั้งแต่วันที่ 24/8/53 ถึง 1/9/53 เราจะใช้ datetime function ตัวไหนมาจัดการ เดี่ยวรอติดตามในบทความต่อไปครับ

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

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

Yahoo bot last visit powered by  Ybotvisit.com