目錄一行(列)轉多行多列
功能:
以指定的(單元格或相連單元格區域的引用)為參照系,通過給定偏移量得到新的引用。返回的引用可以是乙個單元格也可以是乙個區域(可以指定行列數,即陣列)。
語法:
=offset( reference, rows, cols, [height], [width])
=offset(參照單元格, 行偏移量, 列偏移量, 返回幾行, 返回幾列)
引數解釋:
最後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) -- 陣列計算複製源資料--右鍵--選擇性貼上--勾「轉置」,確定。
$表示絕對引用,可按f4直接切換。方法
一、方法二只能一次性轉置,後期無法隨時更新資料。
結合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行列互轉的三種方法
參考鏈結3:excel中一列(行)轉多行多列或多行多列轉一列(行)
層次查詢 行列轉換學習筆記
level 語法 select level column,expr.from table where condition start with condition connect by prior column1 column2 column1 prior column2 舉例 按照級別對emp員工...
Oracle 行列轉換筆記
工作中經常會用到這個場景,但是發現每次都會忘記要怎麼做,這裡特將oracle進行行轉列進行乙個歸納總結 使用pivot進行動態行轉列 首先建立乙個測試表course create table ps t ly test course id number 11 primary key,name varc...
mysql行列轉換 mysql行列轉換
1.一維轉二維 上圖為成績表中資料,現希望將資料轉換為下圖。靜態 轉化為二維表後的列名及列數是確定不變的,本例中即course只有數學 語文 英語這三門課。select s name,max if course 數學 score,0 as 數學,max if course 語文 score,0 as...