我目前有一个交易电子表格,我想编写一个公式来帮助我从每一行中提取客户最近的交易。
此外,我还想提取与每笔最近交易相关的列标题,以便隔离交易发生的日期。
我找到了公式:
=INDEX($E$1:$CO$1, MATCH(TRUE,INDEX(E2:CO2<>0,),0))
这给了我最近的交易;它在每一行中搜索第一个非零实例。
我需要最后一个非零实例。或者,我需要知道如何让这个公式从右到左而不是从左到右工作。
任何帮助深表感谢!
答案1
无需更改数据,您可以使用LOOKUP
函数查找最后一个非零值并获取如下标题
=LOOKUP(2,1/(E2:CO2<>0),E$1:CO$1)
这是有效的,因为该1/(E2:CO2<>0)
部分返回一个数组,其中单元格不为零,则为 1......或者单元#DIV/0!
格为零时出现错误。LOOKUP
然后在该数组中找不到 2,因此它与最后的1,即最后一列具有非零值.....然后它从标题行返回相应的值。
如果你真的想要一行中的最后一个数字(包括零),这更简单,只需
=LOOKUP(9.99E+307,E2:CO2,E$1:CO$1)
答案2
基于这里和这里,快速回答是您可能需要反转数据。Excel 没有任何从右向左移动的功能。
假设要反转的数据从 A2 扩展到 E2:
=INDEX($A$2:$E$2,6-COLUMNS($A$2:A2))
其中 6 是您的列数 (5) + 1。如果您不想使用硬编码值 (6),如第二个链接的评论所指出的那样,您可以使用类似 COUNTA($A$2:$E$2)+1 的公式。因此,公式如下所示:
=INDEX($A$2:$E$2,COUNTA($A$2:$E$2)+1-COLUMNS($A2:A2))
请注意,公式取决于 COLUMNS 的最终值(从 A2 开始)来得出正确的单元格值。假设您复制并粘贴,最终会得到一行单元格,如下所示(假设您想要显示所有 5 条数据):
=INDEX($A$2:$E$2,6-COLUMNS($A$2:A2))
[...]
=INDEX($A$2:$E$2,6-COLUMNS(A$2:$E2))
以下是一个示例:
包括查找第一个非零值的公式: