Страницы: 1
RSS
Макрос для нахождения значений в меняющемся массиве
 
Здравствуйте уважаемые участники форума!

С макросами мало знаком, поэтому буду рад любой помощи/совету.

Файл состоит из 2 страниц: Result  (где приведены 4 параметра) и Data (где разбросаны значения 4 этих параметров).

Можно ли создать Макрос, который будет находить соответсвующие значения на странице Data и переносить эти значения на страницу Result.

Одно очень важное условие, положение эти 4 параметров на странице Data непостоянное и может меняться. (В противном случае всё делалось бы простым макросом копирования).

Спасибо заранее!

P.S. файл прилагается.
 
Guro2525, всегда ли для ECL и LLP значение снизу, а для двух других справа?
 
И еще вопрос - всегда ли данные отделены друг от друга пустыми строками/столбцами?
Кому решение нужно - тот пример и рисует.
 
Юрий, нет значения могу находится либо снизу, либо справа.

Пытливый, данные могут быть рядом, а могут быть и разбросаны.

Еще один вопросик хотел бы задать, насколько это тяжёлая задачка, скажем так, для человека,  который хотя бы на среднем уровне знает VBA?
 
На случай, если данные разбросаны так, как в примере (с промежутками между ними):
Код
Sub FromDataToResult_FindAndPaste()
'объявляем переменные для диапазонов, рабочих листов 
    Dim objR As Range, objSC As Range, objC As Range, whR As Worksheet, whIn As Worksheet 
'пишем в переменные значения конкретных листов из книги (чисто для сокращения букв кода)
    Set whR = Worksheets("Result"): Set whIn = Worksheets("Data")
    Set objR = whIn.UsedRange 'пишем в переменную используемый диапазон с листа Data
'для каждой ячейки в текущем диапазоне, определяемый от В2 с листа Result
'(текущий диапазон - это заполненные чем либо ячейки, ограниченные пустыми строками/столбцами)
    For Each objC In whR.Range("B2").CurrentRegion 
'пишем в переменную ячейку, которую находим с помощью метода Find в диапазоне objR. Что искать = objC
        Set objSC = objR.Find(objC)
'от найденной ячейки определяем заполненный диапазон и копируем его (диапазона) вторую ячейку на лист Result под
'ячейку, сидящей в переменной objC. Именно поэтому важно, чтоб данные были отделены друг от друга строками/столбцами
'и левее/выше находился буквенный код, а правее/ниже - числа. Текущий диапазон получается из двух ячеек, вот вторую
'(которая содержит число) мы и копируем.
        objSC.CurrentRegion.Cells(2).Copy objC.Offset(1, 0)
    Next objC 'переходим к следующей ячейке
End Sub


З.Ы. не увидел ответ. Покажите в примере возможное расположение данных (желательно, все возможные варианты взаимного расположения данных).
Изменено: Пытливый - 15.05.2019 12:43:22
Кому решение нужно - тот пример и рисует.
 
Guro2525, приветствую!
Продолжаем уточнять: на листа Data всегда 4 параметра и 4 значения к ним ниже/справа от параметра?
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Guro2525, вот видите, сколько возникло дополнительных вопросов? Поэтому старайтесь сразу давать более информативные описание и пример.
P.S. И не нужно писать через строку.
 
Юрий, прошу прощения, человек новый но форуме, всё учту!
Jack Famous, в этом случае значения были уникальными (суть вопроса понятна, если значений было бы несколько, то надо было бы в макрос добавлять допольнительный параметр поиска - "какое именно значение").
Пытливый, макрос работает (Большое вам спасибо!), я несколько раз менял расположение первичных данных и окончательные значения подставлялись верно (для примера скидываю файл). Я был бы вам премного благодарен, если бы вы дали небольшое объяснение по макросу, чтоб я хотя бы приблизительно понял суть его написания.
P.S. Уважаемые, не могли бы подсказать сайт, где можно было бы ознакомиться о основыми VBA?
 
Добавил описание в текст макроса (см.сообщение выше).
По основам VBA известно где можно шикарную книгу раздобыть:
Дж.Уокенбах "Excel 2010.Профессиональное программирование на VBA". Оч.советую для начала - читать, повторять прилагаемые примеры для лучшего усвоения и внедрять, пробовать, спрашивать, подсматривать чужие решения, разбирать их по костям пока не поймешь, как работает... как-то так. :)
Кому решение нужно - тот пример и рисует.
 
Guro2525, вот вам ещё вариант. С комментариями и тестовыми макросами  ;)
КОД
Изменено: Jack Famous - 15.05.2019 14:32:03
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Огромное всем спасибо за помощь и советы! Так оперативно, так информативно, что слов просто нет! :)
Буду разбираться во всем этом  :D
Еще раз спасибо вам ребята, и успехов!
Изменено: Guro2525 - 15.05.2019 14:21:58
Страницы: 1
Наверх