วันอาทิตย์ที่ 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 โลด ได้วันที่ถูกใจกันไปเลย ^__^



Fill 0 in the blanks : จงเติม 0 ในช่องว่าง

จงเติม 0 ในช่องว่าง

หลาย ๆ ครั้งที่ทำรายงานมักจะได้ข้อมูลมาแบบเว้า ๆ แหว่ง ๆ ตามภาพนี้


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

วิธีทำก็ง่าย ๆ เลย

1. เลือกพื้นที่ข้อมูลทั้งหมดก่อน

2. กด F5 เลือก Special ...

3. เลือก Blanks แล้ว OK
4. บริเวณที่เป็นเซลล์ว่างจะถูกเลือกทั้งหมด (สังเกตได้จากเซลล์สีเทา)


5. พิมพ์ 0 แล้วกด Ctrl+Enter

6. เลข 0 ก็จะเต็มเซลล์ที่ว่างอยู่ทั้งหมด
สามารถประยุกต์ใช้ได้อีกหลากหลายเลยครับ เคยมีคนถามผมว่าแทนที่จะใส่เลข 0 ใช้คำว่า ไม่มี ได้ไหม คำตอบคือ ได้ครับ ก็เปลี่ยนข้อ 5. จากพิมพ์ 0 เป็น ไม่มี แทน แล้วกด Ctrl+Enter เหมือนเดิมเลยครับ
สำหรับ 1st blog ขอจบเท่านี้ก่อนนะครับ ^_^


วันพฤหัสบดีที่ 9 มกราคม พ.ศ. 2557

สวัสดีปีใหม่ 2557

... สวัสดีปีใหม่ 2557 ครับ ...

เริ่มต้นปีใหม่ ตั้งใจว่าจะทำสิ่งที่อยากทำให้สำเร็จเป็นชิ้นเป็นอันกับเขาบ้าง นั่นก็คือ การเขียนบล็อกให้สำเร็จสักเรื่องหนึ่ง (จากที่เคยทำทิ้ง ๆ ขว้าง ๆ) ครั้งนี้ตั้งใจจะทำบล็อกเกี่ยวกับ Excel แบบง่าย ๆ ตามแบบฉบับของผมเอง ให้สมกับชื่อ Excel บ้าน บ้าน ใช้แต่สูตรครับ เพราะว่าผมไม่ใช่ Excel expertist แต่อย่างใด ผมเขียน Macro, VBA ไม่เป็น ดังนั้นสูตรบางตัวอาจจะยาวไปบ้าง แต่ก็เพื่อให้เข้าใจเป็นขั้นตอนครับ และเพื่อให้ศึกษาตามได้ง่าย

ชอบหรือไม่ชอบ ดีหรือไม่ดี อย่างไรแล้ว ช่วย comment ให้ด้วยนะครับ หรือสามารถแลกเปลี่ยนความคิดเห็นกันได้ครับ เพราะการแก้ปัญหาไม่ได้มีคำตอบเพียงแค่ทางเดียว ^_^