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

Вход

Регистрация

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

 

= Мир MS Excel/Вставка данных из разных книг - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Вставка данных из разных книг
Vlad-on Дата: Среда, 19.09.2018, 09:55 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Раннее писал о своей проблеме, было предложено ее решение, но немного не подошло, при этом натолкнув на другой вариант ее решения.

Есть клиентская база (456 шт. на данный момент), на каждого клиента по имени и фамилии заведен свой индивидуальный лист в формате:
Иванов Иван.xlsx
Петров Петр.xlsx
и т.д.

Создан сводный лист (данные вытягиваются через скрипт вывода списка файлов в определенной папке), с именами файлов и путям к ним.
Клиентские файлы все однотипные. Все необходимые данные находятся во всех листах на одних и тех же местах.

Требуется в сводном листе (прикрепил к сообщению) вставить допустим ячейку 1A на против его записи в списке сводного файла.
То есть есть путь и имя файла в виде текста, нужно что бы используя эти данные в ячейку F2, F3, и т.д. вставлялось значение ячейки A1 из книги с данными клиента. При этом категорически необходимо, что бы считывание происходило из закрытой книги.
Пытался использовать функцию АДРЕС и ДВСЫЛ, категорически не получается сделать так, что бы путь и имя файла воспринимались не как текст, а вставлялись в качестве пути к открытию файла.

Забивать все ручками не вариант, т.к. клиентская база постоянно меняется. Хотелось бы именно периодически обновлять сводный фаил методом полного обновления списка клиентов (файлов в папке) и последующем копировании дополнительных ячеек, которые будут вставлять данные в сводный лист из определенных ячеек.
К сообщению приложен файл: 1939735.xlsm (48.4 Kb)
 
Ответить
СообщениеРаннее писал о своей проблеме, было предложено ее решение, но немного не подошло, при этом натолкнув на другой вариант ее решения.

Есть клиентская база (456 шт. на данный момент), на каждого клиента по имени и фамилии заведен свой индивидуальный лист в формате:
Иванов Иван.xlsx
Петров Петр.xlsx
и т.д.

Создан сводный лист (данные вытягиваются через скрипт вывода списка файлов в определенной папке), с именами файлов и путям к ним.
Клиентские файлы все однотипные. Все необходимые данные находятся во всех листах на одних и тех же местах.

Требуется в сводном листе (прикрепил к сообщению) вставить допустим ячейку 1A на против его записи в списке сводного файла.
То есть есть путь и имя файла в виде текста, нужно что бы используя эти данные в ячейку F2, F3, и т.д. вставлялось значение ячейки A1 из книги с данными клиента. При этом категорически необходимо, что бы считывание происходило из закрытой книги.
Пытался использовать функцию АДРЕС и ДВСЫЛ, категорически не получается сделать так, что бы путь и имя файла воспринимались не как текст, а вставлялись в качестве пути к открытию файла.

Забивать все ручками не вариант, т.к. клиентская база постоянно меняется. Хотелось бы именно периодически обновлять сводный фаил методом полного обновления списка клиентов (файлов в папке) и последующем копировании дополнительных ячеек, которые будут вставлять данные в сводный лист из определенных ячеек.

Автор - Vlad-on
Дата добавления - 19.09.2018 в 09:55
StoTisteg Дата: Среда, 19.09.2018, 10:19 | Сообщение № 2
Группа: Авторы
Ранг: Старожил
Сообщений: 1161
Репутация: 103 ±
Замечаний: 0% ±

Excel 2010
на каждого клиента по имени и фамилии заведен свой индивидуальный лист в формате:
Иванов Иван.xlsx
Петров Петр.xlsx
А зачем, простите? Если на каждого клиента нужно именно по листу, то отчего не хранить их все в одном файле? Заодно и список получать легче. И да, Вы не забыли предусмотреть, что люди бывают тёзками, иногда даже полными?


Интуитивно понятный код - это когда интуитивно понятно, что это код.
 
Ответить
Сообщение
на каждого клиента по имени и фамилии заведен свой индивидуальный лист в формате:
Иванов Иван.xlsx
Петров Петр.xlsx
А зачем, простите? Если на каждого клиента нужно именно по листу, то отчего не хранить их все в одном файле? Заодно и список получать легче. И да, Вы не забыли предусмотреть, что люди бывают тёзками, иногда даже полными?

Автор - StoTisteg
Дата добавления - 19.09.2018 в 10:19
Vlad-on Дата: Среда, 19.09.2018, 10:23 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
А зачем, простите? Если на каждого клиента нужно именно по листу, то отчего не хранить их все в одном файле?

