Автор Тема: Упорядочить список детей  (Прочитано 303 раз)

Оффлайн Посетитель 02.05.2022

  • Посетитель форума
  • Сообщений: 8
Упорядочить список детей
« : 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


Оффлайн Администратор

  • Administrator
  • Сообщений: 2017
Re: Упорядочить список детей
« Ответ #1 : 02 Май 2022, 21:46 »
Я не понял вопроса. Не понимаю, откуда что берётся, где что надо искать, куда и что записывать.

Оффлайн Посетитель 02.05.2022

  • Посетитель форума
  • Сообщений: 8
Re: Упорядочить список детей
« Ответ #2 : 02 Май 2022, 21:53 »
Да всё просто.
Лист1:
Иванов
Петров
Сидоров

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

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

Оффлайн Посетитель 02.05.2022

  • Посетитель форума
  • Сообщений: 8
Re: Упорядочить список детей
« Ответ #3 : 02 Май 2022, 21:56 »
В первом столбце нумерация только, упустил этот момент, Фамилии в столбце B, на обоих листах ...
В столбце С - размеры
Скинул бы файл, но он остался на работе.

Оффлайн Посетитель 02.05.2022

  • Посетитель форума
  • Сообщений: 8
Re: Упорядочить список детей
« Ответ #4 : 02 Май 2022, 22:18 »
Примерно так.
Сам постоянно копирую и заменяю на другом листе. Но приходят новые люди, хотелось бы автоматом прогонять, если понимаете о чем я.

Оффлайн Администратор

  • Administrator
  • Сообщений: 2017
Re: Упорядочить список детей
« Ответ #5 : 03 Май 2022, 05:52 »
И какой у вас вопрос по коду? Вы написали код и какой у вас вопрос по коду относительно задания, в какую переменную вы хотите записать и зачем?

Оффлайн Посетитель 02.05.2022

  • Посетитель форума
  • Сообщений: 8
Re: Упорядочить список детей
« Ответ #6 : 03 Май 2022, 07:58 »
Если я правильно понял, надо внести в одну переменную номер строки с листа 2, взятой Фамилии человека, а во вторую переменную номер строки с листа 1, найденной фамилии. Возможно я не не правильно себе представляю алгоритм работы макроса, можно сделать это проще ?

Оффлайн Администратор

  • Administrator
  • Сообщений: 2017
Re: Упорядочить список детей
« Ответ #7 : 03 Май 2022, 08:59 »
Мне начинает казаться, что вы хотите узнать номер найденной строки. С помощью Find вы нашли искомое значение и теперь вы хотите узнать, в какой строке найдено искомое значение?

Оффлайн Посетитель 02.05.2022

  • Посетитель форума
  • Сообщений: 8
Re: Упорядочить список детей
« Ответ #8 : 03 Май 2022, 09:16 »
С этим как раз проблем нет :
MsgBox CellFind1.Row
Мне необходимо запомнить номер строки с которой была взята фамилия, речь про Лист2.

Оффлайн Посетитель 02.05.2022

  • Посетитель форума
  • Сообщений: 8
Re: Упорядочить список детей
« Ответ #9 : 03 Май 2022, 13:41 »
Наверное так:

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" по окончанию ловлю ...

Оффлайн Администратор

  • Administrator
  • Сообщений: 2017
Re: Упорядочить список детей
« Ответ #10 : 03 Май 2022, 15:45 »
Не знаю, как решить ваше задание.
На этом форуме отвечаю только я, пробуйте на других форумах.

Оффлайн Посетитель 02.05.2022

  • Посетитель форума
  • Сообщений: 8
Re: Упорядочить список детей
« Ответ #11 : 03 Май 2022, 19:02 »
У меня есть несколько мыслей по этому поводу, уже почти закончил.
Все-равно спасибо за уделенное время, вы не могли бы тогда удалить эту тему с форума ?
Макрос теперь работает как я хочу, только в конце не ищет последнюю позицию, но я либо разберусь с этим, либо выложу на другом форуме код ...