OFFSET函數及其應用

offset函數很常用的查找與引用函數,它以指定的引用為參照系,通過給定偏移量返回新的引用(一個單元格或單元格區域)。

語法:OFFSET(reference, rows, cols, [height], [width])

OFFSET 函數語法具有下列參數:

Reference 必需,基準點。

必須為對單元格或相連單元格區域的引用;

否則,OFFSET返回錯誤值 #VALUE!。

Rows 必需。以基準點為依據偏移的行數。

行數可為正數(代表在起始引用的下方)

或負數(代表在起始引用的上方)。

Cols 必需。以基準點為依據偏移的列數。

列數可為正數(代表在起始引用的右邊)

或負數(代表在起始引用的左邊)。

Height 可選。高度,即所要返回的引用區域的行數。

正數向下返回,負數向上返回。

Width 可選。寬度,即所要返回的引用區域的列數。

正數向右返回,負數向左返回。

如果省略了Height 、Width,則返回的寬高與Reference相同。

需要注意的是:

OFFSET不會移動或改變任何單元格,它返回的只是一個區域的引用。

如果 rows 和 cols 的偏移使引用超出了工作表邊緣,則 OFFSET 返回,錯誤值#REF!。

圖1中的G4單元格中的12是如何得來的?我們從其中的公式可以看出,B4為基準點,然後行方向偏移2(向下偏移2行),列方向偏移1(向右偏移1列),則新的基準點為C6,圖中藍色單元格,然後以C6位基準點,要求行數為-3(向上返回3),列數為2(向右返回2),返回的引用區域為:C4:D6,所以sum對C4:D6區域求和得到1+1+2+2+3+3=12。


OFFSET函數及其應用

圖1

圖2中的H5單元格中的3.5又是如何得來的?我們從其中的公式可以看出,C4:D5為基準點,然後行方向偏移3(向下偏移3行),列方向偏移2(向右偏移2列),則新的基準點為E7,然後以E7為基準點要求函數為1行,列數為2列(負數代表向左返回2列),最終返回的引用區域為:D7:E7,圖中填充黃色單元格標註的。用AVERAGE對其求平均數得到(2+5)/2=3.5。


OFFSET函數及其應用

圖2

看到這裡可能有人會問在什麼情況下才能用到offset函數?

我們來看下面的兩個例子:

1、製作工資條

圖3是某公司12月份工資表


OFFSET函數及其應用

圖3

要求生成圖4所示的工資條


OFFSET函數及其應用

圖4

先不論其他生成工資條的方法,我們用函數公式完成時就需要用到offset函數。

我們新建一個工作表命名為工資條,在工資條工作表的A1單元格中輸入公式

=IF(MOD(ROW(),3),

OFFSET('12月工資表'!$A$3,(MOD(ROW()-1,3)>0)*ROUND(ROW()/3,0),COLUMN(A3)-1,),

"") 然後填充即可。


含義:mod(row(),3)的餘數為0時(邏輯值為假),行數為3的倍數,即能整除3的行為空行,返回if函數的第三個參數空值” ”

Mod(row(),3)的餘數為1、2時(邏輯值為真),返回if函數的第二個參數

OFFSET('12月工資表'!$A$3,(MOD(ROW()-1,3)>0)*ROUND(ROW()/3,0),COLUMN(A3)-1,)

if函數的第二個參數是offset函數,我們分析其含義:

以12月份工資表A3為基準點,分別向行列方向偏移。

當行數為1、4、7、10(以3遞增)……時,(MOD(ROW()-1,3)>0)=0,行偏移為0,列偏移colunm((A3)-1)。得到1、4、7、10……行填充的是12月份工資表第三行的工資列標題。

當行數為2、5、8、11(以3遞增)……時,(MOD(ROW()-1,3)>0)=1,行向下偏移1、2、3、4……,列偏移為colunm((A3)-1),填充的是每個員工的工資記錄。

2、 製作動態圖

圖5左邊是數據區域,顯示為每月的銷售額,這個數據是動態變化的,因為每月都要不斷更新數據,要求在右邊製作一個圖表,顯示最近3個月的銷售額。


OFFSET函數及其應用

圖5

以左邊的數據區域為數據源,生成圖表,然後我們需要對圖表的橫座標標籤引用區域縱座標的值進行設置。這時我們需要offset函數返回一個新的引用區域,然後定義成新的名稱。

定義2個名稱:

月份=OFFSET(Sheet1!$A$1,COUNTA(Sheet1!$A:$A)-1,0,-3,1)

銷售額==OFFSET(Sheet1!$B$1,COUNTA(Sheet1!$B:$B)-1,0,-3,1)

含義:counta函數是計算非空單元格個數,再減去1,作為offset函數基準點向下偏移的行數,然後再以新的準點向上返回3行,列數為1。對於上圖中名稱月份返回的是A13:A15,銷售額顯示的是B13:B15,如果數據發生動態變化,分別返回的始終是最近3個月的月份和銷售額。

插入選項卡,選擇插入一個簇狀柱形圖,然後選擇數據源,如圖6所示。

我們將橫座標標籤引用區域設置為月份,縱座標的值設置為銷售額。按確定按鈕,動態圖表設置完成,最終顯示如上

圖5效果。


OFFSET函數及其應用

圖6

對於offset函數,他有很多複雜的引用用法,讓我們在以後的學習中慢慢學習它吧!


分享到:


相關文章: