天天看點

告訴你應該如何玩轉Offset函數,别怕,隻需要1分鐘就學會啦

Hi,大家好,有很多的小夥伴在私信提問說一直在說VBA,能否說說Offset函數的使用方法。答案是肯定的,隻要有需要就會盡我們的最大努力來滿足大家啦!好了話不多說,今天他來了,我們一起來從零開始學習什麼是Offset函數。

首先就不得不先說這個函數的文法,文法如下:

OFFSET(reference, rows, cols, [height], [width]),可以明顯看到前面三個參數是必須的,後面2個是可選的參數。

其實文法可以這麼了解:offset(基點,向下偏移[不含基點],向右偏移[不含基點],向下選中幾格[含基點],向右選中幾格[含基點]),其中的基點就是reference啦!

具體的解釋如圖:

告訴你應該如何玩轉Offset函數,别怕,隻需要1分鐘就學會啦

PS:如果 "行" 和 "cols 偏移" 引用覆寫了工作表的邊緣, 則 offset 傳回 #REF! ;如果省略 height 或 width,則假設其高度或寬度與 reference 相同;OFFSET 實際上并不移動任何單元格或更改標明區域;它隻是傳回一個引用。OFFSET 可以與任何期待引用參數的函數一起使用。例如,公式 SUM(OFFSET(C2,1,2,3,1)) 可計算 3 行 1 列區域(即單元格 C2 下方的 1 行和右側的 2 列的 3 行 1 列區域)的總值。

說了文法,那麼現在一起來看看這個函數的基礎用法,如下B4:H13為我們源資料區域,在J:K區域為我們寫的要求和公式,K列為我們的顯示結果。

可能有的小夥伴還是看不太明白這個函數的基礎應用,以K5為例說下這個的意思。K5單元格的公式意思是以E8單元格為基點,然後向下偏移-2個單元,通俗說法就是,在E8單元格往上數2個,然後向右移動0個機關,即回傳回值33.

告訴你應該如何玩轉Offset函數,别怕,隻需要1分鐘就學會啦

PS:說下這個函數裡面的偏移數字啊,向上為負,向下為正,向右為正,向左為負。

如下這個例子,有興趣的小夥伴可以看看,其實是非常簡單運算,隻不過加上數組嵌套了,如果不明白什麼是數組的,可以看看這篇文章。

告訴你應該如何玩轉Offset函數,别怕,隻需要1分鐘就學會啦

現在再說個稍微難一點的例子,如下,在B2:L2和N2:X2區域中找出不重複的值填入B6:Y10,我們得到結果如下所示:

告訴你應該如何玩轉Offset函數,别怕,隻需要1分鐘就學會啦

這個函數的意思我們簡單介紹一下,從裡到外, COUNTIF($A2:$X2,$A2:$X2)=1,這個意思就是統計是否有重複的,如果有重複的就不等于1,則執行外層的IF函數。等于則代表沒有重複的,則直接将此值提出來,否則值為99. COLUMN(A1),取得列号碼,在外層SMALL函數取出第COLUMN(A1)與第幾個較小值,然後利用外層TEXT函數進行格式轉換,組成一個數組列。怎麼樣,是不很好了解。

剛剛我們說找出不重複的值,那麼反過來,如果想提取重複值,你應該如何處理呢?

函數公式如下,我們就不在介紹了,又不懂的可以在下面進行留言。

告訴你應該如何玩轉Offset函數,别怕,隻需要1分鐘就學會啦

現在在介紹一個非常有用的處理資料方法,我們有如下的源資料區域,需要将他們進行轉置進行處理。這個時候你會說使用自帶的轉置不就好啦嗎?但是使用自帶的得不到我們想要的結果。

告訴你應該如何玩轉Offset函數,别怕,隻需要1分鐘就學會啦

如下為我們通過Excel自帶的轉置得到的資料,自帶的轉置就是講橫縱坐标進行交換而已。

告訴你應該如何玩轉Offset函數,别怕,隻需要1分鐘就學會啦

而我們實際要得到的結果如下:這個的操作就是把源資料的編碼和數量進行了彙總操作,是不是很神奇,其實原理是很簡單的。

告訴你應該如何玩轉Offset函數,别怕,隻需要1分鐘就學會啦

檔案号=OFFSET(A$1,LOOKUP(ROW(A1)-1,SUBTOTAL(9,OFFSET(X$1,,,ROW($1:$8))),ROW($1:$8)),)

機關=VLOOKUP(A14,A:B,2,)

編碼=OFFSET(C$1,MATCH(A14,A:A,)-1,(COUNTIF(A$14:A14,A14)-1)*2)

數量=OFFSET(D$1,MATCH(A14,A:A,)-1,(COUNTIF(A$14:A14,A14)-1)*2)

怎麼樣,小夥伴們,您學會使用使用offset函數的應用了嗎?其實這個函數還有很多其他的正常化用法,在下一期我們會說說他在圖表資料方面的應用,有不懂的可以給我留言。

如果小夥伴還有其他的想知道或者想了解的,都可以直接先關注我然後在私信我,告訴我們您想知道什麼,或者想了解什麼,我們會根據你的需要進行擴充的,謝謝大家的支援!