offset函數
功能:
以指定的(單元格或相連單元格區域的引用)為參照系,通過給定偏移量得到新的引用。返回的引用可以是一個單元格也可以是一個區域(可以指定行列數,即數組)。
語法:
=offset( reference, rows, cols, [height], [width])
=offset(參照單元格, 行偏移量, 列偏移量, 返回幾行, 返回幾列)
參數解釋:
- 參數Reference —— 參照單元格(單元格或相連單元格區域的引用)。否則,offset函數返回錯誤值#VALUE!
- 參數Rows——行偏移量。正數(代表在參照單元格的下方),負數(代表在參照單元格的上方)。
- 參數Cols——列偏移量。正數(代表在參照單元格的右邊)或負數(代表在參照單元格的左邊)。
- 參數Height——返回幾行(必須為正數),即所要返回的引用區域的行數。
- 參數Width——返回幾列(必須為正數),即所要返回的引用區域的列數。
最后2個參數不指定時,默認返回1行1列。
實例:
輸入公式:=offset(A1,1,1,1,1) -- 返回A1的右下角單元格
輸入公式:=sum(offset(A1,1,1,2,2)) -- 返回A1的右下角2*2單元格,並進行求和
可通過
F9
按鈕查看數據。
另外,也可以通過選定2*2單元格,再進行輸入公式,按住三鍵CTRL+SHIFT+ENTER
進行數組計算。
三鍵(CTRL+SHIFT+ENTER) -- 數組計算
行列轉換的三種方式
1.右鍵轉置
復制源數據--右鍵--選擇性粘貼--勾“轉置”,確定。
2.轉置公式TRANSPOSE
- 列轉行 → 先選中橫向連續的N個空白單元格,在編輯欄輸入公式
=TRANSPOSE($A$1:$A$10)
,然后按三鍵CTRL+SHIFT+ENTER
即可; - 反之,行轉列則先選中豎向的單元格區域,后續操作類似。
$表示絕對引用,可按F4直接切換。
3.引用函數OFFSET+ROWS/COLUMN(支持隨時更新數據)
方法一、方法二只能一次性轉置,后期無法隨時更新數據。
- 列轉行 → 輸入公式
=OFFSET($A$1,COLUMN(A1)-1,0,1,1)
向右拉 - 行轉列 → 輸入公式
=OFFSET($A$1,0,ROW(A1)-1,1,1)
向下拉
一行(列)轉多行多列
結合OFFSET
函數與ROW/COLUMN
函數進行嵌套使用,即可實現。
1.一列轉多列多行(或多行多列)
①先列后行,比如一列數據轉為四列多行。
在目標區域第一個單元格輸入以下公式,然后向右拉到第4列,再下拉直到出現空白。
=OFFSET($A$1,COLUMN(A1)-1+(ROW(A1)-1)*4,)&""
②先行后列,比如一列數據轉為四行多列。
在單元格輸入以下公式,然后向下拉到第4行,再右拉直到出現空白。
=OFFSET($A$1,ROW(A1)-1+COLUMN(A1)*4-4,)&""
2.一行轉多列多行(或多行多列)
①先列后行,比如一行數據轉為三列多行。
同樣,此例在單元格輸入以下公式,然后向右拉到第3列,再下拉直到出現空白。
=OFFSET($A$1,,(COLUMN(A1)-1)+(ROW(A1)-1)*3,)&""
②先行后列,比如一列數據轉為三行多列。
在單元格輸入以下公式,然后向下拉到第3行,再右拉直到出現空白。
=OFFSET($A$1,,(ROW(A1)-1)+(COLUMN(A1)-1)*3,)&""
3.多行多列轉一列
①先向下引用源數據,再向右引用。
單元格輸入以下公式,下拉直到出現空白。
=OFFSET($A$1,MOD(ROW(A6),6),ROW(A6)/6-1,)&""
②先向右引用源數據,再向下引用。
單元格輸入以下公式,下拉直到出現空白。
=OFFSET($A$1,ROW(A5)/5-1,MOD(ROW(A5),5))&""
4.多行多列轉一行
多行多列數據轉成單行的情況實際應用中應該不算常見,不過這里也一並整理了,若需要可直接套用公式。
①先向右引用源數據,再向下引用。
單元格輸入以下公式,右拉直到出現空白。
=OFFSET($A$1,INT(COLUMN(F1)/6)-1,MOD(COLUMN(F1),6))&""
②先向下引用源數據,再向右引用。
單元格輸入以下公式,右拉直到出現空白。
=OFFSET($A$1,MOD(COLUMN(E1),5),INT(COLUMN(E1)/5)-1)&""
①ROW()返回行號,比如ROW(A2)=2;
②COLUMN()返回列號,比如COLUMN(F1)=6;
③MOD()求余數,比如MOD(1,5)=1,即1÷5余數是1,再比如MOD(5,5)=0,因為5被5整除,沒有余數;
④上面每個公式最后都加了&"",作用是把引用空單元格得到的0去掉,顯示為空白;
⑤上面公式中用到不少逗號,(英文半角狀態下),不能隨意省略或移動位置,每一個小豆芽都有它存在的意義。
參考鏈接1:Excel中offset函數的使用方法
參考鏈接2:Excel行列互轉的三種方法