วันอังคารที่ 29 เมษายน พ.ศ. 2557

Excel กับ การหาผลรวมของเลขเรียง บวกจนได้เลขโดด หนึ่งเดียว

Excel กับ การหาผลรวมของเลขเรียง บวกจนได้เลขโดด หนึ่งเดียว ได้เวลาเรียน vba อีกแล้วน่ะครับ วันนี้จะสอนใช้ vba ช่วย Excel ของเราครับ จริงๆ... thumbnail 1 summary

Excel กับ การหาผลรวมของเลขเรียง บวกจนได้เลขโดด หนึ่งเดียว

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

สิ่งสำคัญของการนำ Excel ไปประยุกต์ใช้ในงานด้านต่างๆ นั้น อยู่ที่ว่าเราเข้าใจลักษณะของงานนั้นหรือเปล่า เข้าใจขั้นตอนของการคำนวณในงานนั้นหรือไม่ ถ้าเราเข้าใจเราสามารถนำเอาฟังก์ชั่น ที่มีใน Excel มาแก้ปัญหาได้แน่ครับ ถ้าฟังก์ชั่นที่ Excel ให้มาไม่พ เราก็ใช้ vba (visual basic for application ) แทนก็ได้ครับ

ตัวอย่าง Excel วันนี้ เหมาะกับผู้เริ่มใช้ Excel เขียน vba เป็นอย่างยิ่งครับ เพราะไม่ยากนั่นเอง

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

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

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

เช่น 3388 นำไปบวกกันจะได้ 3+3+8+8 เท่ากับ 22 แล้วนำ 22 ไปบวกอีกจนได้เลขโดด จะได้ 2+2 เท่ากับ 4 ผลลัพธ์สุดท้ายนี้เราจะนำไปทำนายเกี่ยวกับรถยนต์ว่าเป็นยังไงตามตำราโหราศาสตร์ เลขศาสตร์ เป็นต้น

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

ขั้นตอนแรก ก็เปิด Excel ขึ้นมาครับ

ขั้นตอนที่สอง คลิ้กที่แท็บ Developer จากนั้นคลิ้กที่ เครื่องมือ Insert แล้วเลือก ปุ่ม button มา 1 ตัว แล้วนำมาวางบริเวณ เซลล์ A3 กับ A4 จากนั้นคลิ้กขวาที่ button ตัวนี้ แล้วเลือก Edit text แล้วพิมพ์คำว่า “บวกตัวเลข” เข้าไป ดังภาพด้านล่างครับ




ขั้นตอนที่สาม กด Alt+F11 เพื่อเข้าสู่โหมดการเขียนโค้ด vba

พิมพ์โค้ดต่อไปนี้ลงไปครับ

Sub Macro1()

Dim mylen1 As Integer

Dim keeptotal1 As Integer

Range("A2").Value = ""

If Len(Range("A1").Value) = 1 Then

Range("a2").Value = Range("A1").Value

End If

If Len(Range("A2").Value) <> 1 Then

For mylen1 = 1 To Len(Range("A1").Value)

keeptotal1 = keeptotal1 + Mid(Range("A1").Value, mylen1, 1)

Range("A2").Value = keeptotal1

Next

End If

macro2

End Sub



Sub macro2()

If Len(Range("a2").Value = 2) Then

Range("A2").Value = Val(Mid(Range("A2").Value, 1, 1)) + Val(Mid(Range("A2").Value, 2, 1))

End If

If Len(Range("a2").Value = 3) Then

Range("A2").Value = Val(Mid(Range("A2").Value, 1, 1)) + Val(Mid(Range("A2").Value, 2, 1)) + Val(Mid(Range("A2").Value, 3, 1))

End If

End Sub



จากนั้นกด Alt+F11 อีกครั้ง เพื่อกลับมายัง Excel

คลิ้กขวาที่ปุ่ม button แล้วเลือกคำสั่ง Assign macro…

จากนั้นเลือก macro1 แล้วกด ok

เป็นอันว่าเสร็จสิ้นขั้นตอนการเขียนโปรแกรมนี้ครับ

ทดสอบการทำงานของโปรแกรม

ให้เราลองป้อนตัวเลข ป้อนติดกันน่ะครับ ป้อนในช่อง A1 เช่นในตัวอย่างป้อนตัวเลข 14566 จากนั้นคลิ้กที่ปุ่ม “บวกตัวเลข” 1 ครั้ง ที่ช่องผลลัพธ์ ในที่นี้คือช่อง A2 จะได้คำตอบคือ 4

