使用公式将 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确认并抄下来列到你需要的程度
这是对我之前的问题
我的源数据以位置作为列标题 (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确认并抄下来列到你需要的程度