简单的查询与复杂的答案 – 如何selectRowA6行(最后一个非空白)为一个简单的公式

我有很多列都标有许多下面的值,可以是文字或数字

这里是当前的方程=INDEX(AK6:AK94,MODE(MATCH(AK6:AK94,AK6:AK94,0)))我有这在每列的单元格5中。

每列中的值的数量可能会增加或减less。 如果我引用整个列(直到工作表结束),空格会干扰准确的输出。

如何引用单元格A6 to Last Non-Blank

您需要确定列中最后一个非空白单元格的行。 这个方法取决于中间是否有空白单元格。

两种select(从这里 *):

 =SUMPRODUCT(MAX(($AK6:$AK94<>"")*(ROW(AK6:AK94)))) =INDEX(MAX(($AK6:$AK94<>"")*(ROW(AK6:AK94))),0) 

然后你可以使用这个值与OFFSET来获得对目标单元格的引用。 所以你的范围将是(使用第二种forms)

 A6:OFFSET(AK1,INDEX(MAX(($AK6:$AK94<>"")*(ROW(AK6:AK94))),0)-1,0) 

这个expression式将被embedded到一个公式中。

笔记:

  1. 您可能必须更改绝对/相对引用。
  2. 根据您embeddedexpression式的公式,我预见您可能需要使用Ctrl + Shift + Enterinput公式作为数组公式。
  3. * 这旨在获得最后一个非空值而不是对单元格的引用,但是发布的一些结果是有用的。

确定一个范围内的最后一个非空白单元的效率和非易失性设置比例如sancho.s给出的SUMPRODUCT / MAX单元要高得多,尽pipe只有当空白单元格范围都是“真正的”空格,而不是空string“”,例如作为这些单元格中的公式的结果。

如果这可以保证,那么对于包含混合数据types(一些文本,一些数字)的范围,您可以使用:

=MAX(MATCH(REPT("z",255),A:A),MATCH(9.9E+307,A:A))

这将比任何解决scheme(如SUMPRODUCT / MAX设置)更有效,该解决schemetesting指定范围内的每个单独的单元是否为空。

更重要的是,上述结构可以参考整个A列而不损害计算速度,因此不需要select有限的范围。 (请注意,在SUMPRODUCT(或任何其他数组公式)中使用相同的范围,即A:A根本不是一个好主意,因为这将迫使Excel单独计算超过一百万个单元格,导致明显较慢工作簿性能)。

至于形成一个dynamic范围,我总是感到惊讶的是,互联网上有这么多的消息来源继续提倡包含OFFSET和INDIRECT等易失性函数的设置(我甚至已经看到了几个使用ADDRESS的站点)有一个非常好的非易失性(实际上,不是完全非易失性的,但足够接近)的INDEX设置可用,即:

AK6:INDEX(A:A,LastRow)

其中LastRow是一个定义的名称,给出了我在上面发布的公式。

问候

将计数非空白单元格工作,然后使用偏移来移动该行数。 看看这个:MATCH(1,A6:OFFSET(A6,COUNTIF(A6:A600,“> 0”),))偏移量和计数结果在我的简单testing表上完成A6:A14。

一种方法是将公式中的行数增加到你可能需要的数量,并在公式中增加一个额外的IF函数来处理空白,例如这个版本将允许你多达995行数据

=INDEX(AK6:AK1000,MODE(IF(AK6:AK1000<>"",MATCH(AK6:AK1000,AK6:AK1000,0))))

…..但如果在该范围内有较less的行和空白,仍然可以工作

CTRL + SHIFT + ENTER确认