ซึ่งเกิดจากการที่ โปรแกรมเอา ตัวเลข 14566 มาบวกกันคือเอา 1+4+5+6+6 แล้วได้เท่ากับ 22 แล้วเอา 2+2 ได้เท่ากับ 4 นั่นเองครับ...ให้ลองป้อนตัวเลขอื่นๆดูเพื่อทดสอบโปรแกรมนี้ครับ ถ้าไม่มีอะไรผิดพลาดก็ถือว่าโปรแกรมนี้ใช้ได้ เราไม่ต้องมานั่งบวกเลขเองอีกต่อไปครับ....

อธิบายเกี่ยวกับโค้ดโปรแกรม

โปรแกรมนี้มีการสร้าง macro ขึ้นมา 2 ตัว

โดยในส่วน Macro1 เราสร้างมาเพื่อหาความยาวของตัวเลขที่ผู้ใช้ป้อนในช่อง A1 หรือเซลล์ A1 จากนั้น ใช้คำสั่ง Mid ดึงตัวเลขออกมาบวกทีละตัว

รายละเอียดของคำสั่ง mid ผมเคยอธิบายไว้ในเว็บแล้ว ให้ลองค้นหาดูนะครับ

ส่วนฟังก์ชั่น Len คือฟั่งชั่นหาความยาวของข้อความ หรือ ตัวเลขที่ป้อนเข้าในเซลล์ใดๆครับ ฟังก์ชั่นนี้ก็เคยกล่าวไปแล้วในเว็บเช่นกัน

ในส่วน Macro2 สร้างขึ้นมาเพื่อนำเอาผลลัพธ์ในเซลล์ A2 มาบวกกัน ในกรณีที่การหาผลรวมใน Macro1 นั้นได้เลขออกมา 2 หลักขึ้นไปครับ

อย่างเช่นจากตัวอย่าง บวกได้ 22 แล้ว แต่เราต้องบวกต่อ เราก็ให้ macro2 จัดการนำ 22 มาบวกต่อจนได้ 4 เป็นต้น แต่ในกรณีที่ macro1 คำนวณตัวเลขที่ผู้ใช้ ป้อนเข้ามาแล้วได้ 3 หลักขึ้นไป เช่น 315 macro2 ก็บวกได้เช่นกันครับ แต่ถ้าเกิน 3 หลักไปแล้วไม่สามารถบวกได้ครับ เพราะว่าเราเขียนตรวจสอบแค่ 3 หลักเท่านั้นเองครับ แต่ไม่ต้องเป็นห่วงครับ เพราะจากการทดสอบดู การคำนวณเลขดวงต่างๆ ไม่เคย บวกแล้วเหลือเกิน 3 หลักสักที...

Excel 2010 plus กับ การปัดเศษขึ้นด้วย ฟังก์ชั่น Roundup และ กำหนดจำนวนทศนิยมด้วยตนเอง

Excel 2010 plus กับ การปัดเศษขึ้นด้วย ฟังก์ชั่น Roundup และ กำหนดจำนวนทศนิยมด้วยตนเอง ขึ้นชื่อว่า Excel งานส่วนใหญ่ก็ต้องเกี่ยวกับตัวเลขอย... thumbnail 1 summary

Excel 2010 plus กับ การปัดเศษขึ้นด้วย ฟังก์ชั่น Roundup และ กำหนดจำนวนทศนิยมด้วยตนเอง

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

Excel เนี่ยมันมีอะไรให้เล่นเยอะเหมือนกัน ยิ่งเวอร์ชั่น 2010 (ทั้งที่ตอนนี้ปี 2014 แล้วน่ะ ) มีฟังก์ชั่นมาให้ใช้เพียบ กล่าวกันไม่หวาดไม่ไหวทีเดียว (ขนาดนั้นเลย)

