如果一个单元格为空,我希望它在上面的单元格中查找。如果那个是空的,它将查找上方的单元格,直到找到一个非空的单元格。完成后,应将其返回。这将是一个名为loopUp
的UDF。然后,当我在像这样的单元格公式中使用它时:=loopUp(D24)
,并且范围D18:D24为空,它将显示D17中的内容。
这是一些伪装:
Function loopUp(Cell)
while Cell is empty
Cell becomes cell above
return cell
我是VBA的新手。我遇到的问题是如何传递单元格的地址而不是其值。
最佳答案
根据Siddharth的最后建议,这是解决该问题的一种方法。
Function LoopUp(rng As Range) As Variant
Dim intCnt As Long
LoopUp = "Nothing found"
For intCnt = rng.Row To 1 Step -1
If Not IsEmpty(Cells(intCnt, rng.Column)) Then
LoopUp = Cells(intCnt, rng.Column)
Exit For
End If
Next
End Function
更新
这可能是一个更好,更清洁,更容易理解的解决方案。我测试了一下,但是有人可能会破坏它!
Function LoopUp(rng As Range) As Variant
If Not IsEmpty(rng) Then LoopUp = rng
Else
If rng.End(xlUp).Row = 1 Then LoopUp = "Nothing found" Else LoopUp = rng.End(xlUp)
End If
End Function
关于excel - 如何获取列中的第一个非空单元格?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11441572/