回覆列表
  • 1 # 範閒不是我

    新建一個總表,準備彙總

    Alt+F11,VBA快捷鍵,在彈出的新介面中,左鍵雙擊座標的名為”總表“的工作表,使後續的程式碼是複製到這個工作表中。

    在右邊的空白區域,複製下面的程式碼:

    Submain()

    ForEachshInSheets

    Ifsh.Name<>"總表"Then

    i=sh.Range("D65536").End(3).Row

    k=Range("A65536").End(3).Row

    sh.Range("A2:D"&i).CopyRange("A"&k+1)

    EndIf

    Next

    EndSub

    程式碼詳解:1.Submain()——其中Sub跟括號是固定的,main是宏名,可以隨便更改(其實完全沒有必要多此一舉,這裡可以不做任何修改)2.ForEachshInSheets——這是遍歷全部的工作表,這裡就要注意,如果你的工作表中包含一些,不需要彙總資料的工作表,那麼就需要將源資料表備份一份,然後將不需要彙總資料的工作表都刪除掉,只剩下總表以及需要彙總資料的工作表(當然,還有其他辦法,這裡只講解最簡單地做法)3.Ifsh.Name<>"總表"Then——這裡是判斷工作表的名字是不是”總表“,如果是總表,就不彙總資料,本例中總表的名字就是”總表“,如果你的工作表中,總表名字是其他的,就將這裡的”總表“改為你的工作總表明細;4.i=sh.Range("D65536").End(3).Row——這裡要注意了"D65536",是為了獲得最後一個不為空的行的行號,這裡用了D列,因為本例中的D列是有資料的

    ,在實際的使用過程中,一定要選擇一個最後一行有資料的列,否則不能獲得最大行號(假如只有2列,那麼這裡的D可以改為B或者A)5.k=Range("A65536").End(3).Row——這裡是獲得總表的最大行號,以便複製的資料,能夠依次往下貼上;(這裡的A65536跟上面提到的是一個道理,總表中的A列最後一行不是空的)6.sh.Range("A2:D"&i).CopyRange("A"&k+1)——這裡要注意“A2:D”&i是要複製的區域,因為本例中只有A-D列,而且資料是從第2行開始的,所以這裡是A2:D,那假如是從E列第10行開始,到Z列結束的區域,就應該改為E10:Z;Range("A"&k+1)——這裡是從總表的A列開始貼上,假如是從D列開始,那麼這裡的A改為D即可7.EndIf?Next?EndSub——這些是結束判斷、繼續迴圈和程式結束,都不需要更改。

    儲存執行程式碼

  • 中秋節和大豐收的關聯?
  • 來自歷史故事的成語有哪些?