使用公式将 excel table/matrix 显示为列表

Display an excel table/matrix as a list using formulas

这是对我之前的问题 的 follow-on,因为我认为它值得自己探索。

我的源数据以位置作为列标题 (B1:E1),以事件作为行标题 (A2:A50)。其余单元格 (B2:E50) 填充了表示每个位置的下一个事件举行时间的日期。并非所有地点都为每个活动提供服务,因此 "N/A" 是可能的。活动可能会在同一天的同一地点举行。

在之前的回答中,我学习了如何将事件显示为每个位置下的单独列表,并按日期排序。对于本练习,我希望将所有事件合并到一个由三列(日期、事件、位置)组成的列表中,并按此顺序排序,并使用公式进行排序。与上一个练习一样,数据透视表是不可能的。

源数据:

   A                    B               C           D               E
1                       San Francisco   Tampa       Philadelphia    Houston
...
6   Introduction        7-Feb-15        24-Jan-15   17-Jan-15       10-Jan-15
7   Beginner I          9-Feb-15        26-Jan-15   19-Jan-15       12-Jan-15
8   Beginner II         23-Feb-15       9-Feb-15    2-Feb-15        26-Jan-15
9   Beginner III        9-Mar-15        23-Feb-15   16-Feb-15       9-Feb-15
10  Intermediate I      16-Mar-15       19-Jan-15   N/A             19-Jan-15
11  Intermediate II     12-Jan-15       2-Feb-15    N/A             2-Feb-15
12  Intermediate III    26-Jan-15       16-Feb-15   N/A             16-Feb-15
13  Advanced I          9-Feb-15        N/A         N/A             2-Mar-15
14  Advanced II         23-Feb-15       N/A         N/A             16-Mar-15
15  Advanced III        9-Mar-15        N/A         N/A             30-Mar-15

期望的输出:

January     
10-Jan-15   Introduction        Houston
12-Jan-15   Beginner I          Houston
12-Jan-15   Intermediate II     San Francisco
17-Jan-15   Introduction        Philadelphia
19-Jan-15   Beginner I          Philadelphia
19-Jan-15   Intermediate I      Houston
19-Jan-15   Intermediate I      Tampa
24-Jan-15   Introduction        Tampa
26-Jan-15   Beginner I          Tampa
26-Jan-15   Beginner II         Houston
26-Jan-15   Intermediate III    San Francisco

您可以用几乎与以前相同的方式获取日期列表,因为公式不关心源是单列还是矩阵,所以在您的 "summary" 工作表你可以从 A3

中的这个数组公式开始

=IFERROR(SMALL(IF(Master!B:E>=A,IF(Master!B:E< EOMONTH(A,0)+1,Master!B:E)),ROWS(A:A3)),"")

那么下一步可能更容易获得城市,所以在 C3

=IF(A3="","",INDEX(Master!B:E,SMALL(IF(Master!B:E=A3,COLUMN(Master!B:E)-COLUMN(Master!B)+1),COUNTIF(A:A3,A3))))

然后在 B3 中进行正文

=IF(A3="","",INDEX(Master!A:A,SMALL(IF(INDEX(Master!B:E,0,MATCH(C3,Master!B:E,0))=A3,ROW(Master!A:A)-ROW(Master!A)+1),COUNTIFS(A:A3,A3,C:C3,C3))))

所有公式需要用CTRL+SHIFT+ENTER确认并抄下来列到你需要的程度