查找范围中的第一个非空白单元格
我正在处理一行数据列表中的一个或多个单元格可以为空。
比方说列表是单元格A1
, A2
, A3
, A4
。 我正在尝试创build一个将执行以下操作的函数:
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.
谷歌的第一个结果: 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中的通配符。 当你问VLOOKUPfind*时,它会find包含任何东西的第一个单元格。
注意 :此方法查找包含任何文本的第一个单元格。 因此,如果第一个非空白单元格是一个数字(或date,%或布尔值),公式会显示包含文本的下一个单元格。
如果你需要find非空白的 URL给出以下解决scheme:
如果要查找第一个非空值,无论是文本还是数字,那么可以使用下面的数组公式。
=INDEX(B3:B100, MATCH(FALSE, ISBLANK(B1:B100), 0))
确保在input此公式后按下CTRL + Shift + Enter 。
这个公式如何工作?
ISBLANK(B1:B100)
部分:根据B1:B100
的98个单元,给出了TRUE
/FALSE
值的列表B1:B100
是否为空。 它看起来像这样:{TRUE;TRUE;TRUE;FALSE;FALSE;FALSE;FALSE; ...}
{TRUE;TRUE;TRUE;FALSE;FALSE;FALSE;FALSE; ...}
MATCH(FALSE, ISBLANK(…), 0)
部分:一旦我们有了TRUE
/FALSE
值,我们只需要find第一个FALSE
值(即第一个非空白单元格)。 这是MATCH
function所做的。 它在列表中findFALSE值的精确匹配。
INDEX(B1:B100, MATCH(…))
部分:一旦我们知道哪个单元格是第一个非空白单元格,就需要它的值。 这就是INDEX
所做的。
正如你对你的问题的评论所指出的,你有500行散布空白单元格。 您想要用最后一个非空白单元格的值填充空白单元格。
我会写一些VBA代码,它的工作原理如下:select您想要回填的单元格区域并运行这个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代码的分步说明 – 对于此示例工作表:
确保select范围,按ALT + F11 。
这应该打开Visual Basic编辑器:
按F7 ,这应该调出activesheet的代码。 粘贴上面的VB代码:
按F5 (或使用菜单运行代码)。
最终结果如下:
您只需在列旁边的列中inputrank.eq
公式,然后执行rank.eq
即可将所有数据置顶。 这将使您的所有数据达到顶峰。
例如,在下面的图片中,我使用百分比进行排名,我想将带有数据的单元格放到顶部以供展示,我将隐藏除了我的vlookups
以外的所有列。