Google sheets 从Google工作表中的聚合计算中排除范围内的最后一个值

Google sheets 从Google工作表中的聚合计算中排除范围内的最后一个值,google-sheets,Google Sheets,我有一张谷歌表格,上面有两列数据A是单调递增的,有许多重复项(基于粗略的时间戳),而B基本上是随机的。底部有许多空行等待将来的数据。它类似于以下内容: A B 1 5 43 2 5 77 3 13 8 4 21 34 5 27 68 6 27 90 7 8 9 10 我试着写几个公式来检查一列中除最后一个之外的所有(非空)值。例如,我想找出B的最大值,不包括最新的值,因此结果应该是B2中的77,而不是B6中的90 如果范围中的值严格

我有一张谷歌表格,上面有两列数据
A
是单调递增的,有许多重复项(基于粗略的时间戳),而
B
基本上是随机的。底部有许多空行等待将来的数据。它类似于以下内容:

     A   B
 1   5  43
 2   5  77
 3  13   8
 4  21  34
 5  27  68
 6  27  90
 7
 8
 9
10
我试着写几个公式来检查一列中除最后一个之外的所有(非空)值。例如,我想找出
B
的最大值,不包括最新的值,因此结果应该是
B2
中的
77
,而不是
B6
中的
90

如果范围中的值严格递增且唯一,我可以将
A
的值过滤到
C
,排除任何等于最大值的值(仅最后一个条目),然后取该范围的
MAX(..)
。但是,我的数据不具有该属性;可以复制最终值,并且不适当地忽略重复值

     C                             D          E
 1   =FILTER(A:A, A:A < MAX(A:A))  =MAX(C:C)  This produces A4's 21 instead of A5's 27.
…因为这要求
索引表
的行数与数据表的行数相同,并且随着添加更多数据而中断


无需修改原始数据表,也无需依赖数据属性(除数值和行为空或满外),是否有任何方法可以在排除最后一行的情况下对某个范围执行聚合计算?

您可以使用
间接
地址
公式来创建排除最后一行的动态范围

=max(indirect("A1:"&Address(count(A:A)-1,1)))
count
函数给出A列中非空单元格的数量。减去1可排除最后一行。

您可以使用该数字使用
“A1:”&address(行号、列号)
构建一个地址,在您的示例中,它应该是
A1:$A$5


使用此字符串使用间接方法
indirect(A1:$A$5)
引用单元格,并将引用传递给
max
函数,以确定该范围内的最大值。

从另一个工作表中尝试:

=MAX(Sheet1!B1:indirect("Sheet1!B"&count(Sheet1!B:B)-1))

我们可以使用
FILTER()
ROW()
函数来实现这一点:

   D
 1 =MAX(FILTER(Data!A:A,
               ROW(Data!A:A) < MAX(FILTER(ROW(Data!A:A),
                                          Data!A:A <> ""))))
D
1=最大值(过滤器(数据!A:A,
行(数据!A:A)
我们使用
FILTER(ROW(DATA!A:A),DATA!A:A“”)
获取非空行的行号数组,并使用
MAX(…)
获取最后一个行号。我们通过使用
FILTER(Data!A:A,row(Data!A:A)<…)
从较低的行号中过滤出值来排除最后一行。我们将
MAX(…)
应用于此过滤数组,并得到我们要查找的结果

=MAX(Sheet1!B1:indirect("Sheet1!B"&count(Sheet1!B:B)-1))
   D
 1 =MAX(FILTER(Data!A:A,
               ROW(Data!A:A) < MAX(FILTER(ROW(Data!A:A),
                                          Data!A:A <> ""))))