案例:
怎麼把下表 1 轉成下表 2?
解決方案:
1. 增加輔助列 C 和 D,公式分別如下:
=COUNTIF(A$1:A1,A1)
=INDEX(A:A,SMALL(IF($C:$C=1,ROW($A:$A),4^8),ROW(1:1)))&""
2. 在 F 列輸入如下公式,目的是把 D 列的豎表變為橫表:
=INDIRECT("D"&COLUMN(A1))
3. 在 F2 單元格輸入如下公式,按 Ctrl +Shift + Enter 生效,向下向右拖動公式,即可完成整張表格:
=INDEX($B:$B,SMALL(IF(F$1=$A:$A,ROW($B:$B),4^8),ROW(1:1)))&""
案例:
怎麼把下表 1 轉成下表 2?
解決方案:
1. 增加輔助列 C 和 D,公式分別如下:
=COUNTIF(A$1:A1,A1)
=INDEX(A:A,SMALL(IF($C:$C=1,ROW($A:$A),4^8),ROW(1:1)))&""
這兩個輔助列的目的是生成一個去重去空的隊名列表D 列為陣列公式,需要按 Ctrl +Shift + Enter 生效具體公式釋義請參見 去除Excel下拉選單中的空值和重複值 和 Excel下拉選單去空/去重(填坑貼)2. 在 F 列輸入如下公式,目的是把 D 列的豎表變為橫表:
=INDIRECT("D"&COLUMN(A1))
關於這段 indirect 函式的釋義,請參見 Excel indirect 函式(1) - 將一列資料排列成m行*n列3. 在 F2 單元格輸入如下公式,按 Ctrl +Shift + Enter 生效,向下向右拖動公式,即可完成整張表格:
=INDEX($B:$B,SMALL(IF(F$1=$A:$A,ROW($B:$B),4^8),ROW(1:1)))&""
表示當 A 列的隊名與 F1 至 L1 相同時,按列讀出隊員名,否則返回空值這是陣列公式,需要按 Ctrl +Shift + Enter 生效萬能陣列公式 index + small + if + row 的釋義請參見 去除Excel下拉選單中的空值和重複值