我有2个数据表,一个只有5列,第二个是100列,但简单来说,它们的格式如下。两者都是数百行。
表1(按升序排列,所有列)
A B C D E
1 Date TeamF Trans Name TeamT
2 date1 teamF1 trans1 name1 teamT1
3 date2 teamF2 trans2 name2 teamT2
4 date3 teamF3 trans3 name3 teamT3
5 date4 teamF4 trans4 name4 teamT4
6 date5 teamF5 trans5 name5 teamT5
表2(未按任何方式排序)
A B C D E F G ,etc.
1 Team Game Date Opp NameA NameB NameC ,etc...
2 team1 game1 date1 opp1 statsA1 statsB1 statsC1 ,etc...
3 team2 game2 date2 opp2 statsA2 statsB2 statsC2 ,etc...
4 team3 game3 date3 opp3 statsA3 statsB3 statsC3 ,etc...
5 team4 game4 date4 opp4 statsA4 statsB4 statsC4 ,etc...
6 team5 game5 date5 opp5 statsA5 statsB5 statsC5 ,etc...
我一直试图让我通常使用的INDEX/MATCH
公式(下面)稍微复杂一点,以避免我在数据处理中遇到的一些错误。我正在尝试从表1中提取TeamT
名称,并填充表2,E列和更高列中的stats
行。我基于
Names
的匹配Dates
在表2列C中为< = Dates
使用以下公式我目前的公式=INDEX(Table1!$A:$E,MATCH(1,(Table1!$D:$D=Table2!E$1)*(Table1!$A:$A<=Table2!$C2),0),5)
正如您可能看到的,如果表1中有多个日期小于C2,我只会得到第一个日期。我真正喜欢的是最大值(最新的)。我一直在玩MAX/IF
语句和INDEX/MATCH/IF
语句,但无法获得正确的结果。这些失败尝试的一些例子在
示例1
=MAX(IF(Table1!$D:$D=Table2!E$1,IF(Table1!$A:$A<=Table2!$C2,Table1!$E:$E)))
示例2
=INDEX(Table1!$E:$E,MATCH(MAX(IF(Table1!$D:$D=Table2!E$1,Table1!$A:$A<=Table2!$C2)),IF(Table1!$D:$D=Table2!E$1,Table1!$A:$A<=Table2!$C2),0))
任何帮助将不胜感激。我已经尝试了很多我已经找到的解决方案,但是我仍然会把头发拉出来。
我还有公式的第二个变体,其中我根据表1中Dates
的日期匹配表2中的&gt; = Dates
列C.在这种情况下,我想要最小匹配(最古老的日期)。我假设我只是使用MIN
代替MAX
吗?
答案 0 :(得分:0)
如果我理解正确,我会在第一个问题上给出答案。
为了使样本更容易,我将所有内容放在一张纸上。一旦您对结果满意,您就可以复制到新表格。这样你就可以得到工作公式。
我从cell K2
使用的数组公式(单击 Ctrl + Shift + Enter ):
=IFERROR(INDEX($E$2:$E$11,MATCH(MAX(IF(--($D$2:$D$11=K$1)*--($A$2:$A$11<$I2)*$A$2:$A$11,$A$2:$A$11)),IF(--($D$2:$D$11=K$1)*--($A$2:$A$11<$I2)*$A$2:$A$11,$A$2:$A$11),0)),"")
您可以将其拖动到所需的字段。请注意这是为了找到最新的日期。因为我不是100%确定这是你正在寻找的。因此,在cell O2
的示例中,我设法找到最新的行,公式(常规公式)是:
=IFERROR(INDEX($E$2:$E$11,LOOKUP(2,1/(--($D$2:$D$11=O$1)*--($A$2:$A$11<$I2)),(ROW($E$2:$E$11)-ROW(O$1)))),"")
对于第二个问题,我会留给你从这两个问题中找出来,这应该可以解决问题。
答案 1 :(得分:0)
我自己用MAXIFS解决了最大日期和多标准VLOOKUP功能
根据名称匹配
找到小于当前行的最大日期 =VLOOKUP(MAXIFS(Table1!$A:$A,Table1!$D:$D,E$1,Table1!$A:$A,"<="&$C2)&E$1,CHOOSE({1,2},Table1!$A:$A&Table1!$D:$D,Table1!$E:$E),2,0)
基于名称匹配的最小日期大于当前行的解决方案是
=VLOOKUP(MINIFS(Table1!$A:$A,Table1!$D:$D,E$1,Table1!$A:$A,">="&$C2)&E$1,CHOOSE({1,2},Table1!$A:$A&Table1!$D:$D,Table1!$B:$B),2,0)