วันจันทร์ที่ 27 กุมภาพันธ์ พ.ศ. 2555

เราแสดงเวลาแบบ Realtime ใน excel ได้อย่างไร (How to show real time in excel)

การใช้ excel ในบทความวันนี้ ผมขอเสนอการแสดงเวลาแบบ real time ใน worksheet ต่างๆ ซึ่งจะอาศัยการเขียนด้วย vba โดยอาศัยสูตร excel ต่างๆ ซึ่งคิดว่าจะเป็นประโยชน์กับท่านผู้อ่านสำหรับนำไปประยุกต์การใช้ excel ในด้านต่างๆ เช่น การตัดสต๊อกสินค้าที่เวลาใดๆในแต่ละวัน การเขียนคำสั่งให้ excel ทำงานที่เวลาต่างๆเป็นต้น ซึ่งผมจะนำเสนอในบทความต่อๆไปครับ วันนี้เรามาดูตัวอย่างง่ายๆของการใช้ excel แสดงเวลาแบบ real time ในเซลล์ใดๆ โดยจะดักจับเหตุการณ์ Ontime สำหรับการสั่งให้ฟังก์ชันของ excel ปรับปรุงเวลาอยู่ตลอดเวลา โดยฟังก์ชัน Ontime จะมีรูปแบบของสูตร excel ดังนี้ครับ

.OnTime(EarliestTime, Procedure, LatestTime, Schedule)

เมื่อ

EarliestTime คือค่าเวลาที่เราต้องการให้กระบวนการใดๆของเราทำงาน

Procedure คือกระบวนการใดๆที่เราต้องการให้ทำงานเมื่อถึงเวลาที่กำหนด

LatestTime คือค่าเวลาสุดท้ายที่เราต้องการให้กระบวนการใดๆทำงาน

Schedule คือ การกำหนดสำหรับการเรียกใช้เหตุการณ์ Ontime มีค่าเป็น true หากต้องการเรียกใช้เหตุการณ์ Ontime มีค่าเป็น false หากต้องการยกเลิก เหตุการณ์ Ontime

เอาหล่ะครับ หากผมต้องการให้แสดงเวลาแบบ real time ที่มีรูปแบบเป็น h:mm:ss ในเซลล์ B1 ของ worksheet ชื่อ Sheet1 เราสามารถเขียนกระบวนการทำงานนี้โดยใช้วางฟังก์ชันไว้ที่โมดูลใดๆได้ดังนี้ครับ

Sub mytime()

Worksheets(“Sheet1”).Cells(1,2).Value = Format(Now,”h:mm:ss”)

End Sub

เมื่อ Now คือสูตร excel ที่ใช้แสดงเวลาในปัจจุบัน

จากนั้นหากเราต้องการให้แสดงเวลาตั้งแต่ตอนเปิดไฟล์ excel เราต้องเรียกกระบวนการ mytime ตั้งแต่เกิดเหตุการณ์ เปิดไฟล์ excel ซึ่งจะถูกกำหนดในฟังก์ชัน Workbook_Open โดยเราจะเขียนโค้ดโปรแกรมในฟังก์ชัน Workbook_Open ซึ่งอยู่ในส่วนของ ThisWorkbook ได้ดังนี้

Private Sub Workbook_Open()
Application.OnTime Now + TimeValue("0:0:1"), "mytime"
End Sub

เมื่อ สูตร excel :TimeValue เป็นสูตรสำหรับการแปลงข้อความเป็นค่าเวลาในหน่วย ชั่วโมง :นาที: วินาที

การที่จะให้กระบวนการ mytime ทำงานทุกๆ 1 วินาที จะต้องปรับแก้กระบวนการ mytime ให้เรียกตัวเองอยู่เสมอ จึงต้องปรับแก้ไขดังนี้

Sub mytime()

Worksheets(“Sheet1”).Cells(1,2).Value = Format(Now,”h:mm:ss”)

Application.OnTime Now + TimeValue("0:0:1"), "mytime"

End Sub

สุดท้ายครับเราต้องยกเลิกการดักจับเหตุการณ์ Ontime ก่อนที่จะปิดไฟล์ excel ครับ ซึ่งเราจะเขียนโปรแกรมยกเลิกการดักจับเหตุการณ์ Ontime ในเหตุการณ์ก่อนปิดไฟล์ excel ซึ่งจะใช้ฟังก์ชัน Workbook_BeforeClose ซึ่งอยู่ในส่วนของ ThisWorkbook ได้ดังนี้

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.OnTime Now + TimeValue("0:0:1"), "mytime", False
End Sub

เรามาดูผลการทำงานของกระบวนการแสดงผลเวลาแบบ real time ในการใช้ excel ของเรากันเลยครับ

การใช้ excel

ภาพที่ 1 ฟังก์ชัน excel ในส่วนของ ThisWorkbook

การใช้สูตร excel-1ภาพที่ 2 กระบวนการ mytime ในส่วนของ Module1

ผลการใช้สูตร excel

ภาพที่ 3 การแสดงเวลาแบบ Real Time ใน excel

