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

use*_*699 5 worksheet-function microsoft-excel

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

此外,我想然后拉出与每个最近的交易相关联的列标题,以隔离交易发生的日期。

我找到了公式:

=INDEX($E$1:$CO$1, MATCH(TRUE,INDEX(E2:CO2<>0,),0)) 
Run Code Online (Sandbox Code Playgroud)

这是给我最近的交易;它在每一行中搜索第一个非零实例。

我需要最后一个非零实例。或者,我需要知道如何使这个公式从右到左工作,而不是从左到右。

任何帮助深表感谢!

bar*_*ini 12

无需更改您的数据,您可以使用一个LOOKUP函数来查找最后一个非零并像这样获取标题

=LOOKUP(2,1/(E2:CO2<>0),E$1:CO$1)

这是有效的,因为该1/(E2:CO2<>0)部分返回一个数组,其中单元格不为零......或#DIV/0!错误所在的位置。LOOKUP然后不会在该数组中找到 2,因此它与最后一个1匹配,即具有非零值的最后一列......然后它从标题行返回相应的值。

如果你真的想要一行中的最后一个数字(包括零),这更简单,只需

=LOOKUP(9.99E+307,E2:CO2,E$1:CO$1)


Ana*_*man 2

根据此处此处,快速答案是您可能需要反转数据。Excel 没有任何从右向左移动的函数。

假设你要逆向的数据从A2扩展到E2:

=INDEX($A$2:$E$2,6-COLUMNS($A$2:A2))
Run Code Online (Sandbox Code Playgroud)

其中 6 是您的列数 (5) + 1。如果您不喜欢使用硬编码值 (6),如第二个链接的注释中指出的那样,您可以使用类似 COUNTA($A$2:$E $2)+1。该公式如下所示:

=INDEX($A$2:$E$2,COUNTA($A$2:$E$2)+1-COLUMNS($A2:A2))
Run Code Online (Sandbox Code Playgroud)

请注意,该公式取决于 COLUMNS(从 A2 开始)的最终值来导出正确的单元格值。假设您复制并粘贴,最终会得到一行单元格,如下所示(假设您要显示所有 5 条数据):

=INDEX($A$2:$E$2,6-COLUMNS($A$2:A2))
[...]
=INDEX($A$2:$E$2,6-COLUMNS(A$2:$E2))
Run Code Online (Sandbox Code Playgroud)

下面是一个例子:

反向_Excel_数据

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

Excel_Fined_First_Non-Zero_Value