一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

0基礎(chǔ)學(xué)習(xí)寫(xiě)一個(gè)多表匯總宏模板!

 Excel辦公實(shí)戰(zhàn) 2021-06-29

今天我們帶大家一起來(lái)實(shí)現(xiàn)一下VBA多表匯總,逐句講解+分析思路,如果你是0基礎(chǔ),聽(tīng)完起碼知道如何修改代碼,也就非常奈斯了!

我們說(shuō)的是多表指的是多工作表(WorkSheet或者Sheet)

需求:匯總1-3月數(shù)據(jù)到匯總表

需求分析:

我們程序做的其實(shí)就是模仿人工做的,把人工處理的邏輯轉(zhuǎn)成程序可以認(rèn)識(shí)的語(yǔ)句,所以我們首先要分析一下人工是如何處理的!

人工處理非常簡(jiǎn)單,分兩步:

步驟01 :復(fù)制數(shù)據(jù)

復(fù)制數(shù)據(jù),我們?nèi)斯?fù)制非常簡(jiǎn)單,因?yàn)槟阒朗裁吹胤绞怯行?shù)據(jù)區(qū)域,開(kāi)始和結(jié)束位置,你是怎么判斷的呢?你說(shuō)有內(nèi)容的最后一行就是結(jié)束位置呀,那么這個(gè)就要轉(zhuǎn)成Excel能認(rèn)識(shí)的VBA語(yǔ)句!

步驟02 :粘貼數(shù)據(jù)

粘貼數(shù)據(jù),我們?nèi)斯ふ迟N也是無(wú)感的,反正就是貼,但是你貼的時(shí)候也不是隨意貼的,你接著上次粘貼內(nèi)容的最后一行空白行粘貼的,這個(gè)最后一行有內(nèi)容的行號(hào)的下一個(gè)空白,我們要轉(zhuǎn)成語(yǔ)句,問(wèn)題也就解決了!

本文由“壹伴編輯器”提供技術(shù)支持

根據(jù)我們分析人工操作下來(lái),我們核心就是要知道如何表示數(shù)據(jù)的最后一行!

這個(gè)VBA有自己的規(guī)則:

Cells(Rows.Count,1).End(xlup).Row

以上表示,從A列(其他列把1修改成對(duì)應(yīng)的列即可)的最后一個(gè)單元格往上找,找到首個(gè)有內(nèi)容的單元格,并獲取行號(hào)(ROW),這個(gè)跟我們自己手動(dòng)啊

知識(shí)點(diǎn):

Cells(行,列) - 單元格的一種表示方法,列可以使用字母表示

Cells(1,2) 和 Cells(1,"B") 都表示第一行第二列交叉的單元格-B1 

雖然這些都有了,但是我一個(gè)小白,還是不知道怎么做呀?

這個(gè)是否,就要說(shuō)Excel做的好的地方了,錄制宏!


動(dòng)畫(huà)演示:如何錄制宏

如果沒(méi)有看到開(kāi)發(fā)工具,按下面步驟操作一下即可。

【文件】 - 【選項(xiàng)】-  【自定義功能區(qū)】 - 【開(kāi)發(fā)工具】 勾上 確定即可!

動(dòng)畫(huà)演示:查看錄制的宏

查看宏的方式有很多,除了上面的點(diǎn)擊【Visual Basic】 還可以 右擊任意工作表名稱(chēng),選擇 【查看代碼】 或者按下 ALT+F11 查看!

我們來(lái)看一下錄制宏的代碼:

Sub 多表匯總()
'
'
 多表匯總 宏
'

'

    Range("A1:G10").Select
    Selection.Copy
    Sheets("匯總表").Select
    Range("A1").Select
    ActiveSheet.Paste
    Columns("B:B").EntireColumn.AutoFit
    Range("D6").Select
End Sub

知識(shí)點(diǎn):


