Доброго времени суток! Прошу помочь советом или идеей. Вопрос такой: Во вложении есть файл. Там представлены несколько столбцов: Каталожный номер (он же артикул), наименование с характеристикой, допуски или соответствия, точные значения Для примера привел небольшой кусок. Получается что каждому каталожнику соответствует целый перечень характеристик с значениями. Хочется использовать этот файл как базу для подгрузки данных. Теперь представим, что есть список каталожных номеров (просто голый список). Который мы заносим в книгу эксель, а на выходе получаем техническое задание по этим запрашиваемым каталожным номерам в таком же формате, как оно приведено в файле.
Каким способом это можно реализовать? Макросами? ВПР или чем-то похожим? В какой области искать ответ?
artyrH, почти оно. Однако такой вариант подходит для выгрузки артикулов по одному, а не списком сразу. Подглядел у коллег макрос, в результате которого получается почти тот результат, который мне нужен. За тем исключением, что выгружаются не все 4 столбца, а только 3. Текст макроса во вложении. Только начал учить VBA и не очень понимаю, как внести изменения так, что бы получить в выгрзку четвертый столбец из базы
Если есть возможность, то я бы не отказался от объяснения того макроса, что я скинул выше в вордовском файле, т.к. она точно работает, но выгружает не 4, а 3 столбца. У меня так же есть подозрения, что в ней много лишнего, например прокручивание экрана вверх и вниз.
Василий Иванович: - Петька! Я книгу написал! 32 тома! Петька читает: первый том 1 строка: Василий Иванович поехал в штаб. Цок цок цок ...32 тома Пролог: Василий Иванович приехал в штаб.
ищи такие выражения: Range("A1:C1").Select Range("A12:C21").Select Range("A12:C31").Select С это номер 3 колонки. Четвёртая колонка D
Private Sub Worksheet_Change(ByVal Target As Range)
Dim x As Range, r1 As Range, r2 As Range
If Target.Column = 1 Then
If Target.Cells.Count = 1 Then
Application.EnableEvents = False
Application.ScreenUpdating = False
Set x = Sheets(2).Columns(1).Find(Target, , , xlWhole)
If Not x Is Nothing Then
Set r1 = Target
Set r2 = x
Do
r2.Offset(, 1).Copy r1.Offset(, 1)
r2.Offset(, 2).Copy r1.Offset(, 2)
r1.Offset(1).EntireRow.Insert
Set r1 = r1.Offset(1)
Set r2 = r2.Offset(1)
Loop While Len(Trim(r2.Value)) = 0 And Len(Trim(r2.Offset(, 1).Value)) > 0
r1.EntireRow.Delete
End If
Application.ScreenUpdating = True
Application.EnableEvents = True
End If
End If
End Sub
Александр Моторин написал: Range("A12:C21").SelectRange("A12:C31").SelectС это номер 3 колонки. Четвёртая колонка D
Нашел их все, однако результат такой же, ничего не изменилось, выгружается только 3 столбца. Может с учетом кода выложенного выше можно реализовать выгрузку 4ого?
Добавлением строки r2.Offset(, 3).Copy r1.Offset(, 3) в цикл do проблема решилась полностью