Excel - แมโครเพื่อจัดกลุ่มตามค่าของคอลัมน์ & ผลรวม

ซอฟต์แวร์ Microsoft Office ประกอบด้วย Microsoft Excel ซึ่งเป็นแอปพลิเคชั่นสเปรดชีตที่มีตารางกราฟิกการคำนวณภาษาการเขียนโปรแกรมแมโครเรียกว่า VBA (Visual Basics for Applications) และตารางเดือย ตารางเดือยใช้เพื่อแสดงรายการข้อมูล จะรับรู้และสรุปข้อมูลนั้นเพื่อให้ได้ผลลัพธ์ที่ระบุ แมโครแสดงรายการคำสั่งหรือการกระทำเพื่อให้ข้อมูลยาวหรืองานซ้ำ ๆ ใน Excel Office Software เร็วขึ้น สิ่งนี้สามารถเรียกใช้เมื่อใดก็ตามที่คุณต้องการทำงาน จะใช้ค่าดำเนินการที่จำเป็นและส่งกลับค่าตาม หากคุณต้องการเขียนแมโครเพื่อจัดกลุ่มตามคอลัมน์และค่าผลรวมให้เริ่มต้นแมโครโดยใช้คำสั่งที่เกี่ยวข้อง

ปัญหา

ฉันต้องเขียนแมโครเพื่อเป็นตัวอย่างต่อไปนี้:

 รายการจำนวนความยาว A 1 100 A 1 100 B 2 200 B 1 100 B 5 100 C 4 200 C 2 100 C 1 200 C 3 100 

โดยทั่วไปฉันต้องการจัดกลุ่มตามคอลัมน์ A (เช่นรายการ) และคอลัมน์ C (เช่นความยาว) และต้องการเพิ่มผลรวมของการเปลี่ยนแปลงความยาวแต่ละรายการสำหรับรายการ ในกรณีนี้ผลลัพธ์ในชีตใหม่จะเป็นดังนี้:

 รายการจำนวนความยาว A 2 100 B 2 200 B 6 100 C 5 200 C 5 100 

หวังว่านี่จะสมเหตุสมผล

ใครช่วยฉันเขียนแมโคร Excel สำหรับสิ่งนี้ได้ไหม

สารละลาย

ลองสิ่งนี้

อัสสัมชั:

  • 1. เมื่อคุณเริ่มแมโครแผ่นงานที่จะคัดลอกข้อมูลมาจากแผ่นงานนั้นคือแผ่นงานที่ใช้งานอยู่
  • 2. เซลล์ว่างในคอลัมน์ A หมายถึงจุดสิ้นสุดของข้อมูล
  • 3. คุณต้องการวางในแผ่นงาน 3 (แก้ไขในมาโครหากไม่ใช่ในกรณีนี้)

 SubolidateData () Dim lRow ตราบ Dim Dim ItemRow1, ItemRow2 เป็น String Dim lengthRow1, lengthRow2 เป็นคอลัมน์สตริง ("A: C") เลือก Selection.Copy ชีต ("Sheet3") เลือกช่วง ("A1") เลือกช่วงเวลา ("A1") .Paste Cells.Select Selection.Sort _ Key1: = ช่วง ("A2"), Order1: = xlAscending, _ Key2: = ช่วง ("C2"), Order2: = xlDescending, _ ส่วนหัว: = xlYes, OrderCustom: = 1, _ MatchCase: = เท็จ, การวางแนว: = xlTopToBottom, _ DataOption1: = xlSortNormal lRow = 2 ทำขณะที่ (เซลล์ (lRow, 1) "") ItemRow1 = เซลล์ (lRow, "A") ItemRow2 "A") lengthRow1 = เซลล์ (lRow, "C") lengthRow2 = เซลล์ (lRow + 1, "C") ถ้า ((ItemRow1 = ItemRow2) และ (lengthRow1 = lengthRow2)) จากนั้นเซลล์ (lRow, "B") = เซลล์ (lRow, "B") + เซลล์ (lRow + 1, "B") แถว (lRow + 1). ลบอื่น ๆ lRow = lRow + 1 End ถ้า Loop End Sub 

บันทึก

ขอบคุณ rizvisa1 สำหรับเคล็ดลับนี้ในฟอรัม

บทความก่อนหน้านี้ บทความถัดไป

เคล็ดลับยอดนิยม