教你一個新用法,OFFSET函數2個參數就可以多表引用

2021-02-20 Excel不加班

點擊上方藍字「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不加班」推薦給你的朋友

打賞↓↓↓

相關焦點

  • OFFSET函數的4個用法,你會嗎?
    函數是Excel中一個很強大的函數。今天,小E帶大家一起來學習關於OFFSET函數的一些基本的用法。函數功能:以指定的引用為參照系,通過給定偏移量得到新的引用。返回的引用可以為一個單元格或單元格區域。並可以指定返回的行數或列數。
  • offset函數用法詳解及示例
    ,所要引用的高度,所要引用的寬度)例=OFFSET(A3,2,3,1,1)A3是基點單元格,2是正數,為向下移動2 行,負為向上移動2 行3是正數,為向右移動3列,負為向左移動3列1是引用 1 個單元格的高度1 是引用 1 個單元格的寬度它的結果是引用了D5中數值。
  • Excel中超強的offset函數你真會用?三個操作分分鐘提升工作效率
    今天我們就來用三個案例,來學習一下看看這個函數到底有多強大。函數公式:=OFFSET(B3,4,3,4,3)函數講解:1、offset函數為偏移函數,它可以通過位置的偏移獲取一段單元格範圍區域;2、總而言之offset函數偏移方向為,下—右—上—左。
  • 告訴你應該如何玩轉Offset函數,別怕,只需要1分鐘就學會啦
    ,語法如下:OFFSET(reference, rows, cols, [height], [width]),可以明顯看到前面三個參數是必須的,後面2個是可選的參數。;如果省略 height 或 width,則假設其高度或寬度與 reference 相同;OFFSET 實際上並不移動任何單元格或更改選定區域;它只是返回一個引用。OFFSET 可以與任何期待引用參數的函數一起使用。例如,公式 SUM(OFFSET(C2,1,2,3,1)) 可計算 3 行 1 列區域(即單元格 C2 下方的 1 行和右側的 2 列的 3 行 1 列區域)的總值。
  • Indirect搭配Vlookup函數輕鬆實現多表查詢.
    Excel公眾號Excel是門手藝 玩轉需要勇氣‍以前覺得掙錢不重要現在オ知道星辰和大海都需要門票詩和遠方的路費都很貴我們都知道vlookup函數可以實現表格數據查詢,今天我們來學習一個組合函數,看看vlookup函數和Inddirect函數搭配起來使用有多強大。
  • Sumif一個奇妙的多表求和用法
    從上面這個示例中可以得出結論: 1、Sumif可以引用多列區域,並對區域內所有符合條件的值進行求和。2、在多列引用時,判斷區域和求和區域大小一致且錯列顯示。但也有例外情況,求和區域你可以偷個懶,只寫首個單元格:=SUMIF(A:I,M2,C$1)
  • COUNTIF與SUMIF函數的8個常見用法!
    其語法為:=SUMIF(條件區域,條件,求和區域)如下表,是一個財務技能考核分數表,需要統計大於等於70分的人數。,此方式需要記住,這是一個特殊用法。在G3中輸入公式為:=COUNTIF($C$2:$C$11,F3)注意:第一個參數需使用絕對引用,並保持位置不變。第二個參數若是單元格的條件時,即不用雙引號。
  • Excel函數應用篇:match函數五種用法
    match函數,在EXCEL中廣泛運用於查找引用,但它自已本身的功能是查找,並不具備引用,所以常規操作中,它是需要和vlookup
  • Indirect函數基本用法【Excel分享】
    大家好,今天和大家分享「Indirect函數基本用法」,許多朋友一見到這個函數就犯暈,確是,對於新手來說,這個函數不好理解,下面我來講講它的基本用法
  • offset函數的使用方法
    在Excel中,offset函數是一個引用函數,表示引用某一個單元格或者區域。其也是我們日常做一些組合函數中的一種,需要熟練掌握。
  • VLOOKUP函數最經典的12個表查找用法(推薦收藏)
    2月、3月……12月,依次更改VLOOKUP函數的第二參數。=VLOOKUP(A2,'2月'!A:B,2,0)=VLOOKUP(A2,'3月'!A:B,2,0)……=VLOOKUP(A2,'12月'!A:B,2,0)這種雖然可以解決問題,但是需要修改10多次,很容易改錯。而盧子卻採用了另外的方法,每個工作表名稱都列出來了,其實可以藉助INDIRECT函數的間接引用。=VLOOKUP($A2,INDIRECT(B$1&"!
  • 【函數】Offset用法介紹
    語法OFFSET(reference,rows,cols,[height],[width])TIPS:·在單元格輸入=OFFSET(,就會提示上述語法·該函數返回的是一個區域下圖=OFFSET(B3,2,3)指的是B3單元格向下移動2行,向右移動3列得到E5單元格(值為35)補充說明如果參數rows,cols為負,則意味著往相反方向移動
  • COUNTIF與SUMIF函數的常見用法
    COUNTIF函數是一個單條件計數的函數。其通用的語法可以總結為:COUNTIF(訂數區域,計數條件)SUMIF函數是一個單條件求和的函數。其通用的語法可以總結為:SUMIF(條件區域,條件,求和區域)下面是一個財務技能考核的分數表,統計70分以上的人數。
  • 原來IF函數還有這麼多用法
    IF函數是工作中最常用的函數之一,所以蘭色今天決定用一篇文章把IF函數的使用方法再梳理一番。看過你會不由感嘆:原來IF函數還有這麼多用法!
  • Offset用法介紹
    周二 · 函數    關鍵詞:offset1語法
  • VLOOKUP函數多表查找套路
    今天來傳授一招多表查找技術,可以讓VLOOKUP在多張工作表內統一查找,十分便利。應用場景和數據結構如下圖所示,某企業的原材料來自多個供應商,每個供應商的採購記錄放置在單獨的工作表中,現在要求按照原材料,查詢所有供應商的單價、數量以及採購員信息。
  • Excel多工作表引用,Indirect函數才是NO.1,多表操作這兩組函數公式你應會
    我們需要在匯總表中將對應人員5個月數據進行匯總求和。這裡就涉及到對5個工作表的引用。下面我們就來學習Indirect函數3種不同工作表名稱下的引用操作。案例一:Indirect函數對以數字命名的工作表進行多表引用案例說明:對1-5月5個工作表的數據進行求和函數公式
  • Excel中跨多表引用,Vlookup+indirect函數!
    例如,現在我們要在總表中,匯總每位員工各個月份的工資情況但每個月的工資都分別存放在每一個工作表中,如1月的數據如下:2月的數據工資表如下所示1月份中員工的順序是呂布、小喬、大喬而2月份中員工的順序是大喬、呂布、小喬、程咬金,後面每個月份表格順序都不一樣。=VLOOKUP(B$1,'1月'!
  • SUMIF函數這4個用法,99%的人沒用過!
    SUMIF函數很多同學都用的非常熟練,但有幾個同學們很少遇到的特殊用法,蘭色今天分享給大家。
  • excel下拉菜單的最高級用法:聯想式輸入
    如果....能輸入一個或幾個字符,就只顯示以這些字符開頭的選項(聯想式輸入)..該多好哦!..高手們用VBA實現,可不懂VBA是何物的你,這個功能也可以實現嗎?今天,蘭色將分享不用VBA也可以實現聯想式輸入的技巧。