Excel 中给定字符串在列中的最后一次出现

Excel 中给定字符串在列中的最后一次出现

我正在使用 LOOKUP 函数在提供的列中查找给定字符串的最后一次出现,如下所示:

LOOKUP(A3;Runs!D3:D6;Runs!A3:A6)

但是,向量中的边界是硬编码的:Runs!A3:A6。我希望将此值动态设置为列中最后一个包含数据的单元格。我找到了给出最后一行索引的公式:

COUNTA(Runs!A:A)

这个其他函数给了我单元格引用(单元格的内容),但我似乎无法将其与 LOOKUP 公式合并:

INDIRECT("Runs!A"&COUNTA(Runs!A:A))

有什么方法可以动态设置 LOOKUP 的上限吗?

编辑:行范围内没有空行。

问候

答案1

我明白了——问题在于让动态范围在 LOOKUP 中作为范围规范发挥作用。你几乎已经做到了。试试这个:

    LOOKUP(A3;INDIRECT("Runs!D3:D"&COUNTA(Runs!D:D));Runs!A3:A6)

答案2

offset() 函数将解决你的问题

用以下代码替换 Runs!A3:A6OFFSET($A$3,0,0,COUNTA($A$3:$A$1000),1)

你可以用动态定义范围来获得一些乐趣http://support.microsoft.com/kb/830287

答案3

我最终还是这么做了。感谢大家的评论,fixer1234 的回答特别有用。LOOKUP 没有给出准确的结果,所以我将其更改为 INDEX/MATCH 对。还添加了 N/A 检查。

IF(ISNA(INDEX(INDIRECT("Runs!A3:A"&COUNTA(Runs!A:A)), MATCH(A3, INDIRECT("Runs!D3:D"&COUNTA(Runs!D:D)), 0))), "", INDEX(INDIRECT("Runs!A3:A"&COUNTA(Runs!A:A)), MATCH(A3, INDIRECT("Runs!D3:D"&COUNTA(Runs!D:D)), 0)))

相关内容