ก่อนจะเข้าสู่เนื้อหาตามที่ขึ้นหัวข้อไว้ในวันนี้ ผมว่าเราลองย้อนอดีตไปเมื่อสักยุคหลายๆสิบปีก่อนที่จะมี Excel กันเถอะ ลองจินตนาการซิว่า เวลาเราจะทำงานอะไรที่ต้องใช้ ตารางที่มีการคำนวณ งานคำนวณ งานการเงิน การธนาคาร งานด้านตัวเลขต่างๆ ว่ามันยุ่งยากขนาดไหน ลองนึกดูเล่นๆครับ คงพอจะเห็นภาพแล้วใช่ไหมครับ ว่า มันยุ่งจริงๆเชียว เวลาตัวเลขเยอะๆนี่หัวหมุนแน่ แถมถ้าหากต้องทำสรุปพิมพ์ออกมาเป็นรายงานแบบสวยงาม คงไม่ต้องพูดถึง คงทำไม่ได้ หรือ ได้แต่คงแทบจะคางเหลืองตาย... ถ้าไม่ชอบคณิตศาสตร์ไม่ชอบตัวเลข แล้วต้องมาทำงานด้านตัวเลขที่ต้องมีการปัดเศษขึ้น ปัดเศษลงนี่คงยุ่งยากลำบากใจไม่ใช่น้อยเลย ถ้าเลขมีแค่ไม่กี่หลัก ก็คงไม่ใช่เรื่องยุ่งเท่าไหร่ แต่ถ้าเลขเยอะๆละ น่าเบื่อแย่เลย เช่น ถ้าอยากปัดเศษตัวเลข 89426.7894563 ปัดขึ้นให้เหลือแค่ทศนิยม 3 ตำแหน่ง หรือ 4 ตำแหน่ง เป็นต้น

โอเค ถ้ามันมีแค่เลขชุดเดียว เราก็ปัดด้วยตัวเองก็ได้ แต่ถ้ามันมีเลขเยอะล่ะ เช่น





 

ยกตัวอย่างแค่นี้พอน่ะครับ เห็นตัวเลขด้านบนที่ยกตัวอย่างมาใช่ไหมครบ ว่ามันเยอะแค่ไหน น่าปวดหัวตึ๊บแค่ไหน ถ้าไม่มีโปรแกรมอย่าง Excel รับรอง งานนี้จะกลายเป็นงานช้างทันทีครับ

จากเลขข้างตนที่ให้ไว้ ตัวเลขตัวแรกถูกพิมพ์ไว้ที่ เซลล์ a1 บนโปรแกรม Excel นั่นคือตัวเลข 14.63204และตัวเลขสุดท้ายถูกพิมพ์ไว้ที่เซลล์ j18 คือเลข 140.3228 ตัวเลขอื่นๆก็อย่างที่เห็นในภาพด้านบน

หากเราต้องการจะปัดเศษตัวเลขทุกตัวที่อยู่ในเซลล์ตั้งแต่ A1 ถึง j18 (ปัดทุกตัวเลขเลยน่ะครับ ทุกช่อง คือตั้งแต่ a1 a2 a3….a18, b1 b2 b3….b18,c,d,e,f,g,h,I,…….j1 j2 j3….j18) โดยปัดขึ้น ให้เหลือทศนิยมแค่ 3 ตำแหน่งเท่านั้น โดยใช้ Excel โดยผลลัพธ์ที่ได้หลังจากปัดแล้ว สมมุตว่าเราต้องการจะให้ปรากฏที่ช่อง L1 ถึง U18 (L1:U18) เราก็แค่พิมพ์สูตรที่ช่อง L1 ว่า =Roundup (a1,3) แล้วกด Enter เราจะได้ผลลัพธ์ที่ช่อง L1 เท่ากับ 14.633 (ถูกปัดมาจากช่อง a1ที่มีค่า 14.63204)

จากนั้นเราก็ auto fill สูตรที่อยู่ที่ช่อง L1 ให้กับ เซลล์ที่เหลือ จนถึงเซลล์ U 18 ผลลัพธ์ที่ได้ก็คือ เลขทุกตัวถูกปัดเศษขึ้นคงเหลือทศนิยมแค่ 3 ตำแหน่งเท่านั้น ดังภาพผลลัพธ์ด้านล่างครับ


อธิบายเรื่องการ auto fill นิดหนึ่งน่ะครับ สำหรับมือใหม่ ... การ auto fill บน Excel คือ การ ก๊อปปี้สูตรจากเซลล์หนึ่งไปยังเซลล์อื่นๆ อย่างเช่นเราจะ auto fill สูตรจากช่อง L1 ไปใส่ช่องอื่นๆ จนถึงช่อง U18 ให้เราทำอย่างนี้ครับ

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

อย่างเช่น จากตัวอย่างนี้ ที่ช่อง L1 เราพิมพ์สูตรว่า =Roundup(a1,3)

