บทความที่ต้องการนำเสนอทุกท่านวันนี้เป็นภาคต่อจากที่เคยนำเสนอระเบียบวิธีในการคำนวณหาพื้นที่หลายเหลี่ยมไปแล้ว และได้กล่าวทิ้งท้ายถึงเทคนิคที่จะนำมาใช้กับระเบียบวิธีดังกล่าว บทความนี้จึงขอนำเสนอเทคนิคการใช้ VBA in excel เข้ามาช่วยในการแก้ปัญหานี้ ซึ่งผู้อ่านต้องเข้าใจพื้นฐานของ VBA Excel มาพอสมควร โดยขอยกตัวอย่างการหาพื้นที่รูปหลายเหลี่ยมซึ่งมีจุดยอด (vertex) ในระบบพิกัดคาร์ทีเซียน ดังนี้ (0,0) , (10,0) , (10 , 10) , (5,10) , (5,15) , (0,10) , (0,0) เมื่อลากเส้นตรงเชื่อมจุดยอดจะได้รูปหลายเหลี่ยมดังแสดงในภาพที่ 1
จากภาพพบว่ารูปหลายเหลี่ยมประกอบไปด้วยจุดยอดทั้งหมด 7 จุด และเมื่อพิจารณารูปหลายเหลี่ยมจะเห็นได้ว่าเกิดจากรูปร่างอย่างง่ายสองรูปประกอบเข้าด้วยกัน ได้แก่ รูปสี่เหลี่ยมจัตุรัส(A2) และรูปสามเหลี่ยมหน้าจั่ว A1 ดังนั้นสามารถคำนวณหาพื้นที่รูปหลายเหลี่ยมได้ง่ายๆดังนี้
A (polygon) = A1 + A2 = (5*5/2) + 10*10 = 112.5 ตารางหน่วย
ทีนี้หากต้องการใช้เทคนิค VBA ช่วยในการคำนวณหาพื้นที่จะเริ่มดำเนินการอย่างไร เรามาเริ่มกันเลยดีกว่า
เริ่มจากการนำเข้าข้อมูลจุดยอดของรูปหลายเหลี่ยมมายัง Excel โดยกำหนดให้คอลัมน์ A เป็นพิกัด X คอลัมน์ B เป็นพิกัด Y ดังแสดงในภาพที่ 2
เริ่มจากการนำเข้าข้อมูลจุดยอดของรูปหลายเหลี่ยมมายัง Excel โดยกำหนดให้คอลัมน์ A เป็นพิกัด X คอลัมน์ B เป็นพิกัด Y ดังแสดงในภาพที่ 2
ภาพที่ 2 พิกัดจุดยอดของ Polygon ในระบบพิกัดคาร์ทีเซียน
คลิก ปุ่ม Alt + F8 เพื่อจัดการมาโครสำหรับใช้คำนวณพื้นที่ โดยกำหนดชื่อมาโครเป็น PolygonArea ดังแสดงในภาพที่ 3 คลิกปุ่ม สร้างเพื่อเข้าสู่หน้า Visual Basic Editor โดยจะพบกับ Subroutine PolygonArea ดังรูปที่ 4
ภาพที่ 3 สร้าง Macro Excel
ภาพที่ 4 Visual Basic Editor
เราจะเขียนโค้ดสำหรับคำนวณพื้นที่ของ Polygon ใน Subroutine PolygonArea ตามระเบียบวิธีที่เคยนำเสนอมากันครับ โดยมีรายละเอียดดังนี้
แนวคิด
ในการคำนวณพื้นที่รูปหลายเหลี่ยมจะคำนวณได้จากผลรวมของ Xi*Yi+1 ลบด้วยผลรวมของ Xi+1*Yi หารด้วย 2 ดังแสดงในภาพที่ 5 จากสูตรที่กล่าวมาจะพบว่า แถวสุดท้ายที่สามารถหาผลคูณได้คือแถวที่ n-1 เนื่องจากแถวถัดไปคือแถวที่ n-1+1 นั่นคือ n เนื่องจากแถวที่ n+1 ไม่มีข้อมูล
ภาพที่ 5 ระเบียบวิธีการคำนวณ
ภาพที่ 6 แสดงการคำนวณแถวที่ n-1
ภาพที่ 7 code vba และคำอธิบาย
สร้างปุ่มกด และกำหนดมาโคร PolygonArea ให้กับปุ่มกดนี้ ดังแสดงในภาพที่ 8
ภาพที่ 8 ผลการคำนวณพื้นที่รูปหลายเหลี่ยม
ท่านผู้อ่านจะเห็นว่าการคำนวณด้วย มาโคร PolygonArea ให้ผลลัพธ์เท่ากับการคำนวณด้วยสูตรการคำนวณทั่วไป แต่หากเป็นรูปหลายเหลี่ยมที่มีจุดยอดเป็นจำนวนมากดังนำเสนอในบทความที่ผ่านมา เรายังสามารถใช้ มาโคร PolygonArea ที่ได้พัฒนานี้ช่วยคำนวณได้เหมือนเดิมโดยที่ไม่ต้องปรับเปลี่ยน และสามารถใช้งานได้ง่ายเพียงคลิกปุ่ม Polygon Area
มาโคร PolygonArea ที่ได้พัฒนาขึ้นยังไม่สมบูรณ์ที่สุดขอฝากท่านผู้อ่านพัฒนามาโครนี้ให้ถูกต้องสมบูรณ์โดยให้ค่าพื้นที่รูปหลายเหลี่ยมที่ถูกต้อง บักที่ยังไม่ได้แก้ไขเป็นบักที่ทำให้ผลการคำนวณอาจจะไม่ถูกต้องได้เป็นบางกรณี ขอบคุณครับ
มาโคร PolygonArea ที่ได้พัฒนาขึ้นยังไม่สมบูรณ์ที่สุดขอฝากท่านผู้อ่านพัฒนามาโครนี้ให้ถูกต้องสมบูรณ์โดยให้ค่าพื้นที่รูปหลายเหลี่ยมที่ถูกต้อง บักที่ยังไม่ได้แก้ไขเป็นบักที่ทำให้ผลการคำนวณอาจจะไม่ถูกต้องได้เป็นบางกรณี ขอบคุณครับ
ไม่มีความคิดเห็น:
แสดงความคิดเห็น