Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Импорт очень большого текстового файла (>10 млн строк, и объем около 2 ГБ)
 
Добрый день!

Подскажите, пожалуйста как оптимально по скорости/памяти решить следующую задачу:  

Имеются ежемесячные выгрузки из внешней системы, на которую я никак повлиять не могу.
Выгрузки представляют из себя текстовые файлы с разделителямя (зачисления).
Размер файла 1,5 - 2 ГБ и количество строк более 10 млн. Каждая строка = 1 зачисление , около 30 полей, из которых мне нужно только 5. (ФИО, Сумма, Дата операции, Дата рождения, тип зачисления) . Для одного клиента может быть несколько  зачислений (строчек).

Есть справочник клиентов (текстовый файл ~4 млн.записей), в котором хранятся только ФИО + Дата рождения

Мне необходимо из первого файла выбрать клиентов которые отсутствуют в справочнике и удовлетворяют определенным условиям. Таких ежемесячно бывает примерно 30-40 тыс. ФИО + ДР отобранных добавляем в справочник.

Соответственно,  чтобы решить данную задачу мне сейчас необходимо понять следующее:
1. Как правильно с точки зрения скорости/памяти считать текстовый файл в массив если я не знаю количество строчек в нем.Мне нужно будет в какой-то момент менять размерность массива, как это сделать лучше?

2. Прежде чем сравнивать массивы, по-любому придется их сортировать по полю ФИО. Подскажите пожалуйста самый быстрый алгоритм, который не использует вспомогательные массивы. Не хочется делать дополнительные копии массива в памяти.    
Обработка файлов *.msg
 
Добрый день!

  Помогите, пожалуйста, решить такую проблемку:
  В другой отдел по Outlook приходят каждый день 20-30 .xls файлов завернутых в RAR
  Раз в неделю девочка, которая получает эти файлы, выделяет все письма, сохраняет на диск, архивирует RAR  и присылает мне

 Чтобы не усложнять задачу, вложение RAR из Outlook на диск я скопирую ручками, остается такая матрешка;  RAR (  MSG  ( RAR ( XLS) ) )
 Как работать с RAR  в принципе понятно, но как их вытаскивать из  MSG, уже сохраненных на диске ?
Поиск минимального/максимального значения, Использование формулы массива в VBA
 
