PooHkrd, благодарю за ссылку. Задача осложняется тем, что файлы из которых надо вытащить данные находятся на сетевом ресурсе sharepoint и все описанные варианты с powerquery у меня не работали. Поэтому хотел попробовать решить каким-то иным путём, но видимо без powerquery не обойтись.
Спасибо! Так, вроде данные выцепить получилось! Но как, я понимаю, функция открывает файл, но не закрывает его после выполнения, т.к. эксель начинает ругаться что "Файл "Источник" уже открыт ... ". Хотя я его среди открытых файлов не вижу. Это можно исправить?
И боюсь что если надо собрать данные из множества файлов (у меня их больше 100), то эксель не переварит.
Решил что больше всего подходит способ с получением данных при помощи пользовательской функции, описанный в этой статье. Скопировал код, вставил его через Insert - Module
Код
Function Get_Value_From_Close_Book(sWb As String, sShName As String, sAddress As String) Dim vData, objCloseBook As Object
Set objCloseBook = GetObject(sWb)
'получаем значение
vData = objCloseBook.Sheets(sShName).Range(sAddress).Value
objCloseBook.Close False
'Возвращаем данные в ячейку с функцией
Get_Value_From_Close_Book = vData
End Function
Далее пишу формулу (на сколько я понял, все перемененные пишутся в кавычках):
Мне надо вытащить данные из одной и той же ячейки в разных файлах в один. Пример файлов: 1. =Путь\[Книга1.xlsm]Лист1'!A1 2. =Путь\[Книга2.xlsm]Лист1'!A1
Я с помощью функции СЦЕПИТЬ собираю путь к ячейки в других файлах, в результате получается такая формула:
Код
=СЦЕПИТЬ("='";A1;A2;"\";B2;"\";"[";C2;"]";D2)
, где А1 - путь А2 - название папки В2 - название подпапки С2 - название файла D2 - имя листа и ячейки
В ячейке получается корректная ссылка на ячейку во внешнем файле. Как далее эту формулу преобразовать в ссылку и заставить эксель выполнить её?
Я делаю так: Копирую ячейку и вставляю её как значение -> Найти заменить -> "=" заменить на "=", формула выполняется. Так это работает, но хотелось бы сделать без лишних движений.
Z пишет: Если ОДИНАКОВЫЕ то зачем что-то куда-то копировать?!
Вариантов может быть много. Например, я отправил кому-то заполнить файл, а человек в ячейку с формулой поставил значение или поменял формулу. Когда на листе много сложных формул это не очень легко проверить. Либо мне надо консолидировать данные из нескольких одинаковых таблиц.
Цитата
ps Правила, пп 2.2, 2.3.
Примером может быть любая таблица, но раз так надо прикладываю. Например, я отправляю кому-то шаблон таблицы (Лист 1), мне ее прислали в заполненном виде (Лист 2), но в диапазоне D39:G41 вместо формул поставили значения. Я хочу скопировать данные в свой шаблон. Как я делаю сейчас: сначала копирую диапазон D13:G37, вставляю его в свою таблицу. Затем диапазон D51:G74. Как я хочу сделать: скопировать диапазон D13:G74 и вставить его на Лист 1 так, чтобы в ячейках D39:G41 остались стоять формулы.
Всем привет. Давно мучаюсь с такой проблемой в экселе: Есть две одинаковые таблицы, в которых присутствуют ячейки для заполнения и ячейки с формулами. Как можно скопировать данные из одной таблицы и вставить в другую только значения тех ячеек, которые предназначены для заполнения, а ячейки с формулами не менялись.
Добрый день! Наверняка есть решение проблемы, которую я никак не могу решить. Попытаюсь объяснить. У нас есть такая таблица:
Надо перенести цифры в другую такую же таблицу данные только тех ячеек, которые введены вручную. Формулы трогать не надо, т.к. в новой таблице уже есть формула и она может быть другая. Чтобы сделать это сейчас, я отдельно копирую-вставляю один диапазон, потом второй. А можно как-то сделать это одним разом? Например, если я выделяю два диапазона, то вставляются они сплошным столбцом, т.е. без учета пропущенных ячеек. Помогите решить проблему.