Модераторы: mihanik
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вытащить данные из нескольких файлов Excel 
V
    Опции темы
mmvds
Дата 7.11.2010, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 230
Регистрация: 22.12.2007

Репутация: нет
Всего: 6



Здравствуйте, подскажите пожалуйста, как решить такую проблему:
есть много файлов вида f_dd.mm.yyyy.csv (текстовый с разделителем ";") в них содержатся данные за дату dd.mm.yyyy по двум товарам A и B
например:
A;300
B;800
Как объединить все эти данные в одну таблицу, например с такой шапкой:
ДАТА А B
С экселем дружу не сильно, в голову приходит только макрос на открытие файла, копирование, вставка но опять же это придется записывать вручную для каждого файла его имя. 

Добавил пример данных за несколько дней

Это сообщение отредактировал(а) mmvds - 7.11.2010, 17:42

Присоединённый файл ( Кол-во скачиваний: 2 )
Присоединённый файл  AB.rar 0,48 Kb
PM MAIL ICQ   Вверх
Naghual
Дата 7.11.2010, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 7
Всего: 49



Проще будет обработать все файлы в папке в цикле и не заморачиваться с именами.



--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
Akina
Дата 7.11.2010, 20:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 26
Всего: 454



В цикле выполнить конкатенацию в один файл, затем импортировать в Эксель.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
mmvds
Дата 7.11.2010, 21:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 230
Регистрация: 22.12.2007

Репутация: нет
Всего: 6



Проблема решилась, помогли на другом форуме, немного не по Экселевски, но мне главное решить задачу smile


1) По месяцам:
Код

copy /b f*01.2010.csv 01.csv
copy /b f*02.2010.csv 02.csv
copy /b f*03.2010.csv 03.csv
copy /b f*04.2010.csv 04.csv
copy /b f*05.2010.csv 05.csv
copy /b f*06.2010.csv 06.csv
copy /b f*07.2010.csv 07.csv
copy /b f*08.2010.csv 08.csv
copy /b f*09.2010.csv 09.csv
copy /b f*10.2010.csv 10.csv
copy /b f*11.2010.csv 11.csv

Теперь за год:
Код

copy /b f*.csv all.csv


2) потом новый столбец D,E в D1="A" в E1="B" формулой =ЕСЛИ($D$1=A1;B1;"") растягиваем вниз по D, =ЕСЛИ($E$1=A1;B1;"") вниз по E
Получили столбец D где данные по А, где данные по Б - пусто, для соседнего столбца E - наоборот

3)Избавляемся от лишних пробелов:
Присваиваем Столбцу D  Имя ЕстьПустые1, столбцу E Есть Пустые2
Столбцу F НетПустых1, столбцу G НетПустых2
встаем в F1
Код

=ЕСЛИ(СТРОКА()-СТРОКА(НетПустых1)+1>ЧСТРОК(ЕстьПустые1)-СЧИТАТЬПУСТОТЫ(ЕстьПустые1);"";ДВССЫЛ(АДРЕС(НАИМЕНЬШИЙ((ЕСЛИ(ЕстьПустые1<>"";СТРОКА(ЕстьПустые1);СТРОКА()+ЧСТРОК(ЕстьПустые1)));СТРОКА()-СТРОКА(НетПустых1)+1);СТОЛБЕЦ(ЕстьПустые1);4)))

Аналогично для G1
растягиваем до половины таблицы
добавляем даты в столбец с датой 01.01.2010, 02.01.2010, растягиваем вниз пока есть значения, убеждаемся, что последняя дата- сегодняшнее число, все готово smile

Это сообщение отредактировал(а) mmvds - 7.11.2010, 21:55
PM MAIL ICQ   Вверх
Akina
Дата 7.11.2010, 22:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 26
Всего: 454



Шаг 1 искренне порадовал... странно, что тебя по строке на файл не заставили написАть... и ещё: если у тебя NTFS - результат скорее всего будет верным, но если ФАТ32 - тебя ждут сюрпризы.



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
mmvds
Дата 7.11.2010, 22:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 230
Регистрация: 22.12.2007

Репутация: нет
Всего: 6



По первому шагу именно так, т.к. если сделать тупо copy /b f*.csv all.csv то из-за особенностей сортировки сначала копирует все 01-ые числа, всех месяцев, потом 02, потом 03 и т.д. что не верно. Поэтому и пришлось сделать промежуточные файлы для каждого месяца, все верно
Немного неправильно написал общее объединение, верно вот так: 
Код

copy /b ??.csv all.csv

PM MAIL ICQ   Вверх
Akina
Дата 8.11.2010, 00:18 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 26
Всего: 454



Код

echo.>all.csv
for %%a in (01,02,03,04,05,06,07,08,09,10,11,12) do (copy all.csv+f_??.%%a.2010.csv)

Собсно я об этом и говорил, упоминая конкатенацию.

Добавлено через 3 минуты и 8 секунд
И опять-таки - это корректно только на НТФС (ну и на exFAT).

Это сообщение отредактировал(а) Akina - 8.11.2010, 00:20


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование, связанное с MS Office"
mihanik staruha

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами



  • Несанкционированная реклама на форуме запрещена
  • Пожалуйста, давайте своим темам осмысленный, информативный заголовок. Вопль "Помогите!" таковым не является.
  • Чем полнее и яснее Вы изложите проблему, тем быстрее мы её решим.
  • Оставляйте свои записи в "Книге отзывов о работе администрации"
  • А вот тут лежит FAQ нашего подраздела


Если Вам понравилась атмосфера форума, заходите к нам чаще!
С уважением mihanik и staruha.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование, связанное с MS Office | Следующая тема »


 




[ Время генерации скрипта: 0.0810 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.