решение для выполнения множества расчетов на 3 миллиона точек данных и составления графиков - PullRequest
2 голосов
/ 24 июля 2010

У меня есть таблица Excel, которая составляет около 300 000 строк и около 100 столбцов

мне нужно выполнять различные функции в этой электронной таблице, и из этой электронной таблицы мне нужно создать около 3000 других электронных таблиц, которые значительно меньше

для каждой созданной электронной таблицы мне понадобится отдельный файл powerpoint, в котором будет автоматически сгенерированный график

Я много занимался программированием на VBA, но немного заблудился с этим проектом

  1. если я дам данные в файл mysql, мне будет проще справиться с этой задачей?
  2. Возможно ли сделать все это в VBA Excel?
  3. Можно ли программно добавлять графики из Excel в PowerPoint? или, может быть, я должен использовать другое решение для графиков?

Ответы [ 4 ]

3 голосов
/ 24 июля 2010

Это, безусловно, выполнимо во всех отношениях, но VBA может оказаться слишком трудоемким делом из-за его неуклюжего характера при открытии и закрытии экземпляров Excel и PowerPoint для 3000 электронных таблиц и презентаций. Если это одноразовое решение, и вам когда-нибудь понадобится сделать это только один раз, VBA, безусловно, быстро разрабатывается, поэтому вы можете сэкономить много денег заранее, просто используя объектную модель. Еще один вариант - сделать это из приложения Interop в C # или VB.NET, где вы можете лучше контролировать свою среду, например, сбор мусора.

Однако, если вы работаете с Excel 2007/2010 (я полагаю, вы из-за строк 300 КБ), я бы сделал что-то другое. Я выполнял процедуры калькуляции на основном XLSX в VBA, а затем использовал Open XML для обработки и создания 3000 электронных таблиц и презентаций с диаграммами. ( Примечание : Я бы не использовал Open XML на основном XLSX, потому что он фактически не отображает встроенные вычисления - вам все равно нужно открыть XLSX для «увлажните» электронную таблицу - так что VBA будет лучше в этом случае ).

Если вы новичок в Open XML, вам нужно многому научиться заранее, поэтому сок может не стоить того, чтобы его выжимать. Но такие статьи, как this , очень полезны, если вы хотите знать или уже открыли XML, что является отличной отправной точкой (поскольку оно также касается диаграмм). Но вы также можете использовать обертку в Open XML SDK, например Simple OOXML , которая неплохо подходит для начала.

2 голосов
/ 24 июля 2010

Взгляните на статистическую систему с открытым исходным кодом под названием «R». Он неплохо умеет программно генерировать графики и диаграммы из реальных наборов данных.

http://www.r -project.org /

2 голосов
/ 24 июля 2010
  1. Это сильно зависит от того, как вы планируете обрабатывать данные.Если вы планируете писать код в Excel, гораздо разумнее оставить его в Excel.Сказав это, я бы сбросил данные в CSV (с разделителями-запятыми) для дальнейшей обработки с помощью другого инструмента, такого как Python.Если вы похожи на большинство других программистов, у вас их не так уж много, поэтому вы хотите самое эффективное решение или близкое к нему.Если бы это был я, я написал бы код на Python для чтения данных из файла CSV, выполнения всех необходимых операций и сохранения 3000 отдельных выходных наборов в виде отдельных файлов CSV, которые можно импортировать обратно в Excel.

  2. Графики могут быть сложными для создания и управления из VBA.Я бы использовал библиотеку Python, такую ​​как Matplotlib , чтобы создать весь графический вывод, который будет сохранен на диск в виде изображений PNG, который можно вставить в презентацию (-ы) Powerpoint.*

    Python упоминается здесь только в качестве примера.Вы должны использовать инструмент, который вам наиболее знаком;однако концепции обработки данных программно (а не посредством взаимосвязанных ссылок на ячейки и формул с добавлением небольшого количества VBA для копирования листов и т. д.) все еще должны применяться и будут вашим лучшим способом продвижения вперед.Я проделал тонну той работы, которую вы описываете.Получите данные в CSV и обработайте данные с помощью кода.

1 голос
/ 24 июля 2010

Я не могу ответить 2. и 3. для вас, но по поводу 1: я определенно рекомендую против этого, основываясь на вашем вопросе ... конечно, вы не объяснили, какие именно операции вам нужнывыполнять на данных, так что скорее всего я ошибаюсь.

Ваша ситуация напоминает мне высказывание о регулярных выражениях: «Некоторые люди, когда они сталкиваются с проблемой, сразу же пытаются решить ее с помощью обычноговыражение. Теперь у них есть две проблемы ".Вам не нужны дополнительные проблемы.

Если вам нужно использовать базу данных для этого (просто потому, что в Excel это недостаточно эффективно), я бы остановился на чем-то вроде Microsoft, например Access или SQL Server., что избавит вас от неприятностей, вероятно.(никогда не думал, что скажу это)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...