如何通过查找另一个表中的列来填充表?

问题描述 投票:0回答:1

Screenshot of tables

我有一个表格(左),其中每行定义一个人的课程日期/时间。

我有第二张表(右),这是我生成的时间表。

我正在尝试使用公式根据计划表填充时间表 - 但没有运气。我尝试过从网络搜索中获取的多个 INDEX/MATCH 公式...但没有一个获得正确的结果。

时间表中的每个单元格(由其相对时间行值和日期列标题值定义)应填充相应的初始值,其中时间/日期组合映射到计划表的会话/日期列。

因此,时间表上的

TUESDAY
09:00-09:30
应计算为
AB
,因为单元格
K3
(Day) 和
L3
(Time) 已映射到计划表中 - 以及生成的缩写是
AB
(细胞
C3
)。

希望图片能比我的话更好地解释。

感谢所有建议。

我尝试过的来源链接:

multidimensional-array excel-formula timetable
1个回答
0
投票

假设根据发布的标签没有

Excel Constraints
,那么我相信这应该可以满足您的要求:


• 单元格中使用的公式 Q2

=LET(
     a, UNIQUE(INT(SEQUENCE(,COLUMNS(Table1[[Session 1 - Day]:[Session 3 - Time]]),,0.5)),1),
     b, TOCOL(IFS(a,Table1[Initials])),
     c, WRAPROWS(TOCOL(Table1[[Session 1 - Day]:[Session 3 - Time]]),2),
     d, HSTACK(b,c),
     e, FILTER(d, INDEX(d,,3)<>0),
     XLOOKUP(1,($P2=INDEX(e,,3))*(Q$1=INDEX(e,,2)),TAKE(e,,1),""))

上面的公式需要向下填写,向右填写!。但是,您也可以使用以下方法,它会溢出整个数据。


• 单元格中使用的公式 Q2

=LET(
     a, UNIQUE(INT(SEQUENCE(,COLUMNS(Table1[[Session 1 - Day]:[Session 3 - Time]]),,0.5)),1),
     b, TOCOL(IFS(a,Table1[Initials])),
     c, WRAPROWS(TOCOL(Table1[[Session 1 - Day]:[Session 3 - Time]]),2),
     d, HSTACK(b,c),
     e, FILTER(d, INDEX(d,,3)<>0),
     MAKEARRAY(ROWS(P2:P13),COLUMNS(Q1:U1),LAMBDA(x,y,
     XLOOKUP(1,(INDEX(P2:P13,x)=INDEX(e,,3))*(INDEX(Q1:U1,y)=INDEX(e,,2)),TAKE(e,,1),""))))

© www.soinside.com 2019 - 2024. All rights reserved.