Скажем, у меня есть папка с файлами Excel с предсказуемыми именами и форматированием. Как я могу автоматически прочитать их все в отдельный файл Excel? Я приветствую ответы VBA, но только те, которые достаточно полны, чтобы реализовать их без опыта. Я знаю, что версия может дать некоторую разницу в поведении, я лично работаю с Excel 2007.
Подробный пример
Чтобы нарисовать детальную картину, представьте, что у меня есть файлы с именами, приведенными ниже, с некоторым известным номером.
- 1.xls
- 2.xls
- 3.xls
- 4.xls
Для простоты рассмотрим, что все они имеют один лист с именем Sheet1 и только одно целочисленное значение в A1. В этой же папке я хотел бы иметь файл Excel, в котором есть столбец с целым числом из каждого из этих файлов. Просто чтобы быть абсолютно уверенным, что мой запрос ясен на 100%, я хочу файл, который выглядит следующим образом:
Где столбец Значение был автоматически получен из соответствующих файлов.
Что не работает
Я назову это "решением ручной связи". Это решение терпит неудачу, потому что оно требует ввода для всех ячеек. Если у меня есть 1000 файлов с правительственного сайта, это не практичный вариант.
- На изображении выше перейдите в ячейку B2
- Тип = 1.xls!a1
- Нажмите ввод
- Повторите логически для остальных 3 строк
Я назову это следующим "косвенным провалом". Это работает, но только если другой файл открыт во время вычисления значений. Опять же, это также нецелесообразно, если открытие 1000 файлов Excel может привести к сбою компьютера, не говоря уже о необходимости закрыть столько файлов.
- На изображении выше перейдите в ячейку
B2
- Type
=INDIRECT(A2&"!A1")
- Нажмите Enter
Кажется, что этот подход приближает меня к решению проблемы, но я не совсем понимаю, как заставить его делать то, что я хочу. О, мне также нужно указать, что использование полного имени файла также не решает проблему, то есть набрав ='C:\[1.xls]Sheet1'!A1
имеет ту же проблему, что файлы должны быть открыты, чтобы он работал (при условии, что 1.xls хранится на верхнем уровне диска C.)
Ссылки, которые не совсем исправить
Вы можете найти некоторые другие попытки решения этой проблемы в общем Интернете. Один, например, включает рабочие листы (не файлы), непрозрачен в том, что делает, и не полностью описывает, как реализовать решение.
Самый близкий ответ, который я нашел на Super User, был:Могу ли я использовать SQL для построения таблицы данных Excel из других файлов Excel? Это не удовлетворяет тому, что я ищу, потому что я не особенно хочу решение SQL, и я хочу что-то настолько простое, насколько это возможно. По этой же причине я попытался предложить свои неудачные решения, поэтому мы не будем спешить с теми решениями, которые я уже видел.
Это мой первый вопрос о суперпользователе, и я считаю, что это правильное место, чтобы задавать такие вопросы об Excel, потому что мой вопрос, который мы используем, ориентирован.