Вы (почти?) Никогда не хотите иметь базу данных с одной таблицей. Вы также можете сохранить его в текстовом файле. Одним из основных преимуществ баз данных является связывание данных в разных таблицах, и одна таблица вам не нужна.
К счастью для вас, вам нужно больше, чем одна таблица, и база данных может быть путем. Вам (почти) никогда не нужно создавать постоянные таблицы в коде (временные таблицы, конечно, но не постоянные). Если ваши имена полей являются переменными, вам нужно изменить свой дизайн. Когда данные являются переменными, они поступают в базу данных базы данных. Когда это исправлено, это может быть таблица или поле. Исходя из того, что вы сказали, я думаю, что вам это нужно:
В Access создать внесенное называемое tblNetworks с этими полями
NetworkID AutoNumber
NetworkName Short Text
Затем создайте еще внесенные называемые tblCalculations с этими полями
CalcID Autonumber
NetworkID Long (Relates to tblNetworks, one to many)
CalcDesc Short Text
Result Number (Double)
То, что вы собираетесь назвать своими полями в таблице Access, будет представлять собой данные CalcDesc. Вы будете использовать ADODB для выполнения INSERT INTO операторов sql, которые помещают данные в таблицы.
Вы закончите с tblNetworks с 150 тыс. Записей и tblCalculations с 1,200 х 150 тыс. Записей или около того. Когда вы делаете столы длиннее и не шире по мере изменения, это хороший показатель, который вы правильно его разработали.
Если вы действительно не знакомы с Access, я рекомендую научиться создавать таблицы, настраивать отношения и ссылочную целостность. Если вы не знаете SQL, выполните поиск INSERT INTO. И если вы еще не использовали ADO в Excel, найдите ADODB Connections и метод Execute.
Update
Вы можете определенно уйти с CSV для этого. Как вы сказали, это довольно низко. Является ли текстовый файл или база данных правильным ответом, вероятно, больше зависит от того, как вы собираетесь использовать данные и как часто.
Если вы собираетесь потянуть это в Excel несколько раз, сделайте несколько видов или фильтров, возможно, сводную таблицу, то любая производительность, которую вы получите от CSV, не будет такой уж плохой. И если вам нужно иметь дело только с подмножеством данных за раз, вы можете использовать ADO для чтения текстового файла и только втягивать нужные вам данные в то время, что еще больше уменьшает медленность сортировки и фильтрации строк 150k. Не говоря уже о том, что у вас есть несколько гигабайт оперативной памяти, 150k x 1200, вероятно, не будет плохой.
Если вы обнаружите, что производительность CSV воняет, потому что ваше оборудование не соответствует задаче, вам приходится часто обращаться к ней, или вы делаете тонну разных запросов к данным, это может быть в вашу пользу для использования базы данных. Если поля структурированы так, как вы говорите, вы можете использовать еще больше таблиц. У вас все еще есть таблица сети и таблица calc, но у вас также есть таблицы Market, Slot и Characteristic. Тогда ваша таблица Calc будет выглядеть следующим образом:
CalcID
CalcDesc
NetworkID
MarketID
SlotID
CharacteristicID
Result
Если вы ищете данные много раз, и вам это нужно быстро, вы не собираетесь делать лучше, чем куча внутренних соединений этих таблиц и WHERE что ограничивает то, что вы хотите.
Но только вы можете решить, стоит ли устанавливать все настройки и накладные расходы на использование базы данных. И из-за этого я начал бы путь CSV до тех пор, пока не появятся причины изменения. Я бы разработал свой код таким образом, чтобы переключение с CSV на базу данных касалось только нескольких процедур (например, с использованием модулей классов), так что это изменение не повлияло на уже проверенную бизнес-логику.
Почему вы хотите создать базу данных через VBA? Кажется, мне было бы проще создать правильно созданную структуру данных в Access, а затем просто вывести результаты в существующий набор таблиц. – FreeMan
Простите меня за глупость, как я могу это сделать? Мне нужно будет генерировать все имена полей программно, поэтому я предположил, что VBA будет лучшим способом сделать это. Кроме того, все мои массивы уже вычислены с использованием VBA. –
См. [Ссылка ADO MSDN] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms677497%28v=vs.85%29.aspx). Здесь также приведены некоторые примеры создания таблиц, например [Создать таблицу SQL из Excel VBA] (http://stackoverflow.com/questions/927349/create-a-sql-table-from-excel-vba). – Comintern