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)
中的98个单元格,我们可以看到B1:B100
/TRUE
值列表。看起来是这样的:FALSE
{TRUE;TRUE;TRUE;FALSE;FALSE;FALSE;FALSE;FALSE;…}
部分:一旦我们得到MATCH(FALSE,ISBLANK(…),0)
/TRUE
值,我们只需要找到第一个FALSE
值(即,第一个非空单元格)。这就是这个FALSE
函数的作用。它在列表中找到与FALSE值完全匹配的值MATCH
部分:一旦我们知道哪个单元格是第一个非空白单元格,我们就需要它的值。这就是索引(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()函数吗?