Есть необходимость в формировании общей таблицы из аналогичных таблиц в файлах. Процесс следующий - работникам отправляется шаблон таблицы, они в соответствии со своим городом присутствия заполняют свою строку, затем файл возвращается мне с заполненной одной или несколькими строками. Из этих файлов необходимо сформировать единую таблицу.
На просторах сети нашел некоторые решения, в итоге получилось, что данные из каждого файла вставляются в виде диапазонов друг под другом, мне же необходимо чтобы из файла копировались только те строки, когда в диапазоне AA:AG содержатся данные, т.е. если там пусто, то не копируем, если есть хоть одно значение, значит такую строку копируем. При этом строка должна записываться в сводной таблице по тому же адресу, где был взята. Надеюсь задачу описал понятно. Расположение ячеек именно такое как в файлах исходниках. Двух одинаковых файлов быть не должно, но человеческий фактор никто не отменяет (т.е. могут быть заполнены данные за один и тот же город в двух разных файлах). В таком случае желательно отобразить ошибку или как то отметить.
Сделал простой пример: В файле "Сборщик файлов" две вкладки, первая с макросом и как он сейчас собирает, вторая с тем что хотелось бы получить Также приложил в качестве примера три файла "исходного материала"
Хотелось бы понять как реализовать данную задачу, возможно кто то направит на похожую тему, я в течении недели не нашел. Предполагаю что необходимо данные записывать в массив,где будет значение города и значений ячеек в той же строке, а потом массив переносить в сводный файл, но реализовать пока не удалось из за нехватки знаний.
Dodgem написал: При этом строка должна записываться в сводной таблице по тому же адресу, где был взята.
Вот тут не совсем понятно, что значит в сводной таблице? это уже не копирование а сводная по нескольким файлам, загляните в приемы там вроде есть такое.
"Все гениальное просто, а все простое гениально!!!"
в файле Москва очистил ячейку A7 в файл Сборщик файлов.xls на Лист1 добавил таблицу (нужна для запроса, из нее берется путь к папке) запрос Power Query
Код
let
Files = Folder.Files(Text.BeforeDelimiter(Excel.CurrentWorkbook(){[Name="FilePath"]}[Content][Value]{0}, "\", {0, 1})&"\Города"),
Filter = Table.FromList(List.Transform(Table.SelectRows(Files, each not [Attributes][NotContentIndexed])[Content],Excel.Workbook),Splitter.SplitByNothing()),
Sheets = Table.SelectRows(Table.ExpandTableColumn(Filter, "Column1", {"Data", "Kind"}),each [Kind]="Sheet" or [Kind]=null)[Data],
Combine = Table.Combine(List.Transform(Sheets,each Table.PromoteHeaders(_))),
Expr = "["&Text.Combine(List.RemoveRange(Table.ColumnNames(Combine),0,1),"]<>null or[")&"]<>null",
Result = Table.SelectRows(Combine,each Expression.Evaluate(Expr,[_=_]))
in
Result
Nordheim написал: Вот тут не совсем понятно, что значит в сводной таблице? это уже не копирование а сводная по нескольким файлам, загляните в приемы там вроде есть такое.
Возможно я выразился некорректно "сводная" таблица = итоговая таблица, в которую попадает информация из нескольких файлов, здесь не имелась ввиду таблица созданная средствами Excel.
В последствии будет более 600 исходных файлов, в каждом более 300 строк. Я боюсь что средствами сводных таблиц будет проблематично такой объем обрабатывать.
Dodgem написал: етсь возможность использовать только 2013 версию
для 2010 и 2013 надо скачать надстройку. установить и затем открыть распакованный сборщик файлов и на вкладке Данные нажать обновить все. если ошибок нет, то добавить еще файлов в папку Города и снова обновить все. *значения в столбцах D:Z не являются значимыми, их можно не переносить. их(значений) там просто не должно быть
Все бы хорошо, только на рабочей машине все заблокировано для скачивания и установки...
Цитата
Nordheim написал: Допустим, в 2 файлах данные находятся на одном адресе, что естественно, то одни данные затирать другими, или подразумевается что-то еще?
1. Фразой "по одному и тому же адресу" я имел ввиду следующее: если в файле, допустим Москва заполнены ячейки АА2:AG2 то и в файл "Сборщик файлов" они должны располагаться в диапазоне АА2:AG2. Я все же думаю что проще будет копировать и переносить всю строку в диапазоне С2:AG2.
2. на одном адресе в разных файлах данных быть не должно(теоретически, но такой вариант тоже не исключаю). Если будут, перезатираем...