0

我有 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我通常使用的公式(如下)更复杂一些,以避免我在数据处理中遇到的一些错误。我正在尝试TeamT从表 1 中提取名称并填充stats表 2、E 列及以后的行。我这样做是基于

  1. Names表 1 列 D 和表 2 行 1 之间的匹配
  2. Dates在表 1 中 <=Dates在表 2 列 C 中具有以下公式

我现在的公式=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))

任何帮助,将不胜感激。我已经尝试了很多我找到的解决方案,但我仍然在这个问题上拉扯我的头发。

我还有第二个公式变体,其中我匹配基于Dates表 1 中的日期在表 2 列 C 中 >= Dates。在这种情况下,我想要最小匹配(最旧的日期)。我假设我只是使用MIN而不是MAX这个?

4

2 回答 2

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)

于 2017-10-07T17:32:35.660 回答
0

如果我理解正确,这里我有你第一个问题的答案。

为了使示例更容易,我将所有内容都放在一张纸上。对结果满意后,您可以复制到新工作表。这样,您将拥有工作公式。

我使用的数组公式(一起点击Ctrl++ Shift)是:Entercell K2

=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)))),"")

对于第二个问题,我将留给您从这两个中找出答案,这应该可以解决问题。

于 2017-10-07T02:53:27.277 回答