Tor*_*uun 16 lookup openoffice-calc vlookup microsoft-excel libreoffice-calc
我习惯使用 VLOOKUP,但这次我遇到了挑战。我不想要第一个匹配值,而是最后一个。如何?(我正在使用 LibreOffice Calc,但 MS Excel 解决方案应该同样有用。)
原因是我有两个包含数千行的文本列,假设一个是交易收款人列表(亚马逊、Ebay、雇主、杂货店等),另一个是支出类别列表(工资、税收、家庭、租金等)。有些交易每次都没有相同的支出类别,我想抓取最近使用的一个。请注意,列表未按任何列排序(实际上按日期),我不想更改排序顺序。
我所拥有的(不包括错误处理)是通常的“第一场比赛”公式:
=VLOOKUP(
[payee field] , [payee+category range] , [index of category column] ,
0 )
Run Code Online (Sandbox Code Playgroud)
我见过这样的解决方案,但#DIV/0!
出现错误:
=LOOKUP(2 , 1/( [payee range] = [search value] ) , [category range] )
Run Code Online (Sandbox Code Playgroud)
解决方案可以是任何公式,不一定是 VLOOKUP。我还可以交换收款人/类别列。只是排序列没有变化,拜托。
选择最频繁的值而不是最后一个值的解决方案的奖励积分!
您可以使用数组公式从最后一个匹配记录中获取数据。
=INDEX(IF($A$1:$A$20="c",$B$1:$B$20),MAX(IF($A$1:$A$20="c",ROW($A$1:$A$20))))
Run Code Online (Sandbox Code Playgroud)
Ctrl使用+ Shift+输入公式Enter。
INDEX
这与 a 的/MATCH
结构类似VLOOKUP
,但使用条件MAX
代替MATCH
。
请注意,这假设您的表格从第 1 行开始。如果您的数据从不同的行开始,您将需要ROW(...)
通过减去顶行和 1 之间的差值来调整该部分。