Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 为什么列中最后一个非空单元格的GoogleSheets公式有效?_Arrays_Google Sheets_Google Sheets Formula_Array Formulas - Fatal编程技术网

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,每个非空单元格的值等于其行数

  • 取其最大值,即最后一个非空行的行号(称为X)

  • 现在,我们使用查找第C列中第X行的值

  • 确实有点奇怪,像
    =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)