【Excel Function】維度轉換:OFFSET位移、ROW/ROWS行列、COLUMN/COLUMNS欄

  • Post author:
Home » 莫非工具 » Excel » 【Excel Function】維度轉換:OFFSET位移、ROW/ROWS行列、COLUMN/COLUMNS欄

前陣子有讀者來信詢問:如何把一維資料轉換為二維;二維資料轉換成一維。所以今天我們要來分享這個主題。

1D to 2D
2D to 1D

這邊先幫大家畫重點:使用位置相關函數 OFFSETROWCOLUMN,還有簡單的數學運算,其實就可以達到資料一、二維轉換的目的囉!

延伸閱讀:【Excel Function】維度轉換2:WRAPROWS、WRAPCOLS、TOROW、TOCOL

Excel 範例檔案下載:Excel-OFFSET-ROW-COLUMN-ROWS-COLUMNS.xlsx


欄、列

首先,先帶大家認識列(Row)、欄(Column)這兩者的區別,這邊希望大家可以拋開以前的認知:第幾行第幾列。我們統一以英文來記憶。由左至右,橫的我們稱為 Row;由上而下則為 Column。

依照這個規則,[E6]這格儲存格就會是第六列(Row),第五欄(Column)。

認識列(Row)、欄(Column)之後,接著要來介紹和此相關的四個函數:ROWCOLUMNROWSCOLUMNS
可以簡單分成兩類:沒有「S」就是回傳第幾個;有「S」就是回傳有幾個
PS:這次的資料維度轉換只會用到前兩項函數,另外的算是補充給各位

ROW

=ROW([對應儲存格])

這裡的參數 對應儲存格 非必填,為要取得列號之儲存格或範圍:

  • 省略,則 ROW 函數會回傳當前的儲存格列號
  • 單一儲存格,該儲存格的列號
  • 儲存格範圍,對應範圍之列號。若回傳多個值為列陣
ROW

COLUMN

=COLUMN([對應儲存格])

這裡的參數 對應儲存格 非必填,為要取得欄號之儲存格或範圍:

  • 省略,則 COLUMN 函數會回傳當前的儲存格欄號
  • 單一儲存格,該儲存格的欄號
  • 儲存格範圍,對應範圍之欄號,若回傳多個值為列陣
COLUMN

ROWS

=ROWS(對應儲存格)

這裡的參數 對應儲存格 為必填,為要取得列數之儲存格或範圍:函數回傳所選取儲存格共有幾列

ROWS

COLUMNS

=COLUMNS(對應儲存格)

這裡的參數 對應儲存格 為必填,為要取得欄數之儲存格或範圍:函數回傳所選取儲存格共有幾欄

COLUMNS

OFFSET

=OFFSET(a,b,c,[d],[e])
a:計算位移的起始參照位置
b:位移行數(向下為正,向上負)
c:位移欄數(向右正,向左負)
[d]:回傳高度(選填,必須為正數)
[e]:回傳寬度(選填,必須為正數)

OFFSET

這裡簡單舉幾個例子,演示一下:

參照單格

正向位移(右、下)

=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 後,現在我們要將一維資料轉換成二維資料,這裡需要用到我們上面提到的 ROWCOLUMNOFFSET 這三個函數。

=OFFSET($A$1,ROW()-1+(COLUMN()-3)*5,0)
1D to 2D

先簡單介紹一下轉換的規則:[A1]到[A5]要放到第一欄,[A6]到[A10]到第二欄,依此類推。

再來這邊就要進入數學環節了。

這邊全部都是以[A1]為基準去向下移動,函數的基本形式如下:

=OFFSET($A$1,向下移動列數,0)

接著我們來比較向下移動的差別:

  • [C2]比[C1]多向下移動一格:每往下一列(ROW),就多移動 1 格
  • [D1]比[C1]多向下移動五格:每往右一欄(COLUMN),就多移動 5 格

以起始[C1]為準,[C1]的列欄號分別為 1 和 3,配合 ROWCOLUMN 這兩個函數公式可以寫成:

=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)
2D to 1D

當然要完成資料維度轉換不只有這種方法,如果大家有其他解法也歡迎留言討論

另外如果各位有其他 Excel 問題也歡迎私訊墨菲莫非的粉專喔!

延伸閱讀:【Excel Function】維度轉換2:WRAPROWS、WRAPCOLS、TOROW、TOCOL

Excel 範例檔案下載:Excel-OFFSET-ROW-COLUMN-ROWS-COLUMNS.xlsx


更多 Excel 文章請至 文章導覽 尋找,也可利用上方「搜尋(Search...)」功能
有任何莫非工具的問題,歡迎至「表單」提問

Excel 是不是很容易
和墨菲一起用 Excel 把工作變簡單

This Post Has 6 Comments

  1. alingap

    在网路上众多offset的说明与范例中, 您的说明我唯一看得够明白又能看得下去的!
    非常感谢

    1. Mr. Y

      Hi alingap~
      謝謝,你的留言就是我們繼續寫作的動力😊😊😊
      有任何問題也歡迎發問,或是到IG、FB粉絲專頁留言
      也可以到「莫非樹洞」提問喔~

歡迎留言,與我們分享你的看法!