Excel从两个表中查找最后一个匹配项

时间:2018-02-20 09:27:59

标签: excel excel-formula match lookup

我正在寻找一种方法来查找A,B列中条目的最后一个实例,并从C,D列中获取相应的值

在下面的例子中,Henry的值是1374,Amy的值是1124

Example

Name1对应于Value1,Name2对应于Value2。 是否有公式可以从Name1和Name2列中找到最后一个条目并返回相应的Value1或Value2

粘贴原始数据如下:

<button (click)="changeColors()">Change colors<button/>
<table>
  <tr *ngFor="let item in items;let i=index" [style.color]="item.color">
    ...
  </tr>
</table>

3 个答案:

答案 0 :(得分:2)

<强>假设:

数据网格位于单元格A1:D8中。 价值观&#34;亨利&#34; &安培; &#34;艾米&#34;在单元格A10&amp;分别为A11

公式实施:

在单元格B10中实施以下公式。

备选方案1:

=INDEX($C$2:$D$8,MAX(IFERROR(LOOKUP(2,1/($A$2:$A$8=A10),ROW($A$2:$A$8)),-1),IFERROR(LOOKUP(2,1/($B$2:$B$8=A10),ROW($B$2:$B$8)),-1))-1,IF(IFERROR(LOOKUP(2,1/($A$2:$A$8=A10),ROW($A$2:$A$8)),-1)>IFERROR(LOOKUP(2,1/($B$2:$B$8=A10),ROW($B$2:$B$8)),-1),1,2))

备选方案2(略短于1):

=INDEX($C$2:$D$8,LOOKUP(2,1/SEARCH(A10&",",$A$2:$A$8&","&$B$2:$B$8&",",1),ROW($A$2:$A$8))-1,IF(IFERROR(LOOKUP(2,1/($A$2:$A$8=A10),ROW($A$2:$A$8)),-1)>IFERROR(LOOKUP(2,1/($B$2:$B$8=A10),ROW($B$2:$B$8)),-1),1,2)).

根据需要进行复制。

注意MAX()函数之后的-1值,用于调整行号。考虑到数据从第n行开始,它应该总是n-1。

答案 1 :(得分:2)

略短:

= INDEX($C$1:$D$8,MAX(IF($A$1:$B$8=A10,ROW($A$1:$B$8))),MATCH(A10,
  INDEX($A$1:$B$8,MAX(IF($A$1:$B$8=A10,ROW($A$1:$B$8))),0),0))

请注意,这是一个数组公式,因此您必须按 Ctrl + Shift + Enter 而不是 Enter 输入公式后。

请参阅下面的工作示例。

enter image description here

答案 2 :(得分:2)

我一直在努力记住另一种我见过2d查找的方法(我找不到链接了)。它基本上就像这样

=INDIRECT(TEXT(MAX((ROW($A$2:$B$8)*100+COLUMN($A$2:$B$8))*($A$2:$B$8=A10))+2,"R0C00"),FALSE)

使用 Ctrl Shift 输入作为数组公式输入。

所以我的想法是你从最后一次出现名字所在的行和列中生成一个数字(所以亨利就是702)。

您将其格式化为R7C02并将其输入到间接,以RC表示法提供对单元格的引用。列加2给出了您想要的单元格。

如果列&gt; 99,您可能会注意到这会失败,但您可以根据需要调整倍数。

enter image description here