Есть необходимость в формировании общей таблицы из аналогичных таблиц в файлах. Процесс следующий - работникам отправляется шаблон таблицы, они в соответствии со своим городом присутствия заполняют свою строку, затем файл возвращается мне с заполненной одной или несколькими строками. Из этих файлов необходимо сформировать единую таблицу.
На просторах сети нашел некоторые решения, в итоге получилось, что данные из каждого файла вставляются в виде диапазонов друг под другом, мне же необходимо чтобы из файла копировались только те строки, когда в диапазоне AA:AG содержатся данные, т.е. если там пусто, то не копируем, если есть хоть одно значение, значит такую строку копируем. При этом строка должна записываться в сводной таблице по тому же адресу, где был взята. Надеюсь задачу описал понятно. Расположение ячеек именно такое как в файлах исходниках. Двух одинаковых файлов быть не должно, но человеческий фактор никто не отменяет (т.е. могут быть заполнены данные за один и тот же город в двух разных файлах). В таком случае желательно отобразить ошибку или как то отметить. Сделал простой пример: В файле "Сборщик файлов" две вкладки, первая с макросом и как он сейчас собирает, вторая с тем что хотелось бы получить Также приложил в качестве примера три файла "исходного материала"
Хотелось бы понять как реализовать данную задачу, возможно кто то направит на похожую тему, я в течении недели не нашел. Предполагаю что необходимо данные записывать в массив,где будет значение города и значений ячеек в той же строке, а потом массив переносить в сводный файл, но реализовать пока не удалось из за нехватки знаний.
Добрый день.
Есть необходимость в формировании общей таблицы из аналогичных таблиц в файлах. Процесс следующий - работникам отправляется шаблон таблицы, они в соответствии со своим городом присутствия заполняют свою строку, затем файл возвращается мне с заполненной одной или несколькими строками. Из этих файлов необходимо сформировать единую таблицу.
На просторах сети нашел некоторые решения, в итоге получилось, что данные из каждого файла вставляются в виде диапазонов друг под другом, мне же необходимо чтобы из файла копировались только те строки, когда в диапазоне AA:AG содержатся данные, т.е. если там пусто, то не копируем, если есть хоть одно значение, значит такую строку копируем. При этом строка должна записываться в сводной таблице по тому же адресу, где был взята. Надеюсь задачу описал понятно. Расположение ячеек именно такое как в файлах исходниках. Двух одинаковых файлов быть не должно, но человеческий фактор никто не отменяет (т.е. могут быть заполнены данные за один и тот же город в двух разных файлах). В таком случае желательно отобразить ошибку или как то отметить. Сделал простой пример: В файле "Сборщик файлов" две вкладки, первая с макросом и как он сейчас собирает, вторая с тем что хотелось бы получить Также приложил в качестве примера три файла "исходного материала"
Хотелось бы понять как реализовать данную задачу, возможно кто то направит на похожую тему, я в течении недели не нашел. Предполагаю что необходимо данные записывать в массив,где будет значение города и значений ячеек в той же строке, а потом массив переносить в сводный файл, но реализовать пока не удалось из за нехватки знаний.Dodgem
Может кто подскажет, как выделить или получить адрес строки, в диапазоне, если в строке есть хотя бы одна непустая ячейка (но заполнены могут быть не все)?
Форумчане, все еще нужна помощь...
Может кто подскажет, как выделить или получить адрес строки, в диапазоне, если в строке есть хотя бы одна непустая ячейка (но заполнены могут быть не все)?Dodgem
Добавьте вниз макроса еще кусок (это не самый лучший по быстродействию вариант) [vba]
Код
With shd r1_ = .Cells(.Rows.Count, 2).End(3).Row r0_ = 2 If r1_ > r0_ Then For i = r1_ To r0_ Step -1 If .Cells(i, .Columns.Count).End(1).Column < 3 Then .Rows(i).Delete End If Next i End If End With
[/vba]
Добавьте вниз макроса еще кусок (это не самый лучший по быстродействию вариант) [vba]
Код
With shd r1_ = .Cells(.Rows.Count, 2).End(3).Row r0_ = 2 If r1_ > r0_ Then For i = r1_ To r0_ Step -1 If .Cells(i, .Columns.Count).End(1).Column < 3 Then .Rows(i).Delete End If Next i End If End With