如何在Excel中获得最右边的行值?

mat*_*kie 5 microsoft-excel

我需要显示数组中每一行最右边的非空白单元格的值。如何在 Excel 中完成此操作?

在此示例表中,[Current] 列具有所需的结果:

+---------+----------+---------+----------+
|  2016   |   2017   |  2018   | Current  |
+---------+----------+---------+----------+
|     700 |          |   200   |     200  |
|         |          |         |          |
|         |     450  |         |     450  |
|         |          |  2,700  |   2,700  |
|         |          |         |          |
|  42,350 |  71,500  |         |  71,500  |
|  2,660  |          |         |   2,660  |
|         |   1,100  |         |   1,100  |
|         |          |         |          |
|    470  |          |         |     470  |
+---------+----------+---------+----------+
Run Code Online (Sandbox Code Playgroud)

主题的变化将是最左侧、最顶部、最底部的值;或大于n 的值等。Office 2016 中的桌面 Excel(如果版本相关)。

Raj*_*nha 6

在此处输入图片说明

  • 输入此公式E2并向下填充。

=LOOKUP(2,1/(A2:C2<>""),A2:C2)

这个怎么运作:

  • 公式识别出的查找值2 故意大于将出现在查找向量中的任何值。
  • 该表达式A2:C2<>""返回一个TrueFalse值的数组 。
  • 1 然后除以该数组并创建一个由 1 或除以零错误组成的新数组 (#DIV/0!):{1,0,1,...}。
  • 这个数组是查找向量。
  • 当公式找不到查找值时,则
    Lookup匹配下一个最小值。
  • 在这种情况下,查找值是2,但查找数组中的最大值是1,因此查找将匹配1数组中的最后一个。
  • LOOKUP 返回 Result Vector 中对应的值,即同一位置的值。

:编辑:


Mát*_*ász 6

虽然这个问题已经有多种解决方案,但这是我首选的一个,对我来说这是最接近自然思维的:

=INDEX(A2:C2,MAX(IF(A2:C2="","",COLUMN(A2:C2))))- 这是一个数组公式,因此输入后按CTRL+ SHIFT+ 。ENTER

在此输入图像描述

怎么运行的:

  • IF(A2:C2="","",COLUMN(A2:C2))- 对于行中的每个单元格,如果单元格为空,则返回空字符串,否则返回列号
  • MAX( ... )- 选择返回的最高列号
  • =INDEX(A2:C2, ... )- 根据最高列号从行中选择单元格

警告:只有当您的范围从第一列开始时,它才能正常工作,否则需要补偿偏移,例如从 C 列开始的范围:
=INDEX(C2:X2,MAX(IF(C2:X2="","",COLUMN(C2:X2)))-2)

  • +1 表示最接近思维。我很难在这种方法和 LOOKUP 方法之间做出选择。最终,简洁获胜,因为较短的内容不那么可怕,而且更容易花时间去理解它。 ;-) (2认同)