前陣子有讀者來信詢問:如何把一維資料轉換為二維;二維資料轉換成一維。所以今天我們要來分享這個主題。
這邊先幫大家畫重點:使用位置相關函數 OFFSET、ROW、COLUMN,還有簡單的數學運算,其實就可以達到資料一、二維轉換的目的囉!
延伸閱讀:【Excel Function】維度轉換2:WRAPROWS、WRAPCOLS、TOROW、TOCOL
Excel 範例檔案下載:Excel-OFFSET-ROW-COLUMN-ROWS-COLUMNS.xlsx
欄、列
首先,先帶大家認識列(Row)、欄(Column)這兩者的區別,這邊希望大家可以拋開以前的認知:第幾行第幾列。我們統一以英文來記憶。由左至右,橫的我們稱為 Row;由上而下則為 Column。
依照這個規則,[E6]這格儲存格就會是第六列(Row),第五欄(Column)。
認識列(Row)、欄(Column)之後,接著要來介紹和此相關的四個函數:ROW、COLUMN、ROWS、COLUMNS。
可以簡單分成兩類:沒有「S」就是回傳第幾個;有「S」就是回傳有幾個。
PS:這次的資料維度轉換只會用到前兩項函數,另外的算是補充給各位
ROW
=ROW([對應儲存格])
這裡的參數 對應儲存格 非必填,為要取得列號之儲存格或範圍:
- 省略,則 ROW 函數會回傳當前的儲存格列號
- 單一儲存格,該儲存格的列號
- 儲存格範圍,對應範圍之列號。若回傳多個值為列陣
COLUMN
=COLUMN([對應儲存格])
這裡的參數 對應儲存格 非必填,為要取得欄號之儲存格或範圍:
- 省略,則 COLUMN 函數會回傳當前的儲存格欄號
- 單一儲存格,該儲存格的欄號
- 儲存格範圍,對應範圍之欄號,若回傳多個值為列陣
ROWS
=ROWS(對應儲存格)
這裡的參數 對應儲存格 為必填,為要取得列數之儲存格或範圍:函數回傳所選取儲存格共有幾列。
COLUMNS
=COLUMNS(對應儲存格)
這裡的參數 對應儲存格 為必填,為要取得欄數之儲存格或範圍:函數回傳所選取儲存格共有幾欄。
OFFSET
=OFFSET(a,b,c,[d],[e])
a:計算位移的起始參照位置
b:位移行數(向下為正,向上為負)
c:位移欄數(向右為正,向左為負)
[d]:回傳高度(選填,必須為正數)
[e]:回傳寬度(選填,必須為正數)
這裡簡單舉幾個例子,演示一下:
參照單格
正向位移(右、下)
=OFFSET(B2,1,1)
負向位移(左、上)
=OFFSET(C3,-1,-2)
參照多格
=OFFSET(A1:A2,1,1)
因為參照基準為多格儲存格,所以回傳的資料和參照儲存格的寬高也會一樣
回傳寬高設定
=OFFSET(A1,0,1,3)
=OFFSET(A1,0,1,,2)
如果回傳的高度為 0 的話,該格參數可以直接留空,不用特別輸入 0。
同理這題函數也可以這樣表示:「=OFFSET(A1,,1,,2)」
一維資料 > 二維資料
學會 OFFSET 後,現在我們要將一維資料轉換成二維資料,這裡需要用到我們上面提到的 ROW、COLUMN、OFFSET 這三個函數。
=OFFSET($A$1,ROW()-1+(COLUMN()-3)*5,0)
先簡單介紹一下轉換的規則:[A1]到[A5]要放到第一欄,[A6]到[A10]到第二欄,依此類推。
再來這邊就要進入數學環節了。
這邊全部都是以[A1]為基準去向下移動,函數的基本形式如下:
=OFFSET($A$1,向下移動列數,0)
接著我們來比較向下移動的差別:
- [C2]比[C1]多向下移動一格:每往下一列(ROW),就多移動 1 格
- [D1]比[C1]多向下移動五格:每往右一欄(COLUMN),就多移動 5 格
以起始[C1]為準,[C1]的列欄號分別為 1 和 3,配合 ROW、COLUMN 這兩個函數公式可以寫成:
=OFFSET($A$1,ROW()-1+COLUMN()-3,0)
最後我們給列號和欄號加權倍率:列是一倍,欄是五倍。最後我們可以得到:
=OFFSET($A$1,ROW()-1+(COLUMN()-3)*5,0)
二維資料 > 一維資料
這裡會用到 QUOTIENT:該函數會回傳兩數相除後的商值,也就是兩數相除後的整數部分。
- QUOTIENT(9,3)=3
- QUOTIENT(5,2)=2
- QUOTIENT(17,3)=5
二維資料轉一維資料,這裡我留給大家自行練習看看,我會在下方附上我的答案。
=OFFSET($A$1,MOD(ROW()-1,5),QUOTIENT(ROW()-1,5))
=OFFSET($A$1,MOD(ROW()-1,5),(ROW()-1)/5)
當然要完成資料維度轉換不只有這種方法,如果大家有其他解法也歡迎留言討論
另外如果各位有其他 Excel 問題也歡迎私訊墨菲莫非的粉專喔!
延伸閱讀:【Excel Function】維度轉換2:WRAPROWS、WRAPCOLS、TOROW、TOCOL
Excel 範例檔案下載:Excel-OFFSET-ROW-COLUMN-ROWS-COLUMNS.xlsx
更多 Excel 文章請至 文章導覽 尋找,也可利用上方「搜尋(Search...)」功能
有任何莫非工具的問題,歡迎至「表單」提問
Excel 是不是很容易
和墨菲一起用 Excel 把工作變簡單
Pingback: 【Excel】雙條件、多條件查詢(Multiple Conditions) - 墨菲莫非
Pingback: 【Excel】動態圖表(二):名稱管理員 - 墨菲莫非
Pingback: 莫非工具 | 文章導覽 - 墨菲莫非
Pingback: 【Excel Function】維度轉換2:WRAPROWS、WRAPCOLS、TOROW、TOCOL - 墨菲莫非
在网路上众多offset的说明与范例中, 您的说明我唯一看得够明白又能看得下去的!
非常感谢
Hi alingap~
謝謝,你的留言就是我們繼續寫作的動力😊😊😊
有任何問題也歡迎發問,或是到IG、FB粉絲專頁留言
也可以到「莫非樹洞」提問喔~