显示Excel表格/matrix列表使用公式

这是我之前的问题的一个后续,因为我认为这是值得自己探索的。

我的源数据按位置组织,列标题(B1:E1),事件为行标题(A2:A50)。 剩下的单元格(B2:E50)填充了代表每个位置下一个事件何时将被保留的date。 并非所有的地点都服务于每个事件,所以“N / A”是可能的。 事件可能在同一天在同一地点举行。

在之前的回答中,我学会了如何在每个位置下按照datesorting将事件显示为单独的列表。 对于这个练习,我希望将所有事件合并到一个由三列(date,事件,位置)组成的列表中,按照顺序sorting,并使用公式来完成。 和前面的练习一样,数据透视表是不可能的。

源数据:

ABCDE 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/AN/A 2-Mar-15 14 Advanced II 23-Feb-15 N/AN/A 16-Mar-15 15 Advanced III 9-Mar-15 N/AN/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 

您可以像以前一样获取date列表,因为公式并不关心源是单列还是matrix,因此在“摘要”工作表的单元格A1中的月份的第一个月,您可以从这个数组公式在A3中

= IFERROR(小(IF(主!B $ 2:E $ 50> = A $ 1,IF(主!B $ 2:E $ 50 EOMONTH(A $ 1,0)+1,主!B $ 2:E $ 50)),ROWS (A $ 3:A3)), “”)

那么在C3的时候可能比较容易获得城市

= IF(A3 = “”, “”,INDEX(主B $ 1:E $ 1座,小(IF(主设备B $ 2:!E $ 50 = A3,COLUMN(主设备B $ 2:E $ 50)-Column(主! B $ 2)+1),COUNTIF(A $ 3:A3,A3))))

然后在文本的B3

= IF(A3 = “”, “”,INDEX(主A $ 2:一台$ 50 SMALL(IF(INDEX(主设备B $ 2:!E $ 50,0,MATCH(C3,主设备B $ 1:E $ 1,0 ))= A3,ROW(主A $ 2:!甲$ 50)-ROW(主A $ 2)+1),COUNTIFS(A $ 3:A3,A3,C $ 3:C3,C3))))

所有的公式都需要使用CTRL + SHIFT + ENTER进行确认,并根据需要复制列