我有一个列表sheet1
,想要获取页面中每个产品最后一次出现的内容bank
。
这是我正在使用的公式:
=INDEX(sheet1!$Y$52:$Y$1000,SUMPRODUCT(MAX(ROW(sheet1!$I$52:$I$1000)*($C218=sheet1!$I$52:$I$1000))-1))
它返回的结果与我期望的最新结果不匹配。
我在另一个只有 30 个项目可供搜索的测试页面中尝试了这个公式,并且它在该文件中运行良好。但是在我的主要主题文件中,它给出了错误的结果。
我将附加我的文件以便您查看。
https://drive.google.com/file/d/0B0mdhh2PWmIwUEU1MUVMX1l2TVE/view?usp=sharing
对于需要查看问题的人来说,这是屏幕截图:
答案1
在您复制的公式中,您显然没有理解 的意义-1
。数组从第 2 行开始;由于 SUMPRODUCT 部分返回了绝对行号,因此-1
对此进行了补偿。
在您的情况下,您的数组从第 52 行开始,因此您需要减去 51 来进行补偿。
例如:
=INDEX(sheet1!$Y$52:$Y$1000,SUMPRODUCT(MAX(ROW(sheet1!$I$52:$I$1000)*($C98=sheet1!$I$52:$I$1000))-51))
一个更短的公式,可以达到同样的目的:
=LOOKUP(2,1/($C108=sheet1!$I$52:$I$1000),sheet1!$Y$52:$Y$1000)
这是有效的,因为如果LOOKUP
没有找到等于或大于查找的数字,它将匹配数组中的最后一个数字。该1/...
部分返回一个数组,其中1
包含 和DIV/0
错误。因此,最后一个1
匹配最后一个C108
匹配的实例;我们从列中的相应位置返回Y
。
以下是显示所需结果的屏幕截图(根据您的屏幕截图):