Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/ВПР посредством VBA по нескольким книгам с выбором книг. - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » ВПР посредством VBA по нескольким книгам с выбором книг. (Макросы/Sub)
ВПР посредством VBA по нескольким книгам с выбором книг.
Elhust Дата: Вторник, 11.10.2016, 12:14 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 17
Репутация: -1 ±
Замечаний: 0% ±

Excel 2010
Доброго времени суток всем всем всем!!!, в данной теме хотел бы раскрыть ВПР по средствам VBA, давно обсуждаемая тема конечно, но есть несколько нюансов
1.По запуску макроса необходимо выбрать несколько книг в диалоговом окне, во всех этих книгах есть КЛЮЧЕВОЕ поле по которому производится ВПР.
2.После выбора каждая книга открывается по очереди, для выбора диапазона необходимых данных и так же указывается номер таблицы (все указывается через InputBox) после чего книга закрывается и открывается следующая.
3.Данные должны вставать друг за другом, то есть допустим у нас 3 книги - это три столбца, а не один.
Так же хотелось чтобы можно было осуществлять ВПР по двум критериям, но это уже просто СУПЕР БУДЕТ hands

1 и 2 пункт в принципе реализованы, 3 не понимаю как сделать да и сам ВПР почему то сломался, думаю там адрес диапазона съезжает. %)
К сообщению приложен файл: VlookUP.zip(27Kb)


Каждый сам выбирает правила игры

Сообщение отредактировал Elhust - Вторник, 11.10.2016, 12:42
 
Ответить
СообщениеДоброго времени суток всем всем всем!!!, в данной теме хотел бы раскрыть ВПР по средствам VBA, давно обсуждаемая тема конечно, но есть несколько нюансов
1.По запуску макроса необходимо выбрать несколько книг в диалоговом окне, во всех этих книгах есть КЛЮЧЕВОЕ поле по которому производится ВПР.
2.После выбора каждая книга открывается по очереди, для выбора диапазона необходимых данных и так же указывается номер таблицы (все указывается через InputBox) после чего книга закрывается и открывается следующая.
3.Данные должны вставать друг за другом, то есть допустим у нас 3 книги - это три столбца, а не один.
Так же хотелось чтобы можно было осуществлять ВПР по двум критериям, но это уже просто СУПЕР БУДЕТ hands

1 и 2 пункт в принципе реализованы, 3 не понимаю как сделать да и сам ВПР почему то сломался, думаю там адрес диапазона съезжает. %)

Автор - Elhust
Дата добавления - 11.10.2016 в 12:14
Фомулист Дата: Вторник, 11.10.2016, 13:39 | Сообщение № 2
Группа: Пользователи
Ранг: Участник
Сообщений: 71
Репутация: 2 ±
Замечаний: 40% ±

Excel 2003
По запуску макроса

Для начала, тогда, что эта тема делает в ветке "Вопросы по Excel", если есть ветка "Вопросы по VBA"?


Терпение и труд всё перетрут!
 
Ответить
Сообщение
По запуску макроса

Для начала, тогда, что эта тема делает в ветке "Вопросы по Excel", если есть ветка "Вопросы по VBA"?

Автор - Фомулист
Дата добавления - 11.10.2016 в 13:39
Elhust Дата: Вторник, 11.10.2016, 14:23 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 17
Репутация: -1 ±
Замечаний: 0% ±

Excel 2010
Для начала, тогда, что эта тема делает в ветке "Вопросы по Excel", если есть ветка "Вопросы по VBA"?


Скачай вложение там лежит Excel файл , и Макрос - это макрокоманда(так звучит в правильном переводе с англ.языка), содержащая последовательность действий, записанных пользователем. Запись производится с помощью встроенного в пакет Microsoft Office языка программирования - Visual Basic for Application(VBA).
[moder]Перенес тему в вопросы по VBA[/moder]


Каждый сам выбирает правила игры

Сообщение отредактировал SLAVICK - Вторник, 11.10.2016, 14:43
 
Ответить
Сообщение
Для начала, тогда, что эта тема делает в ветке "Вопросы по Excel", если есть ветка "Вопросы по VBA"?


Скачай вложение там лежит Excel файл , и Макрос - это макрокоманда(так звучит в правильном переводе с англ.языка), содержащая последовательность действий, записанных пользователем. Запись производится с помощью встроенного в пакет Microsoft Office языка программирования - Visual Basic for Application(VBA).
[moder]Перенес тему в вопросы по VBA[/moder]

Автор - Elhust
Дата добавления - 11.10.2016 в 14:23
Udik Дата: Вторник, 11.10.2016, 15:48 | Сообщение № 4
Группа: Друзья
Ранг: Старожил
Сообщений: 1219
Репутация: 153 ±
Замечаний: 0% ±

Excel 2013
Насколько понял
[vba]
Код

Option Explicit

Public Sub test()
    Dim lf As Long
    Dim iRange1 As Object, iRange2 As Range
    Dim NamTable As Integer, i As Long, ILastRow As Long, iFiles
    Dim objWorkbook As Excel.Workbook
    Dim j As Integer
   'Dim StartTime As Variant
   
    Set objWorkbook = ThisWorkbook
    
    With Application.FileDialog(msoFileDialogFilePicker)
    
        .AllowMultiSelect = True
        .Title = "Выбрать файлы" 'заголовок окна диалога
        .Filters.Clear 'очищаем установленные ранее типы файлов
        .Filters.Add "Excel files", "*.xls*;*.xlsx", 1 'устанавливаем возможность выбора только файлов Excel
        .Filters.Add "Text files", "*.txt", 2 'добавляем возможность выбора текстовых файлов
        .FilterIndex = 1 'устанавливаем тип файлов по умолчанию
        .InitialFileName = ThisWorkbook.Path & "\" 'назначаем папку отображения и имя файла по умолчанию
        .InitialView = msoFileDialogViewList 'вид диалогового окна(доступно 9 вариантов)
        
        If .Show = 0 Then Exit Sub 'показывает диалог
        'цикл по коллекции выбранных в диалоге файлов
        j = 0
        For lf = 1 To .SelectedItems.Count
            Workbooks.Open .SelectedItems(lf)
            Debug.Print .SelectedItems(lf)
            
              Set iRange2 = Application.InputBox("Выберите диапозон", "Второе значение", Type:=8)
                 NamTable = Application.InputBox("Введите номер столбца для отбора данных", "Третье значение", Type:=1)

                    For i = 1 To 42
                    objWorkbook.Worksheets(1).Cells(i + 1, 2 + j) = Application.VLookup(objWorkbook.Worksheets("Лист1").Cells(i + 1, 1).Value, iRange2, NamTable, False)
                    Next i
            j = j + 1
            Workbooks(ActiveWorkbook.Name).Close
        Next
    End With
End Sub
  

[/vba]
К сообщению приложен файл: VlookUP1-0.xls(41Kb)


вот вам барабан
яд 41001231307558 wm R419131876897
udik1968@gmail.com
 
Ответить
СообщениеНасколько понял
[vba]
Код

Option Explicit

Public Sub test()
    Dim lf As Long
    Dim iRange1 As Object, iRange2 As Range
    Dim NamTable As Integer, i As Long, ILastRow As Long, iFiles
    Dim objWorkbook As Excel.Workbook
    Dim j As Integer
   'Dim StartTime As Variant
   
    Set objWorkbook = ThisWorkbook
    
    With Application.FileDialog(msoFileDialogFilePicker)
    
        .AllowMultiSelect = True
        .Title = "Выбрать файлы" 'заголовок окна диалога
        .Filters.Clear 'очищаем установленные ранее типы файлов
        .Filters.Add "Excel files", "*.xls*;*.xlsx", 1 'устанавливаем возможность выбора только файлов Excel
        .Filters.Add "Text files", "*.txt", 2 'добавляем возможность выбора текстовых файлов
        .FilterIndex = 1 'устанавливаем тип файлов по умолчанию
        .InitialFileName = ThisWorkbook.Path & "\" 'назначаем папку отображения и имя файла по умолчанию
        .InitialView = msoFileDialogViewList 'вид диалогового окна(доступно 9 вариантов)
        
        If .Show = 0 Then Exit Sub 'показывает диалог
        'цикл по коллекции выбранных в диалоге файлов
        j = 0
        For lf = 1 To .SelectedItems.Count
            Workbooks.Open .SelectedItems(lf)
            Debug.Print .SelectedItems(lf)
            
              Set iRange2 = Application.InputBox("Выберите диапозон", "Второе значение", Type:=8)
                 NamTable = Application.InputBox("Введите номер столбца для отбора данных", "Третье значение", Type:=1)

                    For i = 1 To 42
                    objWorkbook.Worksheets(1).Cells(i + 1, 2 + j) = Application.VLookup(objWorkbook.Worksheets("Лист1").Cells(i + 1, 1).Value, iRange2, NamTable, False)
                    Next i
            j = j + 1
            Workbooks(ActiveWorkbook.Name).Close
        Next
    End With
End Sub
  

[/vba]

Автор - Udik
Дата добавления - 11.10.2016 в 15:48
Elhust Дата: Среда, 12.10.2016, 10:03 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 17
Репутация: -1 ±
Замечаний: 0% ±

Excel 2010
Ларчик то просто открывался specool Благодарю! и думаю пока тему можно не закрывать, хочу ещё подумать по поводу доработки.
- Сделать возможность ВПР по двум критериям.(Так чтобы можно было выбрать по двум или по одному из)
- И ещё возможность добавлять не один столбик а несколько тоже на выбор при условии что они находятся в разных местах


Каждый сам выбирает правила игры

Сообщение отредактировал Elhust - Среда, 12.10.2016, 10:16
 
Ответить
СообщениеЛарчик то просто открывался specool Благодарю! и думаю пока тему можно не закрывать, хочу ещё подумать по поводу доработки.
- Сделать возможность ВПР по двум критериям.(Так чтобы можно было выбрать по двум или по одному из)
- И ещё возможность добавлять не один столбик а несколько тоже на выбор при условии что они находятся в разных местах

Автор - Elhust
Дата добавления - 12.10.2016 в 10:03
Elhust Дата: Среда, 12.10.2016, 10:19 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 17
Репутация: -1 ±
Замечаний: 0% ±

Excel 2010
Думаю можно с помощью MsgBox в цикл по книгам добавить один для двух критериев другой для возможности выбора и добавления нескольких столбиков
или проще форму сделать , как рациональней можно выполнить задачу ?


Каждый сам выбирает правила игры
 
Ответить
СообщениеДумаю можно с помощью MsgBox в цикл по книгам добавить один для двух критериев другой для возможности выбора и добавления нескольких столбиков
или проще форму сделать , как рациональней можно выполнить задачу ?

Автор - Elhust
Дата добавления - 12.10.2016 в 10:19
Elhust Дата: Среда, 26.10.2016, 14:06 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 17
Репутация: -1 ±
Замечаний: 0% ±

Excel 2010
Пожалуйста подкиньте идею (


Каждый сам выбирает правила игры
 
Ответить
СообщениеПожалуйста подкиньте идею (

Автор - Elhust
Дата добавления - 26.10.2016 в 14:06
Michael_S Дата: Среда, 26.10.2016, 14:29 | Сообщение № 8
Группа: Друзья
Ранг: Старожил
Сообщений: 1687
Репутация: 327 ±
Замечаний: 0% ±

Excel2016
[offtop]"по средствам" - это когда денег в кармане хватает; а если через VBA, то "посредством"[/offtop]


ЯД: 41001136675053
WM: R389613894253
 
Ответить
Сообщение[offtop]"по средствам" - это когда денег в кармане хватает; а если через VBA, то "посредством"[/offtop]

Автор - Michael_S
Дата добавления - 26.10.2016 в 14:29
Elhust Дата: Среда, 26.10.2016, 15:49 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 17
Репутация: -1 ±
Замечаний: 0% ±

Excel 2010
сколько?


Каждый сам выбирает правила игры
 
Ответить
Сообщениесколько?

Автор - Elhust
Дата добавления - 26.10.2016 в 15:49
DOK2014 Дата: Четверг, 27.10.2016, 10:26 | Сообщение № 10
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
отбор по двум критериям больше (подходит к теме "Вопросы Ексель"):
способ работает, если в источнике данных можно добавить "технический" столбец, содержимое ячейки = критерий1 & критерий2.
в стандартой функции впр задается условие "критерий1 & критерий2".
Работает достаточно быстро.


DOK2014
 
Ответить
Сообщениеотбор по двум критериям больше (подходит к теме "Вопросы Ексель"):
способ работает, если в источнике данных можно добавить "технический" столбец, содержимое ячейки = критерий1 & критерий2.
в стандартой функции впр задается условие "критерий1 & критерий2".
Работает достаточно быстро.

Автор - DOK2014
Дата добавления - 27.10.2016 в 10:26
Pelena Дата: Четверг, 27.10.2016, 10:51 | Сообщение № 11
Группа: Модераторы
Ранг: Экселист
Сообщений: 9882
Репутация: 2266 ±
Замечаний: 0% ±

Excel 2010 & Mac Excel 2011
подходит к теме "Вопросы Ексель"

DOK2014, автору нужен макрос, если Вы не заметили


"Черт возьми, Холмс! Но как??!!"
ЯД 41001765434816
 
Ответить
Сообщение
подходит к теме "Вопросы Ексель"

DOK2014, автору нужен макрос, если Вы не заметили

Автор - Pelena
Дата добавления - 27.10.2016 в 10:51
Michael_S Дата: Четверг, 27.10.2016, 11:49 | Сообщение № 12
Группа: Друзья
Ранг: Старожил
Сообщений: 1687
Репутация: 327 ±
Замечаний: 0% ±

Excel2016
Чет я туплю сегодня...
Попробовал и с файлом Elhust, и с файлом Udik, - везде во втором столбце получаю "красиво"...
Короче, вам "шашечки или ехать"? Обязательно ВПР?
В VBA это решается примерно так:
1 берем данные в массив
2 проходим по искомому столбцу
3 если совпадает - записываем
4 если есть второй критерий - проверяем на совпадение в соответствующем столбце
5 третий критерий - тоже самое
6 и т.д.


ЯД: 41001136675053
WM: R389613894253
 
Ответить
СообщениеЧет я туплю сегодня...
Попробовал и с файлом Elhust, и с файлом Udik, - везде во втором столбце получаю "красиво"...
Короче, вам "шашечки или ехать"? Обязательно ВПР?
В VBA это решается примерно так:
1 берем данные в массив
2 проходим по искомому столбцу
3 если совпадает - записываем
4 если есть второй критерий - проверяем на совпадение в соответствующем столбце
5 третий критерий - тоже самое
6 и т.д.

Автор - Michael_S
Дата добавления - 27.10.2016 в 11:49
Мир MS Excel » Вопросы и решения » Вопросы по VBA » ВПР посредством VBA по нескольким книгам с выбором книг. (Макросы/Sub)
Страница 1 из 11
Поиск:

Яндекс цитирования
© 2010-2016 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!