在vba中找到具有特定值的最近单元格

时间:2015-02-18 10:16:16

标签: vba excel-vba excel

我必须在vba中开发一个小程序(我不太用它)。

我有一张带有“父”行的表格,对于每个父母,我都有一个“子”行列表:

line 1 parent
line 2 childa
line 3 childb
line 4
line 5 parent
line 6 childc
line 7 childd
line 8
line 9 parent
line 10 childe

我必须将这些数据导出到一个新文件中,并且能够告诉每个孩子他所连接的父母。

要做到这一点,我想用以下原理开发一个宏:

对于一个孩子,我将他的行号保留在内存中,然后我在父母身上做一个findnext,直到我超过行记忆中的行。基本上当我还是个孩子的时候,我想从床单的顶部开始找到他最亲近的父母的牢房。 例子:我用输入参数2调用一个函数,我想在返回第1行。 输入:第7行,返回:第5行

由于我对vba不是很熟悉,所以我很挣扎,感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

这是一个使用您建议的方法的宏。 选择子项并运行宏后,它将在子项上方找到最接近的父项:

1)A1为空白

2)每个家庭之间有一个空白单元

3)这些家庭在A栏

Sub FindParent()
    Dim ChildRow As Integer
    Dim line As Integer
    Dim Pline As Variant
    Dim Parent As String

    ChildRow = ActiveCell.Row   'find the row of the child
    line = 1                                 'Start at row one

    Do Until line = ChildRow        'check each cell if it is blank, if so the next cell is a parent.
        If Range("A" & CStr(line)).Value = "" Then
            Pline = line + 1
        End If
        line = line + 1
    Loop

    Parent = Range("A" & Pline).Value
    MsgBox ("The parent of " & ActiveCell.Value & " is " & Parent & ".")

End Sub

这会在消息框中返回结果,但可以轻松更改