Excel 如何批次將矩陣(多行多列)資料轉為單行或單列資料

今天学了微积分發表於2024-03-29

該問題源於這樣一個實踐場景,試想有一個花名冊,如下這樣:

現在需要根據這個花名冊批次將其轉換為考試時貼在桌上的小標籤,如下這樣:

那麼這個需求本質上就是將多行多列資料(考生姓名、考生編號、證件號碼三列)轉為單列資料(上圖需求結果的第二列)。第一列是靜態資料,第三列是遞增數列,相對都比較容易實現。

現在就教大家如何實現。

需要用到的 Excel 函式

OFFSET

實現該需求的最主要的函式,能實現透過計算座標取值。這句話有點繞,大多數時候我們寫函式的時候是將對應單元格的座標寫死的,也就是將一列資料經過計算後輸出到另一列,輸入的單元格和輸出的單元格的座標是彼此對應的。而這個函式能夠幫我們按照自己的需求“計算”出所需座標並取值。

具體用法如下:

OFFSET(reference, rows, cols, [height], [width])

引數解釋:

  • reference: 偏移座標。如我們預設的偏移座標是(0,0),即左上第一個點。如果設定了偏移座標,後面的 rows 和 cols 都是相對 reference 來講的。
  • rows: 第幾行。相對reference 來講。
  • cols: 第幾列。reference 來講的。
    剩餘的兩個引數本文當中用不到,在此不作解釋。

實際座標為(reference + rows, reference + cols)。如想獲取座標為(10, 10)的單元格,則OFFSET((5, 5), 5, 5),OFFSET((3, 7), 7, 3)都是獲取到這個單元格的函式。

QUOTIENT

整除,無餘數。

QUOTIENT(10, 5) = 2

QUOTIENT(10, 3) = 3

MOD

取餘。

MOD(10, 5) = 0

MOD(10, 3) = 1

ROW

獲取橫座標。

ROW((3, 5)) = 3

ROW((5, 3)) = 5

其他用到的 Excel 小技巧

相對位置和絕對位置

在函式中要直接獲取一個單元格,可以A1,也可以$A$1。前者是相對位置,也即座標值會隨著單元格的拉大而變化。後者是絕對位置,反之,座標值不會隨著單元格的拉大而變化。

具體實現


=OFFSET(Sheet2!$B$2,QUOTIENT(ROW(A3), 3)-1,MOD(ROW(A3), 3))

=OFFSET(Sheet2!$B$2,QUOTIENT(ROW(A3), 3)-1,3)

參考

  • OFFSET 函式
  • EXCEL函式中常用符號的用法
  • EXCEL中一列(行)轉多行多列或多行多列轉一列(行)

相關文章