我需要显示数组中每一行最右边的非空白单元格的值。如何在 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(如果版本相关)。
E2并向下填充。=LOOKUP(2,1/(A2:C2<>""),A2:C2)
这个怎么运作:
2
故意大于将出现在查找向量中的任何值。A2:C2<>""返回一个True和False值的数组
。1 然后除以该数组并创建一个由 1 或除以零错误组成的新数组 (#DIV/0!):{1,0,1,...}。Lookup匹配下一个最小值。2,但查找数组中的最大值是1,因此查找将匹配1数组中的最后一个。:编辑:
对于 Google Sheet,这是要使用的公式:
=(IFERROR(LOOKUP( 2, 1 / ( A2:C2 <> "" ), A2:C2 ),""))
Run Code Online (Sandbox Code Playgroud)
用Ctrl+Shift+Enter完成它,公式看起来像,
=ArrayFormula(IFERROR(LOOKUP( 2, 1 / ( A2:C2 <> "" ), A2:C2 ),""))
Run Code Online (Sandbox Code Playgroud)
虽然这个问题已经有多种解决方案,但这是我首选的一个,对我来说这是最接近自然思维的:
=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)
| 归档时间: |
|
| 查看次数: |
18552 次 |
| 最近记录: |