ด้านล่างเราจะดูโปรแกรมใน Excel VBA ที่แบ่งจำนวนเงินออกเป็น ธนบัตรและเหรียญ .
สถานการณ์:
โดยใช้ฟังก์ชันอัตราใน excel
สร้างกิจกรรมการเปลี่ยนแปลงเวิร์กชีต โค้ดที่เพิ่มลงในเวิร์กชีต Change Event จะดำเนินการโดย Excel VBA เมื่อคุณเปลี่ยนเซลล์บนเวิร์กชีต
1. เปิด โปรแกรมแก้ไข Visual Basic .
2. ดับเบิลคลิกที่ Sheet1 (Sheet1) ใน Project Explorer
3. เลือก แผ่นงาน จากรายการดรอปดาวน์ด้านซ้าย เลือก เปลี่ยน จากรายการดรอปดาวน์ด้านขวา
วิธีค้นหารายการที่ซ้ำกันในสองคอลัมน์ใน excel
เพิ่มบรรทัดรหัสต่อไปนี้ในเหตุการณ์การเปลี่ยนแปลงเวิร์กชีต:
4. ประกาศตัวแปรที่เรียกว่าจำนวนชนิด Double และตัวแปร i ชนิด Integer
ไม่มีจำนวนเนื่องจาก สองเท่า, ผมเนื่องจาก จำนวนเต็ม5. เหตุการณ์การเปลี่ยนแปลงเวิร์กชีตจะรับฟังการเปลี่ยนแปลงทั้งหมดในชีต 1 เราต้องการให้ Excel VBA ทำอะไรบางอย่างหากมีการเปลี่ยนแปลงในเซลล์ B2 เพื่อให้บรรลุสิ่งนี้ ให้เพิ่มบรรทัดรหัสต่อไปนี้:
ถ้าTarget.Address = '$B'แล้ว6. เราเริ่มต้นจำนวนตัวแปรด้วยค่าของเซลล์ B2
จำนวน = ช่วง ('B2'). ค่า7. เราล้างช่วงด้วยความถี่
ช่วง('B5:B16').ค่า = ''8. ถึงเวลาแบ่งจำนวนเงินที่ป้อน เราเริ่มลูป For Next
สำหรับผม = 5ถึง169. เราจะใช้ประโยชน์จาก ทำในขณะที่ห่วง โครงสร้าง. รหัสที่วางไว้ระหว่างคำเหล่านี้จะถูกทำซ้ำตราบเท่าที่ส่วนหลัง Do while เป็นจริง เราต้องการให้ Excel VBA ทำซ้ำโค้ดบรรทัดในขั้นตอนที่ 10 ตราบใดที่จำนวนมากกว่าหรือเท่ากับ Cells(i,1).value
ทำ ในขณะที่จำนวน >= เซลล์ (i, 1).Valueห่วง
10. เพิ่มโค้ดต่อไปนี้ลงใน Do while Loop
เซลล์ (i, 2).Value = เซลล์ (i, 2).Value + 1จำนวน = จำนวน - เซลล์ (i, 1).Value
คำอธิบาย: ตราบใดที่จำนวนเงินมากกว่าหรือเท่ากับ Cells(i,1).value จำนวนนั้นจะมีบิล/เหรียญของมูลค่านี้ ด้วยเหตุนี้ Excel VBA จะเพิ่มความถี่ของบิล/เหรียญนี้ (บรรทัดแรก) และลบมูลค่าของบิล/เหรียญออกจากจำนวนเงิน (บรรทัดที่สอง) กระบวนการนี้จะถูกทำซ้ำจนกว่าจำนวนจะน้อยกว่า Cells(i,1).value ถัดไป Excel VBA จะเพิ่ม i และไปที่บิล/เหรียญถัดไปเพื่อดูว่าบิล/เหรียญนี้พอดีกับจำนวนเงินที่เหลืออยู่กี่ครั้ง ด้วยวิธีนี้จำนวนเงินจะถูกแบ่งออกเป็นตั๋วเงินและเหรียญจนไม่มีเงินเหลือให้แยกอีกต่อไป
11. ปิดลูป For Next และอย่าลืมปิดคำสั่ง if (ทั้งนอกลูป Do while)
ต่อไปผมจบ ถ้า
12. ทดสอบโปรแกรม
สูตร excel จะนับถ้าเซลล์มี
ผลลัพธ์:
หมายเหตุ: แน่นอนว่าจำนวนเงินที่ป้อนไม่จำเป็นต้องมีทุกบิล/เหรียญ หากจำนวนเงินไม่มีบิล/เหรียญ ส่วนที่หลังจาก Do while จะไม่เป็นจริงสำหรับบิล/เหรียญนี้ และ Excel VBA จะส่งตรงไปยังบิล/เหรียญถัดไป
ไปที่บทถัดไป: Array