我正在使用一个数据列表,其中一行中的一个或多个单元格可以为空。
让我们说列表是单元格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.
答案 0 :(得分:21)
谷歌上的第一个结果:http://chandoo.org/wp/2014/01/15/find-first-non-blank-item-in-a-list-excel-formulas/
此公式返回范围
B1:B100
的第一个TEXT单元格:
=VLOOKUP("*", B1:B100, 1,FALSE)
*是Excel中的外卡。当你要求VLOOKUP找到*时,它会找到包含任何内容的第一个单元格。
注意:此方法查找包含任何TEXT的第一个单元格。因此,如果第一个非空白单元格是数字(或日期,%或布尔值),则公式显示包含文本的下一个单元格。
如果您需要找到非空白,则该网址会提供以下解决方案:
如果要查找第一个非空白值,无论是文本还是数字,那么您可以使用下面的数组公式。
=INDEX(B3:B100, MATCH(FALSE, ISBLANK(B1:B100), 0))
确保在输入此公式后按 CTRL + Shift + Enter 。
这个公式如何运作?
ISBLANK(B1:B100)
部分:根据TRUE
中的98个单元格是否为空,这会为我们提供FALSE
/B1:B100
值的列表。它看起来像这样:{TRUE;TRUE;TRUE;FALSE;FALSE;FALSE;FALSE; ...}
MATCH(FALSE, ISBLANK(…), 0)
部分:获得TRUE
/FALSE
值后,我们只需找到第一个FALSE
值(即第一个非空白)细胞)。这就是MATCH
函数的功能。它在列表中找到FALSE值的完全匹配。
INDEX(B1:B100, MATCH(…))
部分:一旦我们知道哪个单元格是第一个非空单元格,我们就需要它的值。这就是INDEX
的作用。
答案 1 :(得分:2)
如您对自己问题的评论所示,您有500行穿插着空白单元格。您希望使用最后一个非空白单元格的值填充空白单元格。
我会编写一些VBA代码,其工作方式如下:选择要填充的单元格范围并运行此VBA:
Sub fillBlanks()
For Each c In Selection.Cells
If c.Value <> "" Then
lastVal = c.Value
Else
c.Value = lastVal
End If
Next c
End Sub
基本上,如果单元格为空,则使用最后一个非空单元格的值(如果上面没有空白单元格,则它将保持空白)。否则,如果单元格不为空,则将其保存为最后一个非空白单元格。对所选范围内的每个单元格重复。
有关使用此vba代码的分步说明 - 适用于此示例工作表:
确保选择范围,按 ALT + F11 。
这应该打开Visual Basic编辑器:
按 F7 ,这应该显示活动表的代码。粘贴上面的VB代码:
按 F5 (或使用菜单运行代码)。
最终结果应如下:
答案 2 :(得分:1)
您只需在其旁边的列中添加rank.eq
公式,然后执行vlookup
即可将所有数据置于顶部。这将使您的所有数据都达到顶峰。
例如,在下面的图片中,我使用百分比进行排名,我想将带有数据的单元格放到顶部进行演示,我将隐藏除vlookups
之外的所有列。
答案 3 :(得分:0)
答案 4 :(得分:0)
选择ColumnA:
HOME>编辑>查找并选择>转到特殊...>空白,确定, = ,↓, Ctrl + 输入。