Упорядочить список детей

Автор Посетитель, 02 мая 2022, 21:36

Посетитель

Добрый вечер !
Есть два списка детей. Один по алфавиту, а другой по договору.
Необходимо взять размер обуви из листа по алфавиту и вставить напротиф Фамилии в листе по договору.
Начал писать, а потом запутался.
Собственно вопрос, когда со второго листа беру фамилию, можно сразу запомнить номер строки в переменную ? (.Row)

Sub learningFind()
    Dim sh_in As Worksheet, sh_out As Worksheet
    Dim rangeToSearch As Range
    Dim cellWithValue As Range
    Dim CellFind1 As Range
    Dim CellFind2 As Range
   
    Set sh_in = Worksheets("Лист2")
    Set sh_out = Worksheets("Лист1")
   
    Set rangeToSearch = ThisWorkbook.Worksheets("Лист1").Range("B3:B34")
   
        For Each cellWithValue In ThisWorkbook.Worksheets("Лист2").Range("B3:B34")
        Set CellFind1 = rangeToSearch.Find(cellWithValue, , xlValues, xlWhole)
        MsgBox CellFind1.Offset(0, 1).Value
        Next cellWithValue
End Sub


Администратор

Я не понял вопроса. Не понимаю, откуда что берётся, где что надо искать, куда и что записывать.

Посетитель

Да всё просто.
Лист1:
Иванов
Петров
Сидоров

Лист2:
Петров          39
Сидоров        41
Иванов          45

Необходимо со второго листа перекинуть размер ноги на первый согласно фамилиям.

Посетитель

В первом столбце нумерация только, упустил этот момент, Фамилии в столбце B, на обоих листах ...
В столбце С - размеры
Скинул бы файл, но он остался на работе.

Посетитель

Примерно так.
Сам постоянно копирую и заменяю на другом листе. Но приходят новые люди, хотелось бы автоматом прогонять, если понимаете о чем я.

Администратор

И какой у вас вопрос по коду? Вы написали код и какой у вас вопрос по коду относительно задания, в какую переменную вы хотите записать и зачем?

Посетитель

Если я правильно понял, надо внести в одну переменную номер строки с листа 2, взятой Фамилии человека, а во вторую переменную номер строки с листа 1, найденной фамилии. Возможно я не не правильно себе представляю алгоритм работы макроса, можно сделать это проще ?

Администратор

Мне начинает казаться, что вы хотите узнать номер найденной строки. С помощью Find вы нашли искомое значение и теперь вы хотите узнать, в какой строке найдено искомое значение?

Посетитель

С этим как раз проблем нет :
MsgBox CellFind1.Row
Мне необходимо запомнить номер строки с которой была взята фамилия, речь про Лист2.

Посетитель

Наверное так:

Sub learningFind()
    Dim sh_in As Worksheet, sh_out As Worksheet
    Dim lngRowCounter As Long
    Dim rangeToSearch As Range
    Dim cellWithValue As Range
    Dim CellFind1 As Range
    Dim CellFind2 As Range
   
    Set sh_in = Worksheets("Лист2")
    Set sh_out = Worksheets("Лист1")
   
    Set rangeToSearch = ThisWorkbook.Worksheets("Лист1").Range("B3:B34")
   
        For Each cellWithValue In ThisWorkbook.Worksheets("Лист2").Range("B3:B34")
        Set CellFind1 = rangeToSearch.Find(cellWithValue, , xlValues, xlWhole)

       
            For lngRowCounter = 3 To 15
            ThisWorkbook.Worksheets("Лист1").Range("C" & CellFind1.Row).Value = ThisWorkbook.Worksheets("Лист2").Range("C" & lngRowCounter).Value
            Next lngRowCounter


        Next cellWithValue

End Sub



Но Run-time error "91" по окончанию ловлю ...

Администратор

Не знаю, как решить ваше задание.
На этом форуме отвечаю только я, пробуйте на других форумах.

Посетитель

У меня есть несколько мыслей по этому поводу, уже почти закончил.
Все-равно спасибо за уделенное время, вы не могли бы тогда удалить эту тему с форума ?
Макрос теперь работает как я хочу, только в конце не ищет последнюю позицию, но я либо разберусь с этим, либо выложу на другом форуме код ...