Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.12.2010, 01:48   #1
danetda
 
Регистрация: 22.12.2010
Сообщений: 3
По умолчанию Вытащить данные таблиц из кучи файлов

Приветствую, нужна помощь. Получаю кучу файлов (примерно 100) и все не соблюдают единый формат, но в каждом файле существуют 2 таблицы стандартизированные. Проблема в том, что они раскиданы по файлу в свободном порядке. Помогите вытащить данные из файлов в один лист,пжлста.
Голубые таблицы с нужными данными, имеют разное количество строк и размещены в разных местах листов
Нашел, как сделать файл со списком имен файлов в директории, которые требуется обработать, а как вытащить из них информацию не могу
В идеале хочу получить 2 файла с данными из 2 таблиц из всех файлов директории.
Пара примеров с полученными файлами ниже. Как сделать поиск по "шапка1" и "шапка10" (то,что не голубым цветом, разное в файлах) и скопировать информацию из голубых таблиц?
Вложения
Тип файла: rar Пример.rar (7.6 Кб, 13 просмотров)
danetda вне форума Ответить с цитированием
Старый 29.12.2010, 03:24   #2
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Функция возвращает массив ваших таблиц

Код:
Const Sapka1 As String = "Шапка 1"
Const Sapka2 As String = "Шапка 10"
Const Kol_Column1 As Integer = 7
Const Kol_Column2  As Integer = 3

Function Poisk(sh As Worksheet)
Dim x As Range
Dim REZ(1 To 2)
Dim Row_Nah As Long, Row_Kon As Long
Dim Col_Nah As Integer, Tabl1, Tabl2
With sh
Set x = .UsedRange.Find(Sapka1)
If Not x Is Nothing Then
Row_Nah = x.Row: Col_Nah = x.Column
Row_Kon = .Range(.Cells(Row_Nah, Col_Nah), .Cells(65000, Col_Nah)).SpecialCells(xlCellTypeConstants).Rows.Count
Tabl1 = .UsedRange.Range(.Cells(Row_Nah + 1, Col_Nah), .Cells(Row_Nah + Row_Kon - 1, Col_Nah + Kol_Column1 - 1))
REZ(1) = Tabl1
End If
Set x = .UsedRange.Find(Sapka2)
If Not x Is Nothing Then
Row_Nah = x.Row: Col_Nah = x.Column
Row_Kon = .Range(.Cells(Row_Nah, Col_Nah), .Cells(65000, Col_Nah)).SpecialCells(xlCellTypeConstants).Rows.Count
Tabl2 = .UsedRange.Range(.Cells(Row_Nah + 1, Col_Nah), .Cells(Row_Nah + Row_Kon - 1, Col_Nah + Kol_Column2 - 1))
REZ(2) = Tabl2
End If
End With
Poisk = REZ
End Function
Анализ,обработка данных Недорого

Последний раз редактировалось doober; 29.12.2010 в 10:41.
doober вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вытащить данные , удовлетворяющие двум условиям kzld Microsoft Office Excel 0 08.12.2010 10:28
Вытащить данные из нескольких файлов mmvds Microsoft Office Excel 7 07.11.2010 21:24
вытащить данные из бинарного файла Sanprof Общие вопросы Delphi 21 25.06.2010 10:37
Вытащить данные из MySQL Droid PHP 3 22.12.2008 23:23
Помогите вытащить из строки нужные данные! Romashkaz Общие вопросы C/C++ 0 22.11.2008 13:30