Excel 公式获取行中的最后一个非零值并返回列标题

Excel 公式获取行中的最后一个非零值并返回列标题

我目前有一个交易电子表格,我想编写一个公式来帮助我从每一行中提取客户最近的交易。

此外,我还想提取与每笔最近交易相关的列标题,以便隔离交易发生的日期。

我找到了公式:

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

以下是一个示例:

反向 Excel 数据

包括查找第一个非零值的公式:

Excel_Fined_First_Non-Zero_Value

相关内容