1、如何在VBA中做一些說(shuō)明注釋
單引號(hào)的部分(' 多表匯總 宏),表示注釋?zhuān)簿褪菍?duì)程序或者內(nèi)容做一些補(bǔ)充說(shuō)明,對(duì)程序本身沒(méi)有影響

2、VBA中如何表示單元格
我們的每個(gè)動(dòng)作都被錄制下拉,后續(xù)還可以反復(fù)運(yùn)行!
出現(xiàn)比較多的就是單元格的操作,那么單元格怎么表示呢?
單元格表示:Range("單元格地址")

這個(gè)是單元格的一種表示方式,但是不是唯一的,以后大家會(huì)慢慢接觸到其他表示方式!Select 就是因?yàn)橐馑?,選擇!Copy就是復(fù)制,上面就是選擇了A1:G10,然后復(fù)制,最后粘貼到,粘貼我們要切換報(bào),這里就會(huì)涉及到VBA中如何表示工作表?

3、VBA中工作表的表示方式

這個(gè) Sheets("匯總表").Select 就表示選擇了名稱(chēng)為匯總表的工作表,那么你也應(yīng)該可以猜出表示方式了!

工作表表示方式:Sheets("工作表名稱(chēng)")

4、常用的幾個(gè)單詞

  • Range:表示單元格
  • Sheets:表示工作表
  • Copy:復(fù)制
  • Select:選擇
  • Paste:粘貼

有了上面的基礎(chǔ),下面我們就來(lái)看看如何修改代碼
本文由“壹伴編輯器”提供技術(shù)支持
如何修改代碼,實(shí)現(xiàn)多表匯總?

1、指定復(fù)制的是那個(gè)表,使用Sheets,A1:G10 這個(gè)10不是固定的,我們要使用 cells(rows.count,1).End(xlup).row 的方式來(lái)處理一下!
比如我們要復(fù)制1月份的數(shù)據(jù),那么應(yīng)該是這樣的

Sheets("1月").Range("A1:G"&Sheets("1月").Cells(Rows.count,1).End(xlup).row)

Sheets("1月").Cells(Rows.count,1).End(xlup).Row:表示根據(jù)1月份A列從下往上找到首個(gè)有內(nèi)容的單元格的行號(hào)!

你會(huì)發(fā)現(xiàn)上面寫(xiě)的太長(zhǎng)了,這個(gè)是否,我們可以找個(gè)東西,幫我們存儲(chǔ)一下,給這個(gè)東西起個(gè)簡(jiǎn)短的名字,以后就可以使用這個(gè)來(lái)代替這串長(zhǎng)的內(nèi)容了

其實(shí)這個(gè)東西就叫做 變量,以后慢慢來(lái)學(xué)習(xí)

這樣我們就解決了如何準(zhǔn)確的復(fù)制內(nèi)容,下面是確定每次粘貼的位置,第一次可能直接粘貼到A1,第二次呢?上次粘貼后一行空白行?

這個(gè)同樣可以使用Cells(Rows.count,1).End(xlup).Row 來(lái)處理!
我們MaxRow,來(lái)表示匯總表中有數(shù)據(jù)的下一個(gè)空白行
MaxRow = Sheets("匯總表").Cells(Rows.Count, 1).End(xlUp).Row+1
這樣我們就完成了一次復(fù)制粘貼,下面要解決的就是多次復(fù)制粘貼問(wèn)題

當(dāng)然你可以復(fù)制上面的內(nèi)容,反復(fù)粘貼,但是顯然那樣是毫無(wú)意義的!

這個(gè)事情,是不是循環(huán)在處理,在VBA中,我們使用

For 變量 = 開(kāi)始 to 結(jié)束
  干點(diǎn)啥
Next
來(lái)表示循環(huán)執(zhí)行

工作表不僅可以通過(guò)名稱(chēng)來(lái)表示,也可以按照順序表示,比如Sheets(1)就表示第一張表!還有就是Excel大部分Select選擇的代碼都可以去掉,直接對(duì)象.操作即可

所以我們的代碼可以修改為


好像差不多了,我們好像還沒(méi)說(shuō)怎么運(yùn)行?

其實(shí)很簡(jiǎn)單,在代碼窗口,按一下F5即可,當(dāng)然也有界面操作,【運(yùn)行】 - 【運(yùn)行子過(guò)程】

▼ 動(dòng)畫(huà)演示-如何執(zhí)行代碼


