在英文中OFFSET是偏移的意思,這個行數是以指定的單元格為基準點,通過指定的偏移量
得到新的單元格。
語法:OFFET(reference,rows,cols,height,width)
1. reference :可以是一個坐标圓點,也可以是一個單元格區域,不可以省略
2. rows : 行偏移數,正數表示向下多少行,負數表示向上多少行。默認為1,可以省略,不能為0。
3.cols: 正數向右,負數向上。默認為1,可以省略,不能為0。
4.height: 表示高度,即所要返回的引用區域的行數,正數表示向下多少行,負數表示向上多少行。默認為1,可以省略,不能為0。
5.width: 表示寬度,即所要返回的引用區域的列數,正數表示向右多少列,負數表示向左多少列。默認為1,可以省略,不能為0。
普通用法下面是學生每個月份的考試成績:
1.取出姜松的2月份的成績
公式: =OFFSET(B1,3,1)
相當于B1單元格向下移動三行,向右移動一列。正數表示向下或者向右。
2.區域選擇
公式 = OFFSET(A2,2,2,2,2)
3.區域選擇
公式 = OFFSET(A2,2,2,-2,-2)
需求:取出所有學生的2月、4月、6月的成績
我們看下公式參數:
=OFFSET(基準點,行,列)
(1) 基準點我們可以選擇 $A2, 要鎖住行,向下時,會變為 $A2,$A3...,向右不變
(2) 行,我們取默認,位移為0,或者不填
(3) 列的移動我們就要變化了,可以使用COLUMN函數,相對于$A2,$A3,..姓名列,往右移動 2,4,6...,所以使用COLUMN(A1)*2
最終公式為:=OFFSET($A2,0,COLUMN(A1)*2)
所以寫出正确公式的前提是,提前分離出哪些是變的,哪些是不變的
多列數據合并為一列我們需要把公司各個部門列的姓名,轉為一列數據,效果如下:
我們先分析一下公式怎麼寫
多列轉為一列,行列都要變化,我們看下行偏移和列偏移
我們可以從上面找到規律,行偏移是 1-5 循環,而列偏移 是 每5個數都是一樣的。
行偏移: =MOD(ROW(A5),5) 1
列偏移: =INT(ROW(A5)/5)-1
總公式為: =OFFSET($A$1,MOD(ROW(A5),5) 1,INT(ROW(A5)/5)-1)
和上個案例正好相反,把一列分為列
我們可以拆解為以下幾個要點:
下面的是行偏移量,相對應$A$1。
從上面可以看出,隻有行對應移動,列為0;
1 |
1 5 |
1 10 |
1 15 |
2 |
2 5 |
2 10 |
2 15 |
3 |
3 5 |
3 10 |
3 13 |
4 |
4 5 |
4 10 |
4 15 |
5 |
5 5 |
5 10 |
5 15 |
上面表格我們可以總結出規律:
公式為 = ROW(A1) (COLUMN(A1)-1)*5
對于第一列: ROW(A1),ROW(A2) 返回的是 1,2,3......,COLUMN(A1),COLUMN(A2) ... 始終返回的是1.
對于第一行: ROW(A1) 是不變的,列為:COLUMN(A1),COLUMN(B1)..分别為 1,2,3...
總的公式為: =OFFSET($A$1,ROW(A1) (COLUMN(A1)-1)*5,)
如上圖,統計每個員工的季度銷售額:
實現步驟如下:
1.先使用MATCH函數 根據姓名定位到行号
2.根據季度數值定位到右移多少列
3.最後取3列
總公式為: =SUM(OFFSET($B$1,MATCH(P3,$B$2:$B$22,0),Q3*3-2,1,3))
OFFSET函數的用處很多,尤其是在動态數據源的構造方面,在拿到一個需求的時候,我們需要分析怎麼實現,一步一步的分析,特别是負責的公式,不是一步就能到位的,需要分析變和不變,每一個小點怎麼實現,最終組裝成一個大而複雜的公式。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!