使用vba操作工作表,實現報表彙總

表有哪些方法和屬性?

方法也可以理解爲動作,表的方法有select,add, delete, copy,表的屬性有count,name

假設工作簿中按順序新建3張表叫1月和2月和3 月。如何切換到第2張表?

Sheet2.select //sheet2是表的默認名稱。重命名只是給sheet2起一個別名

Sheets(2).select //sheets(2)指工作簿的第2張表

Sheets(“2月”).Select // Sheets(“2月”)指重命名爲2月的表

如何知道工作簿中有多少張表?

Sheets.count //注意這裏是一個值,並不能運行,如果想要查看結果可以複製到單元格中

像這樣:sheet1.range(“a1”)=sheets.count在sheet1表的A1單元格中可查看錶數量。

如何新建一個表?

Sheets.add after:=sheet1 //在第一張表後面新建一張表

Sheets.add before:=sheet1 //在第一張表前面新建一張表

Sheets.add after:=sheets(sheets.count) //在最後一個表後面新建一張表

案例1

題目:新建一個工作簿,在工作簿中插入12個新表,名稱依次爲1月到12月,結果如下圖:

分析

    新建12張表,需要執行12次,每次的操作一樣,現在所有表後面新建一張表Sheets.add after:=sheets(sheets.count),然後給這個新建的表重命名需要用到name屬性。,

代碼:

Sub addsheet ()

Dim i as integer

For i =1 to 12

        Sheet1.add after:=sheets(sheets.count)

        Sheets(sheets.count).Name = i & “月”

Next

End sub

如何刪除一張表?

Sheet1.delete

但是會彈出確定刪除嗎對話框,我們需要先禁止彈出對話框再執行刪除操作

Excel.application.displayalerts=false

Sheet1.delete

Excel.application.displayalerts=true//執行完要取消禁止

如何copy一張表?

Sheet1.copy //會新建一個工作簿,因爲沒有指定copy的位置

Sheet1.copy after:=sheets(sheets.count)

案例2

題目:將所有表(除了部門表)的名字按順序填充到部門表的A列單元格中,結果如下圖:

 

    代碼:     

  Sub al2()

    Dim i as integer

    For i =2 to sheets.count

      Sheets(“部門”).range(“a” & i-1)=sheets(i).Name

    Next

End sub

案例3

題目:下面工作簿中有5月份的日報表,每個表內容一致,現在需要將每個表中的報表日期、審覈人、總計(彙總表中稱爲金額)等信息彙總到彙總表中,如下圖:

最終結果,點擊彙總按鈕,彙總表自動填充彙總內容到相應位置

分析:

1.要使用for循環,從第2張表開始循環一直到最後一張表也就是sheets.count;

2.報表日期在每張表的e5單元格。可以用range(“e5”)獲取相應的值;按順序填充到彙總表的B列從第10行開始填充;

3.審覈人在每張表的e6單元格。可以用range(“e6”)獲取相應的值;按順序填充到彙總表的C列從第10行開始填充;

4.總計(金額)在每張表的e44單元格。可以用range(“e44”)獲取相應的值;按順序填充到彙總表的D列從第10行開始填充;

5.插入一個彙總按鈕,指定宏huizong()

代碼:

Sub huizong()

    Dim i as integer

    For I =2 to sheets.count

        Sheet1.range(“b” & i+8)=sheets(i).range(“e5”)

        Sheet1.range(“c” & i+8)=sheets(i).range(“e6”)

        Sheet1.range(“d” & i+8)=sheets(i).range(“e44”)

    Next

End sub

對數據分析或者vba有興趣的朋友可以關注我的公衆號,我會在公衆號裏面發學習筆記,全是乾貨。一起學習一起成長!

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章