課程信息卡
課程:《Excel天天訓練營》2.0圖文版章節:第2章-精通函數內容:數組公式(列查找)
用excel數組公式,如果遇上按列查找的時候,你會發現公式會出問題。這是因為我們使用的編號部分row(A1:A8)這個數字組是一行數字,不適用於按列查找。
如圖中案例表格,數據雖然是一行一行的記錄,但要查詢的內容都在一行的不同列,屬於按列查找,這時候就要用行列轉換函數TRANSPOSE。
如果你沒有學會這些函數,那麼就無法應對大量數據的表格。
現在,我們就來用函數公式實現excel自動化辦公。
一、掌握「transpose函數」的用法
transpose函數是將內容由行變成列。用法為:
=transpose(數組)
示例說明:
選中E3:G5單元格區域,數組公式為
=TRANSPOSE(A2:C4)
即將A2:C4的內容,由行變成列,於是轉為了E3:G5這樣的內容。
這種行列轉置,我們也可以通過複製A2:C4區域,然後在存放位置點擊「右鍵-選擇性粘貼-轉置」。
我們使用transpose函數,更主要的是為了在數組公式裡面應用。
使用「transpose函數」進行數組取值
圖中案例是要將可選的選項去除掉拒絕的選項,可以使用if函數來做判斷,使用row函數來編號。但因為這裡是按列查找,所以要用transpose對row函數進行轉置。然後再用small函數提取數字,用index函數取結果,用iferror函數來過濾錯誤值。
我們分步驟來寫這個數組公式。
第一步:if函數部分
I3:L3區域的數組公式為
=IF((B3:E3<>G3),TRANSPOSE(ROW($A$1:$A$4)))
代表將B3\C3\D3\E3分別和G3單元格做對比,<>代表「非、不是」的意思,如果不是G3內容,就給它進行位置編號。
由於row(A1:A4)是一行一行的編號,所以要用transpose進行轉為一列一列的編號。
row(A1:A4)={1;2;3;4}transpose(row(A1:A4))={1,2,3,4}
注意:
數組裡面,分號;隔開的是行數據,逗號,隔開的是列數據。
當然,我們之前講過column函數,這部分用column函數也可以實現
transpose(row(A1:A4))=column(A1:D1)
但因為列是英文字母,不如數字看起來更直觀,馬上知道有多少個數字組成,所以推薦用transpose來進行轉置。
然後由於這一行數據等會要下拉填充,如果不鎖住A1:A4,它會變化,所以前面加上$固定住。
第二步:small函數部分
在if函數外面,套上small函數,將數字提到前面。
=SMALL(IF((B3:E3<>G3),TRANSPOSE(ROW($A$1:$A$4))),TRANSPOSE(ROW($A$1:$A$4)))
實際就是
=SMALL(if函數部分,TRANSPOSE(ROW($A$1:$A$4)))
而且TRANSPOSE這部分也是if函數裡面已經有的。
第三步:index函數部分