Excel - แมโครเพื่อคัดลอก / วางช่วงที่เลือก

ปัญหา

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

ตัวอย่าง

 ABCD ม.ค. ก.พ. มี.ค. 5 เม.ย. 6 6 

ฉันต้องการผลลัพธ์สุดท้ายของฉันให้ดูเหมือน (เช่นคัดลอกจาก A3: A6 และวางลงที่ B3 จากนั้นเดือนถัดไปก็จะคัดลอกจาก B3: B6 และวางลงบน C3 และอื่น ๆ )

 ABCD ม.ค. ก.พ. มี.ค. 1 เม.ย. 5 5 6 6 7 7 

มกราคมและกุมภาพันธ์เหมือนกันในขณะนี้เนื่องจากการคัดลอกและวางจะเกิดขึ้นก่อนที่ข้อมูลดิบใหม่จะถูกแทนที่

หวังว่ามันจะสมเหตุสมผล ฉันมีความรู้น้อยมากในการเขียน VB แต่สามารถจัดการอ่านและทำความเข้าใจกับคนง่าย ๆ ได้ ใครช่วยฉันด้วยแมโครที่จะทำสิ่งนี้โดยอัตโนมัติ

สารละลาย

มาโครนี้ใช้กล่องอินพุตเพื่อถามว่าคุณกำลังอัปเดตเดือนใด ใช้ค่าตัวเลขแทนการพิมพ์ในเดือน ตัวอย่าง: Jan. = 1, Feb. = 2, Mar. = 3. ฉันสมมติว่าคุณไม่ต้องการอัปเดตมกราคมดังนั้นแมโครจะออกหาก 1 พิมพ์ลงในช่องป้อนข้อมูล (เว้นแต่ว่าจะอัปเดตจากธันวาคมแล้วเราสามารถเปลี่ยนได้ มัน).

หวังว่านี่จะช่วยได้

 Sub Update_Month () Dim answer เป็น Variant Dim jj = 3 answer = InputBox ("คุณกำลังอัปเดตเดือนใด" & vbCrLf & _ "Ex: มกราคม = 1, กุมภาพันธ์ = 2, มีนาคม = 3, ฯลฯ ") เลือกคำตอบกรณี กรณีที่ 1 ออกจากกรณีย่อย 2 สำหรับ j = 3 ถึง 6 ช่วง ("B" & j) = ช่วง ("A" & j) ถัดไป j กรณี 3 สำหรับ j = 3 ถึง 6 ช่วง ("C" & j) = ช่วง ( "B" & j) ถัดไป j กรณี 4 สำหรับ j = 3 ถึง 6 ช่วง ("D" & j) = ช่วง ("C" & j) ถัดไป j กรณี 5 สำหรับ j = 3 ถึง 6 ช่วง ("E" & j ) = ช่วง ("D" & j) ถัดไป j กรณี 6 สำหรับ j = 3 ถึง 6 ช่วง ("F" & j) = ช่วง ("E" & j) ถัดไป j กรณี 7 สำหรับ j = 3 ถึง 6 ช่วง (" G "& j) = ช่วง (" F "& j) ถัดไป j กรณี 8 สำหรับ j = 3 ถึง 6 ช่วง (" H "& j) = ช่วง (" G "& j) ถัดไป j กรณี 9 สำหรับ j = 3 ถึง 6 Range ("I" & j) = Range ("H" & j) Next j Case 10 สำหรับ j = 3 ถึง 6 Range ("J" & j) = Range ("I" & j) Next j Case 11 สำหรับ j = 3 ถึง 6 ช่วง ("K" & j) = ช่วง ("J" & j) ถัดไป j กรณี 12 สำหรับ j = 3 ถึง 6 ช่วง ("L" & j) = ช่วง ("K" & j) ถัดไป j End เลือก End Sub 

สังเกตได้ว่า

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

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

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