Excel 查找范围中的第一个非空单元格

Excel 查找范围中的第一个非空单元格,excel,Excel,我正在处理一个数据列表,其中一行中的一个或多个单元格可以为空 假设列表是单元格A1,A2,A3,A4。我正在尝试创建一个函数,该函数将执行以下操作: IF A1 has a value I want the cell to return A1. IF A1 is empty then I want it to return A2. IF A1 and A2 are both empty I want it to return A3. If A1, A2 and A3 are a

我正在处理一个数据列表,其中一行中的一个或多个单元格可以为空

假设列表是单元格
A1
A2
A3
A4
。我正在尝试创建一个函数,该函数将执行以下操作:

IF A1 has a value I want the cell to return A1.
  IF A1 is empty then I want it to return A2.
   IF A1 and A2 are both empty I want it to return A3.
    If A1, A2 and A3 are all empty I want it to return A4.    
谷歌的第一个结果:

此公式返回范围
B1:B100
的第一个文本单元格:

=VLOOKUP(“*”,B1:B100,1,FALSE)

*是Excel中的通配符。当您要求VLOOKUP查找*时,它会找到第一个包含任何内容的单元格

注意:此方法查找包含任何文本的第一个单元格。因此,如果第一个非空单元格是一个数字(或日期、%或布尔值),则公式将显示下一个包含文本的单元格

如果需要查找非空,该url提供以下解决方案:

若要查找第一个非空值(无论是文本还是数字),则可以使用以下数组公式

=索引(B1:B100,匹配(FALSE,ISBLANK(B1:B100),0))

确保键入此公式后按CTRL+Shift+Enter

这个公式是如何工作的

  • ISBLANK(B1:B100)
    部分:根据
    B1:B100
    中的98个单元格,我们可以看到
    TRUE
    /
    FALSE
    值列表。看起来是这样的:
    {TRUE;TRUE;TRUE;FALSE;FALSE;FALSE;FALSE;FALSE;…}

  • MATCH(FALSE,ISBLANK(…),0)
    部分:一旦我们得到
    TRUE
    /
    FALSE
    值,我们只需要找到第一个
    FALSE
    值(即,第一个非空单元格)。这就是这个
    MATCH
    函数的作用。它在列表中找到与FALSE值完全匹配的值

  • 索引(B1:B100,匹配(…)
    部分:一旦我们知道哪个单元格是第一个非空白单元格,我们就需要它的值。这就是
    INDEX
    所做的


正如您在对问题的评论中所指出的,您有500行,中间点缀着空白单元格。您希望用最后一个非空白单元格的值填充空白单元格

我将编写一些VBA代码,其工作方式如下:选择要回填的单元格范围并运行此VBA:

子填充空格()
对于选择单元格中的每个c
如果c.值为“”,则
lastVal=c.值
其他的
c、 值=lastVal
如果结束
下一个c
端接头
基本上,如果单元格为空,则使用最后一个非空白单元格的值(如果上面没有空白单元格,则将保持空白)。否则,如果单元格不为空,则将其另存为最后一个非空单元格。对选定范围内的每个单元格重复此操作

有关使用此vba代码的分步说明-对于此示例工作表:

确保选择了范围,按ALT+F11

这将打开Visual Basic编辑器:

按F7,这将显示活动工作表的代码。从上面粘贴VB代码:

按F5(或使用菜单运行代码)

最终结果如下:


您只需将
rank.eq
公式放在它旁边的列中,然后执行
vlookup
将所有数据放在顶部即可。这将使您的所有数据都位于顶部

例如,在下面的图像中,我使用百分比进行排名,我希望将包含数据的单元格置于顶部进行显示,我将隐藏除我的
vlookups
所在位置以外的所有列


这对我来说是个好办法

=查找(2,1/(A1:A13“”),A1:A13)

来源信贷:

选择列A:


主页>编辑>查找和选择>转到特殊…>空白,好的,=,↓, Ctrl+Enter.

需要支持多少行,如果很少,可以执行嵌套if语句
=if(A1“”、A1、if(A2“”、A2、if(A3“”、if(A4“”))))
将处理您的示例我正在处理财务数据,因此列表约为500行。问题是某些日期会有空白,我正试图用以前的数据来填补空白。大约有100个列表,每个列表将有不同的日期缺失。我曾经考虑过if blank函数,因为它不应该丢失超过4个连续的日期,但是我想不出怎么做。这似乎是一个很好的解决方案,非常感谢您。在这种情况下,您的示例和解释与您的要求并不匹配。也许有更好的方法来解决你的问题。另外,我在A3部分犯了一个错误,在
之间应该有
A3,
,如果(A4…
我根据您的评论添加了另一个答案,很抱歉更改了您的标题,因为您的描述似乎与您需要的不同。我认为这不容易用公式实现,实现您需要的vba非常短。请看一看,玩得开心!excel不能像在SQL中那样添加一个=COALESCE()函数吗?