簡體   English   中英

Excel從兩個表中查找最后一個匹配項

[英]Excel find last match from two tables

我正在尋找一種方法來查找A,B列中條目的最后一個實例,並從列C,D中獲取相應的值

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

例

Name1對應於Value1,Name2對應於Value2。 是否有一個公式可以從Name1和Name2列中找到最后一個條目,並返回相應的Value1或Value2

粘貼的原始數據如下:

Name1   Name2   Value1  Value2
Sara    Amy     1265    1241
John    Sara    1142    1214
Amy     Henry   1295    1121
Amy     John    1175    1323
Sara    John    1085    1251
Sara    Henry   1242    1374
Amy     Sara    1124    1055

假設:

數據網格位於單元格A1:D8 值“Henry”和“Amy”分別在單元格A10A11

公式實施:

在單元格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。

略短:

= 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鍵

請參閱下面的工作示例。

在此輸入圖像描述

我一直在努力記住另一種我見過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 Enter作為數組公式輸入

因此,我們的想法是從名稱的最后一次出現的行和列生成一個數字(因此對於Henry來說,它將是702)。

您將其格式化為R7C02並將其輸入到間接,以RC表示法提供對單元格的引用。 列加2給出了您想要的單元格。

您可能會注意到,如果列> 99,則會失敗,但您可以根據需要調整乘數。

在此輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM