Страницы: 1
RSS
VBA. Получить данные из другой книги по условию
 
Привет, Форумчане! Помогите пожалуйста по написанию макроса, так как я в этом новичок. Попытался написать через макрорекордер, но не получается, мне нужен динамический макрос.

У меня есть файл Расчеты(в нем данные) и Макрос расчеты(нужно туда макрос написать).

Итак нужно создать новый столбец в конце(файл Расчет кред.линии) и вписать формулу [=ВПР(M9;'[Макрос Расчеты (измененный).xlsx]Лист2'!$A:$B;2;0)] и вставить их как значение, далее заполнить всю строку. Поставить фильтр, всех (#Н/Д) из столбца переименовать по формуле [=BJ9] (нужно прировнять к столбцу Субпортфель).
 
судя по описанию,вроде не сложно
по той же причине файлы открывать страшно
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Тема: "VBA. Получить данные из другой книги по условию"
Код
Sub Angelo125()
Dim arr(), arrM(), arrBJ(), arrVPR()
Dim iSh As Worksheet
Set iSh = Workbooks("Расчет. Кредитные линии.xlsx").Worksheets("классификация кредитных линий")
With iSh
    arrM = .Range("M9:M" & .Cells(.Rows.Count, "M").End(xlUp).Row).Value
    arrBJ = .Range("BJ9:BJ" & .Cells(.Rows.Count, "M").End(xlUp).Row).Value
End With
With ThisWorkbook.Worksheets("Лист2")
    arr = .Range("A2:B" & .Cells(.Rows.Count, "A").End(xlUp).Row).Value
End With
ReDim arrVPR(1 To UBound(arrM), 1 To 1)
With CreateObject("Scripting.Dictionary")
    For I = LBound(arr) To UBound(arr)
        If Not .Exists(arr(I, 1)) Then .Item(arr(I, 1)) = arr(I, 2)
    Next
    For I = 1 To UBound(arrM)
        If .Exists(arrM(I, 1)) Then
            arrVPR(I, 1) = .Item(arrM(I, 1))
        Else
            arrVPR(I, 1) = arrBJ(I, 1)
        End If
    Next
End With
iSh.Range("BW9").Resize(UBound(arrVPR), 1) = arrVPR
End Sub
Согласие есть продукт при полном непротивлении сторон
 
Sanja написал:
Цитата
Согласие есть продукт при полном непротивлении сторон.
Спасибо вам большое, понятный код. Но можно ли эту строку изменить:
Set iSh = Workbooks("Расчет. Кредитные линии.xlsx").Worksheets("классификация кредитных линий")

можно ли изменить код так чтобы я мог загружать файл выборочно, любой файл?
Изменено: Angelo125 - 03.09.2019 17:10:59
 
Цитата
Angelo125: можно ли изменить код так чтобы я мог загружать файл выборочно, любой файл?
так сделайте вместо статичного пути текстовую переменную и передавайте в неё любой адрес. Только это уже другая тема с другим названием…
Цитата
Angelo125: Sanja  написал: ЦитатаСогласие есть продукт при полном непротивлении сторон.
это подпись в профиле, а не слова, адресованные лично вам  ;)
Изменено: Jack Famous - 03.09.2019 17:20:09
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Angelo125 написал:
можно ли изменить код так чтобы я мог загружать файл выборочно, любой файл?
А у вас в каждом выборочном файле лист с данными с одним и тем же названием?
Если нет, то динамически выбрать не вариант, либо для каждого файла писать соответствующее наименование листа. Но это вообще не вариант. 8-0
"Все гениальное просто, а все простое гениально!!!"
 
Цитата
Nordheim написал:
динамически выбрать не вариант
- можно использовать тык мышью в диапазон нужного листа, пусть юзер сперва сам откроет нужные книгу/лист, затем выполняет код.
 
Цитата
Nordheim написал:
А у вас в каждом выборочном файле лист с данными с одним и тем же названием?
Название шапки не меняются, только столбцы и строки. Именно поэтому нужен динамический макрос для выбора файла
 
Цитата
Jack Famous написал:
так сделайте вместо статичного пути текстовую переменную и передавайте в неё любой адрес. Только это уже другая тема с другим названием…
в файлах столбцы те же, только данные меняются. И для этого подходит динамический макрос, но я не знаю как написать, помогите пж
 
Цитата
Angelo125 написал:
Название шапки не меняются
Что подразумевается под "шапкой"?
"Все гениальное просто, а все простое гениально!!!"
 
Цитата
Nordheim написал:
Что подразумевается под "шапкой"?
название колон, столбцов
 
А причем тут "шапка", я вопрос задавал про наименование листа, шапка это уже второе.
"Все гениальное просто, а все простое гениально!!!"
 
Цитата
Nordheim написал:
А причем тут "шапка", я вопрос задавал про наименование листа, шапка это уже второе
Наименование листа тоже не изменяется
Страницы: 1
Наверх