點擊上方藍字「Excel不加班」關注,看下一篇
恭喜下面3個粉絲:康乃馨、恆星、葉豐,獲得書籍,加盧子微信chenxilu2019,發送姓名,電話,地址。
為了活躍氣氛,在文末點亮「在看」+評論區留言,我會從中抽取3名粉絲,每人贈送一本《盧子Excel高手速成視頻教程 早做完,不加班》。
OFFSET函數很多人都知道有5個參數,即使最基本的用法也得3個參數才能使用。
最基本的語法:
「2個參數就能使用?盧子,你是不是忽悠人?」
忽悠你幹嘛,在VBA中的OFFSET函數就是2個參數OFFSET(向下幾行,向右幾列)。
繼續使用昨天的案例,先來做一個測試。
選擇B3:D3的區域,Range("B2:d2").Offset(1, 0).Select。
你可能覺得盧子有點畫蛇添足,直接Range("b3:d3").Select不就完事。
其實如果只是引用一個區域這樣寫也行,不過如果是要通過變量i依次引用2、3、4行的區域,這種寫法不方便操作。
用OFFSET更容易處理這種,現在要讓這幾行的區域分別等於某內容可以用這樣的代碼。
某內容,其實就是每個工作表的d2:d4。
好,將這個思路轉換成代碼。
現在問題來了,等於(=)前面是橫向的3個單元格,等於(=)後面是縱向的3個單元格,形狀不一樣。
也就是說,需要再進行一步處理,選擇性粘貼→轉置。關於這個,昨天已經通過錄製宏實現,現在就不再重複。
其實,Excel內置的函數就有Transpose函數,也就是轉置。
這裡教你一個快速調用內置函數的方法,這樣你就不需要記住完整的函數。那麼長的函數,盧子也記不住,能記住前面2個字母就行。
在空白的區域,輸入wo,按Ctrl+j,這時就出現一個提示對話框,跟平常輸入函數差不多。WorksheetFunction.Transpose相當於調用工作表函數裡面的Transpose。
再將代碼修改完整,搞定。
Sub 測試()
Dim i As Integer
For i = 2 To Sheets.Count
Range("b2:d2").Offset(i - 2, 0) = WorksheetFunction.Transpose(Sheets(i).Range("d2:d4"))
Next
End Sub
再通過一個實例來說明OFFSET函數。
要將帶顏色的列的總計數引用到匯總,帶顏色的單元格都是相差3列。
匯總的效果,A列為工作表名稱,後面6列為要引用的內容。
匯總表的第2行,也就是Range("a2")依次向右1列、2列……6列,Range("a2").Offset(0, i)。
分表的第36行,也就是Sheets(2).Range("a36")依次向右3列、6列……18列,Sheets(2).Range("a36").Offset(0, i * 3)。
這樣匯總表的第2行代碼就出來了。
現在除了要匯總第2個表,剩下的所有分表統統都要引用到匯總表。
這時,一個循環語句已經不夠用,那就再嵌套一個循環語句,同一段代碼可以多次循環。
Sub 匯總()
Dim i, x As Integer
For x = 2 To Sheets.Count
For i = 1 To 6
Range("a" & x).Offset(0, i) = Sheets(x).Range("a36").Offset(0, i * 3)
Next
Next
End Sub
關於提取工作表名稱,前面幾天已經說了好多次,就不做解釋,直接提供代碼。
一段完整的代碼就寫好了。
Sub 匯總()
Dim i, x As Integer
For x = 2 To Sheets.Count
For i = 1 To 6
Range("a" & x) = Sheets(x).Name
Range("a" & x).Offset(0, i) = Sheets(x).Range("a36").Offset(0, i * 3)
Next
Next
End Sub
這樣一運行,所有內容都提取到匯總表。
為了能讓你學好VBA,已經用了我認為最好的方法,一邊是送書鼓勵,一邊是從實際案例出發儘可能通俗。可是,感興趣的人實在太少。
今天,文末特意開了打賞功能,主要是測試有多少人真心想學習。如果有200人打賞就繼續寫VBA教程,如果沒有,VBA專題到此結束,以後專門寫學員答疑問題,到時就不要怪盧子不教VBA哦。
連結:
https://pan.baidu.com/s/13XcyskLeYE_drRT5o8fY7A
提取碼:i41l
VIP 888 元,一次報名,所有視頻課程,終生免費學,提供一年在線答疑服務。
報名後加盧子微信chenxilu2019,發送報名截圖邀請進群。
推薦:OFFSET從入門到進階,再也不怕這個函數了
上篇:多表匯總每個公司的地址、納稅人識別號和開戶行及帳號
每一篇文章都花費了大量精力,每個人都希望自己寫的文章得到認可,這樣才有動力一直堅持寫下去。
如果發出來的文章,你還特意躲著不去看,那寫這種文章就失去了意義,你的支持,是我堅持的動力。
認可盧子的,今天請打賞支持。
作者:盧子,清華暢銷書作者,《Excel效率手冊 早做完,不加班》系列叢書創始人,個人公眾號:Excel不加班(ID:Excelbujiaban)
請把「Excel不加班」推薦給你的朋友
請打賞↓↓↓