Ze4*_*ada 5 arrays google-sheets array-formulas google-sheets-formula
我正在寻找一种解决方案来查找列中的最后一个非空单元格。
我在Google Docs Editor Help 中找到了以下解决方案
INDEX(C:C;MAX(ROW(C:C)*(C:C<>""))
这个解决方案工作得非常好,甚至可以使用空单元格和标题 - 但我不知道它是如何工作的。我试图通过将其分解成各个部分并分别查看返回值来分析该建议 - 但随后我无法重现所需的结果。
有人可以解释发生了什么吗?我显然错过了一些东西。
=ARRAYFORMULA(ROW(C:C)) \nRun Code Online (Sandbox Code Playgroud)\n将输出行号,例如:
\n1\n2\n3\n4\n5\n6\n7\n...\nRun Code Online (Sandbox Code Playgroud)\n=ARRAYFORMULA(C:C<>"")\nRun Code Online (Sandbox Code Playgroud)\nTRUE如果 C 列中的单元格不为空,则输出(否则)FALSE
TRUE\nTRUE\nTRUE\nFALSE\nTRUE\nFALSE\nFALSE\n...\nRun Code Online (Sandbox Code Playgroud)\n=ARRAYFORMULA(ROW(C:C)*(C:C<>""))\nRun Code Online (Sandbox Code Playgroud)\n将执行此操作(请注意PC 逻辑中的TRUE = 1和)FALSE = 0
1 \xc3\x97 TRUE = 1 \n2 \xc3\x97 TRUE = 2\n3 \xc3\x97 TRUE = 3\n4 \xc3\x97 FALSE = 0\n5 \xc3\x97 TRUE = 5\n6 \xc3\x97 FALSE = 0\n7 \xc3\x97 FALSE = 0\n... \xc3\x97 ... = ...\nRun Code Online (Sandbox Code Playgroud)\n=ARRAYFORMULA(MAX(ROW(C:C)*(C:C<>"")))\nRun Code Online (Sandbox Code Playgroud)\n将输出最大的数字,因此在这种情况下:
\n5\nRun Code Online (Sandbox Code Playgroud)\nnowINDEX是这样的类型,ARRAYFORMULA所以这也可以工作:
=INDEX(MAX(ROW(C:C)*(C:C<>"")))\nRun Code Online (Sandbox Code Playgroud)\n现在我们将MAX(...)部分移动到INDEX代表行的第二个参数中,作为第一个参数,我们输入要映射的范围:
=INDEX(C:C, MAX(ROW(C:C)*(C:C<>"")))\nRun Code Online (Sandbox Code Playgroud)\n这翻译为:
\n=INDEX(C:C, 5)\nRun Code Online (Sandbox Code Playgroud)\n这意味着:“返回 C 列中第 5 行的单元格”
\n回答你的问题为什么=ROW(C:C)*(C:C<>"")只返回单个值 - 这是因为没有命令来处理数组所以基本上这等于:
=ROW(C1)*(C1<>"")\nRun Code Online (Sandbox Code Playgroud)\n结果可以是 0 或 1 - 取决于参数是否
\nTRUE \xc3\x97 TRUE = 1\nTRUE \xc3\x97 FALSE = 0\nFALSE \xc3\x97 TRUE = 0\nFALSE \xc3\x97 FALSE = 0\nRun Code Online (Sandbox Code Playgroud)\n将其包裹起来MAX就像
=MAX(1)\nRun Code Online (Sandbox Code Playgroud)\n或者:
\n=MAX(0)\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
140 次 |
| 最近记录: |