今天要整理一組「問位置」的函式:ROW 跟 COLUMN 告訴你某個儲存格在第幾列、第幾欄,ROWS 跟 COLUMNS 告訴你一個範圍有幾列、幾欄,ADDRESS 反過來把列號欄號組回 $B$3 這種位址,SHEET 則是問工作表的編號。
這幾個單獨看都很小,不過在流水號、動態範圍、找位置的公式裡常常是配角,我個人幾乎每個檔案都會用到 ROW 跟 ROWS。
怎麼選
注意 ROW 和 ROWS 只差一個 S,意思完全不同。
| 想知道什麼 | 用哪個 | 傳回 |
|---|---|---|
| 某格在第幾列 | ROW | 列號 |
| 某格在第幾欄 | COLUMN | 欄號,A 是 1 |
| 範圍有幾列 | ROWS | 列數 |
| 範圍有幾欄 | COLUMNS | 欄數 |
| 用列號欄號組出位址 | ADDRESS | 文字,例如 $B$3 |
| 這張工作表是第幾張 | SHEET | 編號 |
下面的例子都用同一張手搖飲銷量表,放在 A1:C6:
| A | B | C | |
|---|---|---|---|
| 1 | 品項 | 杯數 | 單價 |
| 2 | 蘋果紅茶 | 37 | 45 |
| 3 | 烏龍奶茶 | 112 | 55 |
| 4 | 蘋果綠茶 | 8 | 45 |
| 5 | 青茶 | 64 | 35 |
| 6 | 桂花烏龍 | 21 | 50 |
ROW 與 COLUMN
ROW
傳回儲存格的列號。
語法:
- 儲存格:選填,不填就是公式所在的那一格。
B4 在第幾列
=ROW(B4)結果是 4。不填參數的 放在 D4,也會得到 4。
我最常用它來做流水號。D2 輸入:
用列號做流水號,向下複製
=ROW()-1向下複製到 D6,會得到 1、2、3、4、5。因為標題佔第 1 列,所以減 1。這樣做的好處是中間刪掉一列,後面的編號會自己補上,不會斷號。
單獨輸入 只會回第一個列號 2,不會自己展開。要列出全部列號,包上 ARRAYFORMULA:
ARRAYFORMULA 讓 ROW 範圍展開,得到 2 到 6
=ARRAYFORMULA(ROW(A2:A6))結果是五列 2、3、4、5、6。FILTER 這類原生處理陣列的函式,也可以直接在條件裡使用 ROW(範圍),例如 FILTER(A2:A6,MOD(ROW(A2:A6),2)=0) 會取出第 2、4、6 列。
COLUMN
傳回儲存格的欄號,A 欄是 1,B 欄是 2,以此類推。
語法:
C1 在第幾欄
=COLUMN(C1)結果是 3。我通常拿它搭配 INDEX 或 VLOOKUP 的欄號參數,向右複製時欄號會自己跟著加。
ROWS 與 COLUMNS
ROWS
傳回範圍的列數。
語法:
B2:B6 有幾列
=ROWS(B2:B6)結果是 5。拿來算平均就是 ,也就是 242 ÷ 5 = 48.4。
要注意,ROWS 只管範圍的大小,不管格子裡有沒有資料。 是 99,不管只有 5 格有內容。要算有資料的格子,用 COUNTA。
COLUMNS
傳回範圍的欄數。
語法:
A1:C1 有幾欄
=COLUMNS(A1:C1)結果是 3。
ADDRESS 與 SHEET
ADDRESS
用列號跟欄號組出儲存格位址,傳回的是文字。
語法:
- 列、欄:數字。
- 絕對或相對模式:選填,1 是列欄都絕對(預設,
$B$5),2 是只有列絕對(B$5),3 是只有欄絕對($B5),4 是都相對(B5)。 A1表示法:選填,TRUE(預設)是B5的寫法,FALSE 是R5C2。- 工作表:選填,要放進位址的工作表名稱。
第 5 列第 2 欄的位址
=ADDRESS(5, 2)結果是 $B$5。換成 就是 B5, 則是 R5C2。
有了位址文字,可以做一個實用的題目:我想知道賣最多杯的那一格在哪裡。
找出杯數最大值所在的儲存格位址
=ADDRESS(MATCH(MAX(B2:B6), B1:B6, 0), 2)MAX(B2:B6) 是 112,MATCH 在 B1:B6 裡找到它是第 3 個,所以列號是 3,欄是 2,結果是 $B$3。
另外,ADDRESS 傳回的是文字,不是真正的參照。想讓它變成參照,要交給 INDIRECT: 會得到 112。
指定工作表的寫法, 會得到 Sheet2!$B$5;工作表名稱含空白、中文或以數字開頭時,會自動加上單引號,例如 '月報'!$B$5。
SHEET
傳回工作表的編號。
語法:
- 值:選填,工作表名稱,或是該工作表裡的儲存格參照;省略時傳回公式所在的工作表。
A1 所在的工作表是第幾張
=SHEET(A1)放在檔案的第一張工作表上會得到 1,編號是從最左邊的分頁往右數。被隱藏的工作表算不算進編號,官方說明沒有提到。
用在哪裡
幾個我會用到的組合:
- 流水號:,刪列後不會斷號。
- 條件格式隔列上色:自訂公式寫 ,偶數列會套用格式。
- 取每隔一列的資料:,會取出第 2、4、6 列,也就是
A2、A4、A6的三個品項。 - 範圍變動時不用改數字: 這類抽籤,見 亂數與序列函式。
需要的時候回來查一下,就這樣!
接下來可以
相關文章
查看所有文章參照的藝術:公式往下拖時,哪些要動、哪些要釘住
從折扣率拖到一半變成 0 的小錯誤出發,用圖看相對、絕對、混合參照在複製時怎麼變,再談範圍的兩端、跨工作表與命名範圍,判斷 $ 該放在哪裡。
INDEX 與 MATCH:先找位置,再把值拿出來
INDEX 依列、欄位置取出儲存格的值,MATCH 找出某個值排在第幾個。從各自的用法開始,再組合成 INDEX(…, MATCH(…, 0)) 做查表,包含 VLOOKUP 做不到的往左查,以及 MATCH 預設參數的陷阱。
亂數與序列函式:RAND、RANDBETWEEN、RANDARRAY、SEQUENCE
RAND、RANDBETWEEN、RANDARRAY 產生亂數,SEQUENCE 產生等差數列。附語法、抽籤與洗牌的例子,以及亂數每次重算都會變、要用貼上值固定的做法。
留言討論
共 0 則留言