Во первых изначально начали так, во вторых более удобно в плане поиска и прочего.

И да, Вы не забыли предусмотреть, что люди бывают тёзками, иногда даже полными?

Предусмотрели, за 7 лет такое попадалось всего два раза, и в этом случае добавляли к имени и фамилии префикс города обитания.
 
Ответить
Сообщение
А зачем, простите? Если на каждого клиента нужно именно по листу, то отчего не хранить их все в одном файле?

Во первых изначально начали так, во вторых более удобно в плане поиска и прочего.

И да, Вы не забыли предусмотреть, что люди бывают тёзками, иногда даже полными?

Предусмотрели, за 7 лет такое попадалось всего два раза, и в этом случае добавляли к имени и фамилии префикс города обитания.

Автор - Vlad-on
Дата добавления - 19.09.2018 в 10:23
sboy Дата: Среда, 19.09.2018, 10:25 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2566
Репутация: 724 ±
Замечаний: 0% ±

Excel 2010
Добрый день.
Вариант на Power Query
Если не установлена, то скачайте надстройку.
Удалите мои 2 верхних строки и нажмите "Обновить" на вкладке данные
К сообщению приложен файл: 1741592.xlsm (60.1 Kb)


Яндекс: 410016850021169
 
Ответить
СообщениеДобрый день.
Вариант на Power Query
Если не установлена, то скачайте надстройку.
Удалите мои 2 верхних строки и нажмите "Обновить" на вкладке данные

Автор - sboy
Дата добавления - 19.09.2018 в 10:25
Nic70y Дата: Среда, 19.09.2018, 10:30 | Сообщение № 5
Группа: Друзья
Ранг: Экселист
Сообщений: 9131
Репутация: 2415 ±
Замечаний: 0% ±

Excel 2010
Клиентские файлы все однотипные

http://www.excelworld.ru/forum/10-31484-1
вдруг правильно


ЮMoney 41001841029809
 
Ответить
Сообщение
Клиентские файлы все однотипные

http://www.excelworld.ru/forum/10-31484-1
вдруг правильно

Автор - Nic70y
Дата добавления - 19.09.2018 в 10:30
_Boroda_ Дата: Среда, 19.09.2018, 11:08 | Сообщение № 6
Группа: Админы
Ранг: Местный житель
Сообщений: 16888
Репутация: 6611 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
Макрос в модуль листа
Лист называется "Ведомость". Измените на свое название. В ячейке I1 пишем адрес той ячейки, откуда нужно вынуть данные
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address(0, 0) = "I1" Then
        On Error Resume Next
        ad_ = Range(Range("I1")).Address(, , xlR1C1)
        If Err Then Exit Sub
        On Error GoTo 0
        sh_ = "Ведомость"
        n_ = Cells(Rows.Count, 2).End(3).Row - 1
        ar = Cells(2, 6).Resize(n_)
        arf = Cells(2, 1).Resize(n_, 2)
        For i = 1 To n_
            If Dir(arf(i, 2)) = "" Then
                ar(i, 1) = ""
            Else
                put_ = "'" & Left(arf(i, 2), InStrRev(arf(i, 2), "\")) & "[" & arf(i, 1) & "]" & sh_ & "'!" & ad_
                ar(i, 1) = ExecuteExcel4Macro(put_)
            End If
        Next i
        Cells(2, 6).Resize(n_) = ar
    End If
End Sub
[/vba]
К сообщению приложен файл: 1939735_1.xlsm (50.7 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеМакрос в модуль листа
Лист называется "Ведомость". Измените на свое название. В ячейке I1 пишем адрес той ячейки, откуда нужно вынуть данные
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address(0, 0) = "I1" Then
        On Error Resume Next
        ad_ = Range(Range("I1")).Address(, , xlR1C1)
        If Err Then Exit Sub
        On Error GoTo 0
        sh_ = "Ведомость"
        n_ = Cells(Rows.Count, 2).End(3).Row - 1
        ar = Cells(2, 6).Resize(n_)
        arf = Cells(2, 1).Resize(n_, 2)
        For i = 1 To n_
            If Dir(arf(i, 2)) = "" Then
                ar(i, 1) = ""
            Else
                put_ = "'" & Left(arf(i, 2), InStrRev(arf(i, 2), "\")) & "[" & arf(i, 1) & "]" & sh_ & "'!" & ad_
                ar(i, 1) = ExecuteExcel4Macro(put_)
            End If
        Next i
        Cells(2, 6).Resize(n_) = ar
    End If
End Sub
[/vba]

Автор - _Boroda_
Дата добавления - 19.09.2018 в 11:08
  • Страница 1 из 1
  • 1
Поиск:

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