2015-02-18 2 views
-1

Мне нужно разработать небольшую программу в vba (которую я не очень использую).найти ближайшую ячейку с определенным значением в 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 

я должен экспортировать эти данные в новом файле, и быть в состоянии рассказать от каждого ребенка, с каким родителем он связан.

Для этого я хочу, чтобы разработать макрос со следующим Principe:

Для ребенка, я держу его номер строки в памяти, то я делаю FindNext на родителей, пока не превысит линию держать в памяти. В основном, когда я нахожусь на ребенке, я хочу найти ячейку его ближайшего родителя, начиная с верхней части листа. Exemple: вызвать функцию с входным параметром 2, я хотел бы получить в обратной линии 1. вход: строка 7, возвращение: линия 5

Поскольку я не очень хорошо знаком с VBA, я борюсь много, спасибо заранее за вашу помощь.

ответ

0

Это макрос, который использует метод, который вы предлагаете. При выборе ребенка и запуске макроса будет найти ближайший родительский над ребенком, обеспечивая:

1) A1 пустой

2) Существует пустая ячейка между каждой семьи

3) семьи находятся в колонке А

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 

Это возвращает результат в окне сообщения, однако это может быть легко изменен

+0

Вставьте код в модуль. Добавление кнопки на листе распространения облегчит ее использование. – JohnCitezen

Смежные вопросы