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)
根据此处和此处,快速答案是您可能需要反转数据。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)
下面是一个例子:

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

| 归档时间: |
|
| 查看次数: |
63347 次 |
| 最近记录: |