พอเรา auto fill มาที่ช่อง L2 ซึ่งเป็นช่องว่างๆ ช่อง L2 จะถูกกำหนดสูตร(ถูกพิมพ์สูตรอัตโนมัติ) ว่า =Roundup(a2,3)

คำถามคือว่า ทำไม มันรู้ว่าต้องเป็น a2 นั่นเป็นเพราะ a2 อยู่ตรงกับ L2 นั่นเอง ...ให้ลอง auto fill ไปที่เซลล์อื่นๆดูน่ะครับ แล้วสังเกตุดูว่าเกิดอะไรขึ้น

การ auto fill มีหลายแบบต้องค่อยๆศึกษาไปครับ ลองทำด้วยตัวเอง จะได้เข้าใจมากขึ้น...เอาล่ะ ตัวอย่างนี้ขอจบเพียงเท่านี้น่ะครับ รู้สึกจะเริ่มยาวแล้ว แล้วพบกันใหม่บทความหน้า

วันพุธที่ 23 เมษายน พ.ศ. 2557

ทำให้ excel 2010 เขียน vba ได้

ใน Microsoft Excel 2010 ได้มีการเปลี่ยนแปลงวิธีการเรียกใช้ tab สำหรับใช้ พัฒนา vba ใหม่ ให้อยู่ในส่วนอื่น ซึ่งทำให้บางคนอาจหาไม่เจอ วั... thumbnail 1 summary


ใน Microsoft Excel 2010 ได้มีการเปลี่ยนแปลงวิธีการเรียกใช้ tab สำหรับใช้ พัฒนา vba ใหม่ ให้อยู่ในส่วนอื่น ซึ่งทำให้บางคนอาจหาไม่เจอ วันนี้เป็นฤกษ์งามยามดีอย่างมาก (ว่าไป)ที่จะได้นำเสอนวิธีการนำแท็บนักพัฒนา หรือที่เรียกว่า Developer สำหรับพัฒนาเขียน vba โค้ดให้ออกมาแสดงต่อหน้าต่อตาท่านทั้งหลาย ซึ่งวิธีการที่จำเสนอ จะเป็นแบบ Step by Step เป็นขั้นเป็นตอน สามารถเข้าใจได้ง่ายๆ เพราะจะนำเสนอวิธีการด้วยภาพประกอบ อย่างละเอียด เอาล่ะ เริ่มเลยแล้วกัน
·      ขั้นแรกก็ให้เราเปิด Microsoft excel 2010 ขึ้นมา
·      เมื่อ Microsoft Excel 2010 ปรากฏต่อหน้าต่อตาของเราแล้ว ให้เราสังเกตจากภาพด้านล่างนี้ว่ามีแท็บอะไรบางที่แสดงอยู่



จากภาพเราจะเห็นว่า ในกรอบสีแดง ไม่มี tab Developer อยู่ เพราะ Microsoft Excel 2010 มันซ่อนเอาไว้ เพราะมันไม่จำเป็นสำหรับคนทั่วๆไป หรือ คนส่วนใหญ่ แต่มันจำเป็นสำหรับคนเขียนโปรแกรมด้วย vba อย่างเราๆ


ขั้นต่อมา ให้เราคลิ้กที่ เมนู File แล้วเลื่อนเมาส์ลงมาด้านล่างสุด แล้วคลิ้กที่ Options ดูภาพด้านล่างประกอบครับ




เมื่อเราคลิ้กที่เมนู Options ก็จะมีฟอร์มสำหรับกำหนดค่าโผล่ออกมาตามภาพด้านล่างนี้เลยจ๊ะ


·      ให้เราคลิ้กที่ Customize Ribbon แล้วคลิ้กให้มีเครื่องหมายถูกหน้าคำว่า Developer แล้วสุดท้ายก็คลิ้ก OK ตามภาพด้านบนเลยขอรับทุกท่าน
·      เมื่อเราคลิ้กที่ OK แล้ว เราก็จะได้ แท็บนักพัฒนา Developer สำหรับเขียน vba ออกมาโชว์อวดสายตาของเราแล้วละครับ
ตามภาพด้านล่างเลยจ๊ะ

เราคงเห็นแล้วว่า ภายใน Developer แท็บ มีเครื่องมือที่ใช้พัฒนา vba มากมายอยู่ ทีนี้จะพัฒนาอะไรก็ดึงเครื่องมือเหล่านี้มารังสรรค์ผลงานกันได้เลยครับ ...คริๆ