雖有瑕疵,但是我們成功的把3個(gè)月的數(shù)據(jù)合并到匯總表中了!這些瑕疵,隨著我們不斷深入的去學(xué)習(xí),慢慢都會(huì)解決!

下面不是本次的重點(diǎn),上面學(xué)會(huì)就挺好的了!

1、修復(fù)標(biāo)題粘貼問(wèn)題
首次粘貼的位置為A1,且粘貼標(biāo)題,其他都從第二行復(fù)制內(nèi)容粘貼

2、復(fù)制粘貼內(nèi)容可以一句完成

以上我們就需要使用判斷語(yǔ)句IF來(lái)處理,今天我們適當(dāng)看一下,知道這么回事即可!

這樣我們就做出一個(gè)完全可以實(shí)現(xiàn)多表匯總的宏了!

有的同學(xué)說(shuō)了,你這里就3個(gè)表,實(shí)現(xiàn)情況并不是這樣,我可能有多個(gè),具體幾個(gè)我不知道,那怎么辦呢? 一來(lái)你知道個(gè)數(shù)可以直接修改
i = 2 To 4(修改為實(shí)際的表個(gè)數(shù))

當(dāng)然這個(gè)不夠智能,所以我們需要一個(gè)方法來(lái)獲取工作做的數(shù)量,這個(gè)簡(jiǎn)單

共有多少個(gè)工作表:Sheets.Count

簡(jiǎn)單修改一下,我們可以應(yīng)付任意多個(gè)表合并了!
Sub 多表匯總()

' 多表匯總 宏
    
    '
從第2行表到第4張表(1-3月)
    For i = 2 To Sheets.Count
        If i = 2 Then
            iStartRow = 1   '首次從A1復(fù)制
            MaxRow = 1 '
首次粘貼到匯總表A1
        Else
            iStartRow = 2   '否則從跳過(guò)標(biāo)題,從第二行開(kāi)始
            '
匯總表中有數(shù)據(jù)的下一行
            MaxRow = Sheets("匯總表").Cells(Rows.Count, 1).End(xlUp).Row + 1
        End If
        
        '用IROW 代碼這一串內(nèi)容
        iRow = Sheets(i).Cells(Rows.Count, 1).End(xlUp).Row
        
        Sheets(i).Range("A" & iStartRow & ":G" & iRow).Copy _
        Sheets("匯總表").Range("A" & MaxRow)
    Next
End Sub


▼ 修改后的代碼匯總演示

這樣你就自己制作了一個(gè)可以實(shí)現(xiàn)多表匯總的VBA宏啦!

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多

    久久大香蕉精品在线观看| 国产亚洲精品香蕉视频播放| 微拍一区二区三区福利| 日韩成人动作片在线观看| 欧美乱码精品一区二区三| 日韩一本不卡在线观看| 国产一区欧美一区日韩一区| 色婷婷在线视频免费播放| 日韩精品视频一二三区| 国产亚州欧美一区二区| 欧美精品一区久久精品| 激情少妇一区二区三区| 欧美日韩精品一区免费| 欧美激情床戏一区二区三| 久久一区内射污污内射亚洲| 国产中文字幕一二三区| 欧美六区视频在线观看| 欧美不卡一区二区在线视频| 午夜精品国产一区在线观看| 中文字幕日韩欧美亚洲午夜| 亚洲综合色在线视频香蕉视频| 日韩性生活片免费观看| 欧美小黄片在线一级观看| 欧美日韩免费黄片观看| 中文字幕日韩一区二区不卡| 欧美日韩最近中国黄片| 亚洲丁香婷婷久久一区| 亚洲一区二区三区熟女少妇 | 暴力性生活在线免费视频| 高潮日韩福利在线观看| 人妻内射在线二区一区| 九九热视频免费在线视频| 国产精品成人一区二区三区夜夜夜| 国产精品久久香蕉国产线| 亚洲精品欧美精品一区三区| 国内精品美女福利av在线| 日韩欧美高清国内精品| 日本高清不卡在线一区| 日韩精品一级片免费看 | 欧美日韩中黄片免费看| 欧美三级大黄片免费看|