หากท่านผู้อ่านดำเนินการมาถึงขั้นตอนนี้ เมื่อท่านทดลองเปิดไฟล์ excel ดังกล่าวขึ้นมาท่านจะพบเวลาในเซลล์ B1 แสดงแบบ Real Time ครับ ก็ดูเก๋ไปอีกแบบนะครับ หากเรานำไปประยุกต์ใช้กับงานอื่นๆก็คงจะไม่ยากมากนัก ก็เพราะตอนนี้เราสามารถกังจับและควบคุมเวลาใน excel ของเราได้แล้วนั่นเองครับ แล้วมาพบกันในบทความเกี่ยวกับการใช้ excel หรือ vba excel ได้ใหม่นะครับ สวัสดีครับ


วันเสาร์ที่ 4 กุมภาพันธ์ พ.ศ. 2555

การใช้ excel แก้ปัญหาการลบช่องว่างในข้อความไม่ได้

การใช้ excel ฉบับนี้อาจจะย้อนไปกล่าวถึงปัญหาการใช้สูตร excel : Trim เพื่อลบช่องว่างภายในข้อความก่อนนำข้อความดังกล่าวไปค้นหาในสูตร excel :vlookup ซึ่งในบทความฉบับนั้นได้กล่าวถึงการแก้ปัญหาโดยการใช้สูตร excel : left เนื่องจากเราทราบจำนวนอักขระที่ต้องการไปใช้งานที่แน่นอนนั่นเองครับ ปัญหาที่เราไมสามารถลบช่องว่างหรือหาตำแหน่งช่องว่างในข้อความไม่ได้นั้น โดยส่วนใหญ่จะพบในข้อความที่เราได้มากจาก Aplication อื่นๆ เช่น website หรือโปรแกรมทางธุรกิจอื่นๆ เช่น Express เป็นต้น การใช้ excel การแก้ปัญหาดังกล่าว จะเริ่มจากตรวจสอบอักขระที่เป็นช่องว่างดังกล่าวก่อนโดยใช้สูตร excel : code เพื่อตรวจสอบรหัส Ascii ของช่องว่างดังกล่าว โดยทั่วไปหากเป็นช่องว่างที่เกิดจากการเคาะ space bar หลายๆครั้ง สูตร excel : code จะคืนค่ารหัส Ascii = 32 มาให้ ซึ่ง เราสามารถใช้สูตร excel : trim ในการจัดการลบช่องว่างหรือใช้สูตร excel :find ในการค้นหาตำแหน่งของช่องว่างดังกล่าวเพื่อใช้ในการแบ่งข้อความนั้น แต่ปัญหาที่พบคือช่องว่างในข้อความที่มาจากโปรแกรมอื่น เช่น website หรือ การส่งออกมาจากโปรแกรมประมวลผลอื่นๆเช่น express ช่องว่างดังกล่าวหากใช้สูตร excel : code ตรวจสอบดูจะพบมีรหัส ascii = 160 ซึ่งเป็นวิธีการพิมพ์ &nbsp โดยเราจะเรียกการพิมพ์ลักษณะนี้ว่า Soft Space โดย Soft Space จะไม่สามารถใช้สูตร excel : trim ลบออกจากข้อความได้ ในการใช้ excel แก้ปัญหาดังกล่าวก่อนนำข้อความดังกล่าวไปประมวลผลต่อในการใช้ excel เราสามารถใช้สูตร excel ได้ดังนี้
  1. ใช้สูตร excel : SUBSTITUTE เพื่อแทนที่ Soft Space ด้วย ช่องว่าง
ตัวอย่างการใช้ excel
สมมุติเรามีข้อความที่ได้จากโปรแกรม express ในเซลล์ B2 โดยเป็นชื่อและนามสกุลของลูกค้า
ใช้สูตร excel : SUBSTITUTE ในเซลล์ C2 เพื่อแทนที่ Soft Space ด้วยช่องว่าง โดยเขียนสูตร excel ได้ดังนี้ C2 =SUBSTITUTE($B2,CHAR(160)," ") โดยสูตร excel : char จะคืนค่า Soft Space กลับมา
ใช้สูตร excel : left และ right ในเซลล์ D2 และ E2 เพื่อแยกชื่อและนามสกุลของลูกค้า
สูตร excel แยกชื่อ
D2 = LEFT($C2,FIND(" ",$C2)-1) สูตร excel : find ใช้หาตำแหน่งช่องว่างในข้อความ
สูตร excel แยกนามสกุล
E2 = RIGHT($C2,LEN($C2)-FIND(" ",$C2)-1)
การใช้ excel
ภาพที่ 1 ตัวอย่างการใช้สูตร excel
หวังว่าท่านผู้อ่านจะนำไปใช้แก้ปัญหาในการใช้ excel ของท่านผู้อ่านได้นะครับ อย่าลืมว่าการนำข้อมูลหรือข้อความมาจากโปรแกรมอื่นจะต้องตรวจสอบความถูกต้องของข้อมูลหรือรูปแบบของข้อมูลให้ดีก่อนนะครับ แล้วพบกันใหม่กับบทความเกี่ยวกับการใช้ excel ครับ สวัสดีครับ
Yahoo bot last visit powered by  Ybotvisit.com