วันอังคารที่ 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 หลักสักที...