Arrays 为什么列中最后一个非空单元格的GoogleSheets公式有效?
我正在寻找一种解决方案,以查找列中最后一个非空单元格 我在上找到了以下解决方案Arrays 为什么列中最后一个非空单元格的GoogleSheets公式有效?,arrays,google-sheets,google-sheets-formula,array-formulas,Arrays,Google Sheets,Google Sheets Formula,Array Formulas,我正在寻找一种解决方案,以查找列中最后一个非空单元格 我在上找到了以下解决方案 索引(C:C;MAX(第(C:C)行)*(C:C“”) 这个解决方案工作得非常好,甚至可以处理空单元格和标题-但我不知道它是如何工作的。我试图通过将建议分成几个部分并分别查看返回值来分析它-但随后我无法重现所需的结果 有人能解释一下发生了什么事吗?我显然遗漏了什么 C:C”“如果单元格非空,则返回TRUE,当对其进行算术运算时,将其转换为1。类似地,如果单元格为空,则返回FALSE或0 然后,它与行(C:C)相乘,
索引(C:C;MAX(第(C:C)行)*(C:C“”)
这个解决方案工作得非常好,甚至可以处理空单元格和标题-但我不知道它是如何工作的。我试图通过将建议分成几个部分并分别查看返回值来分析它-但随后我无法重现所需的结果
有人能解释一下发生了什么事吗?我显然遗漏了什么
C:C”“
如果单元格非空,则返回TRUE
,当对其进行算术运算时,将其转换为1
。类似地,如果单元格为空,则返回FALSE
或0
行(C:C)
相乘,因此每个空单元格将得到0,每个非空单元格的值等于其行数
=MAX(ROW(C:C))
这样的东西本身就产生了1。对此我没有明确的解释,但我认为这是Google Sheets自动在数组上扩展某些公式,正如前面提到的,因为使用了索引
:
许多数组公式将自动扩展到相邻单元格中,从而避免显式使用数组公式
将输出行号,如:
1
2
3
4
5
6
7
...
现在,
INDEX
是ARRAYFORMULA
的类型,因此这也适用于:
=INDEX(MAX(ROW(C:C)*(C:C<>"")))
这意味着:
=INDEX(C:C, 5)
这意味着:“返回C列第5行的单元格”
要回答您的问题,为什么
=行(C:C)*(C:C“”)
只返回一个值-这是因为没有处理数组的命令,所以基本上等于:
=ROW(C1)*(C1<>"")
将其包装到MAX
中就像
=MAX(1)
或:
您编写的所有内容似乎都符合逻辑,但为什么
=MAX(行(C:C)*(C:C“”)
或行(C:C)*(C:C“”
本身总是返回0?
1 × TRUE = 1
2 × TRUE = 2
3 × TRUE = 3
4 × FALSE = 0
5 × TRUE = 5
6 × FALSE = 0
7 × FALSE = 0
... × ... = ...
=ARRAYFORMULA(MAX(ROW(C:C)*(C:C<>"")))
5
=INDEX(MAX(ROW(C:C)*(C:C<>"")))
=INDEX(C:C, MAX(ROW(C:C)*(C:C<>"")))
=INDEX(C:C, 5)
=ROW(C1)*(C1<>"")
TRUE × TRUE = 1
TRUE × FALSE = 0
FALSE × TRUE = 0
FALSE × FALSE = 0
=MAX(1)
=MAX(0)