从第一个非空值捕获列表

时间:2017-11-28 16:28:35

标签: excel-formula

我有一个命名范围,它捕获第一行到最后一个非空白行。我使用的公式是

=OFFSET(DataSheet!$L$1,0,0,COUNTA(DataSheet!$L:$L),1)

现在我想创建另一个命名范围,它将在下面的场景中捕获从第一个非空值到最后一个非空值的值

  • 人2
  • 人3
  • 人4

所以在上面的场景中,我希望名称范围只包含人2到人4.将来,如果在Person 2上面添加了新的Person 1,那么我也希望捕获它。

感谢您的帮助!

不起作用:

enter image description here

1 个答案:

答案 0 :(得分:1)

您应该可以通过添加行偏移而不是第一个零来实现此目的。

如下所示

=OFFSET(DataSheet!$L$1,
    MATCH(FALSE(),ISBLANK(DataSheet!$L:$L),0)-1,0,
    COUNTA(DataSheet!$L:$L),1)

请注意,如果您有中间空白值,那么COUNTA将无法为您提供上一个非空白的全部范围。要解决此问题,您可以使用以下内容:

=OFFSET(DataSheet!$L$1,
     MIN(IF(ISBLANK(DataSheet!$L:$L),9^99,ROW(DataSheet!$$L:$L)))-1,0,
     MAX(IF(ISBLANK(DataSheet!$L:$L),0,ROW(DataSheet!$L:$L)))-
     MIN(IF(ISBLANK(DataSheet!$L:$L),9^99,ROW(DataSheet!$L:$L)))+1,1)

如果这些单元格实际上不是空白,那么您需要一个不同的条件。例如,

=OFFSET(DataSheet!$L$1,
     MIN(IF(LEN(DataSheet!$L:$L)<1,9^99,ROW(DataSheet!$$L:$L)))-1,0,
     MAX(IF(LEN(DataSheet!$L:$L)<1,0,ROW(DataSheet!$L:$L)))-
     MIN(IF(LEN(DataSheet!$L:$L)<1,9^99,ROW(DataSheet!$L:$L)))+1,1)