如果一个单元格为空,我希望它在上面的单元格中查找。如果那个是空的,它将查找上方的单元格,直到找到一个非空的单元格。完成后,应将其返回。这将是一个名为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/

10-10 18:50