Дано:
В ячейках B1:B4 правильные даты в текстовом формате, выгружаются из внешней СУБД. мне нужно найти минимальную дату и максимальную дату. Есть вариант через вспомогательный столбик =Значен("B1", есть вариант через формулу массива  {=МИН(ЗНАЧЕН(B1:B4))}
Мне нужно это сделать через VBA без вспомогательных ячеек. Макрорекордер записал Range("B6"].FormulaArray = "=MIN(VALUE(R[-5]C:R[-2]C))" , а мне нужно что то типа ааа = MIN(VALUE(R[-5]C:R[-2]C))

Подскажите пожалуйста как это сделать?
Очистка форматов таблицы Excel с сохранением типа данных
 
Доброе время суток!

Существует "База" на листе 2.
Задача очистить эту базу от всех красот. и преобразовать ее в "Умную таблицу" для последующей обработки. (База фильтруется по полю Подразделение, и затем рассылается по подразделениям, каждому свой кусок таблицы, но это уже реализовано)
Пример во вложении справляется с задачей очистки таблицы, с одним но: Типы данных ячеек тоже очищаются, и , как следствие, дата преобразуется в число, и конечный пользователь уже видит не то, что хотелось бы.
Проблема усугубляется тем,  что столбцов в таблице может быть сколько угодно, и любые столбцы могут быть датой. О таблице я знаю только номер столбца, который содержит номер Подразделения, все остальное произвольно.

Подскажите, пожалуйста, как правильно очистить форматы таблицы Excel с сохранением типов данных столбцов?
Скрытый текст
Изменено: tvit - 11.12.2015 21:41:28
[VBA] Ускорение загрузки внешней таблицы
 
Добрый день!

  Имеется табличка на один из листов которой при открытии файла загружаются данные из SharePoint (10 000+ строк) при этом к ней автоматически добавляются
3 вычисляемых поля, в одном из которых используется функция ПОИСКПОЗ по внешней таблице excel  250 тыс. строк. Как результат все это работает, мягко говоря, не быстро. Но зато это все работает совсем без VBA
  Вопросы:
  1. Подскажите как написать скрипт, который на время загрузки внешней таблицы отключит обновление и автоматические вычисление (эти две команды в принципе знаю как написать) , загрузит таблицу, и затем заполнит вычисляемые поля и включит обновление экрана. Думаю это должно ускорить загрузку.
  2. Может есть другие способы ускорения? Как я понимаю, основной тормоз это вычисляемое поле. оно нужно только для того чтобы проверить есть искомая строка во второй базе или нет, но без него не обойтись
   
 
[VBA] Копирование нескольких листов Excel с последующим сохранением, копировать в отдельную книгу и сохранить под новым именем
 
Добрый день!

Так уж получилось, что по работе приходиться иметь дело с большим количеством отчетов, которые приходится периодически обновлять и затем результат выкладывать на общий ресурс. Отчеты в основном представляют из себя 2-3 листа с отчетными формами, каждый из которых примерно по 500 строк и нескольких десятков столбцов формул, большинство из которых СУММЕСЛИМН, СЧЕТЕСЛИМН, ВПР и т.п. и ссылаются на другие листы книги, а иногда на внешние источники данных.

Ежедневно приходиться проделывать одну и ту же работу:
- подготовить отчет
- Скопировать листы с отчетными формами в другой файл
- в новом файле разорвать связи
- все формулы заменить значениями (при ручной замене дело часто осложняется тем, что часть ячеек объеденные.)
- затем новая книга сохраняется под новым именем и выкладывается на сервер.

Наверняка многие уже сталкивались с такой задачей, поэтому вопрос, может у кого-нить есть надстройка, которая выполняет следующие действия:

1. При нажатии на кнопку в панели быстрого запуска, выводит на экран окно со списком листов активной книги, в том числе и скрытыми (ListBox ?)
2. Предлагает пользователю выбрать выбрать листы которые необходимо скопировать в новую книгу.
3. Копирует выбранные листы в новую книгу
4. Удаляет на листах в новой книге все формулы
5. Удаляет на листах в новой книге все связи
6. Удаляет на листах в новой книге все имена (наверное это не обязательно, но если удалить, то хуже не будет)
7. Все кнопки и другие активные элементы в том числе и код VBA (Это так, на будущее, надеюсь когда изучу VBA, они у меня тоже появятся в отчетных формах :-) Возможно еще что-то забыл.
8. Выводит на экран диалоговое окно для ввода имени нового файла (xlsx)
9. Сохраняет файл.

Кто-нить может помочь в написании данного макроса, или подсказать где лежит готовый?

PS Возможно пункт 8 нужно, поместить перед пунктом 3, чтобы при выполнении операций работать с конкретным названием книги?
Суммеслимн/Счётеслимн, где одно из условий вхождение значения в диапазон
 
Добрый день!
  Есть файлик (см.вложение). В нем есть список операций (Лист 1), мне нужно подсчитать (на Листе 3) только те, которые удовлетворяют следующим условиям:

1. Признак оплаты - Столбец D=1,
2. Канал подключения = IK или VSP (IB не считаем)
см. Лист 3 (Ячейка B2)
Для  первых двух условий формула будет такой:
=СУММЕСЛИМН(Лист1!D:D;Лист1!A:A;"IK")+СУММЕСЛИМН(Лист1!D:D;Лист1!A:A;"VSP")
Но нужно еще одно условие:
3. Классификатор должен быть 1 из 18 (см. Лист2!A:A), т.е в нашем примере 18.*, 19,* не считаем

Конечно можно решить проблему как и с каналом подключения,  сделав суммесли по каждому классификотру  и все их сложить, но может есть способ более простой?
Excel: Использование Access для обработки больших текстовых файлов
 
Добрый день!   Помогите пожалуйста в решении следующей задачи (см. вложение)

   Дано:
   Лист ФИО  от 60 до 500 тыс. строк (выделено голубым цветом), он заполняется вручную, копированием из другого Excel файла
   Необходимо заполнить столбики D и E (выделено желтым и зеленым) на основании листов Телефоны и Карты.
   Для маленького числа строк задача уже решена (см. вложение), но листы Телефоны и Карты иногда могут быть более 1 млн строк
     
   Задачу планируется решать с Помощью Access, но проблема в том, что человек, который будет работать с этим файлом, не знает что такое Access.
    Поэтому импорт текстового файла в Access хотелось бы сделать через Эксель, чтобы пользователь нажал кнопку, выбрал нужный файл, а дальше все само загрузилось в Access. Затем нажал 2-ю кнопку, заполнились нужные поля.
   Задача периодическая, раз в неделю-две.
   Кто может подсказать как это правильно сделать?
Страницы: 1
Наверх