Вопрос по вариантам. Я понимаю, что варианты в Excel vba являются типом данных по умолчанию и также неэффективны (с точки зрения чрезмерного использования в больших приложениях). Однако я регулярно использую их для хранения данных в массивах, которые имеют несколько типов данных. Текущий проект, над которым я работаю, - это, по сути, задача, которая требует огромной оптимизации очень плохого кода (c.7000 строк) - и это заставило меня задуматься; есть ли способ обойти это?
объяснить; код часто хранит данные в переменных массива. Поэтому рассмотрим набор данных из 10 столбцов на 10000. Столбцы представляют собой несколько разных типов данных (строковые, двойные, целые, даты и т. Д.). Предполагая, что я хочу сохранить их в массиве, я бы обычно;
dim myDataSet(10,10000) as variant
Но мои знания говорят о том, что это будет действительно неэффективно с кодом, оценивающим каждый элемент, чтобы определить, какой это тип данных (когда на практике я знаю, что я ожидаю). Кроме того, я теряю контроль, который дает мне измерение отдельных типов данных. Итак, (предполагая, что первые 6 являются строками, следующие 4 дублируются для простоты объяснения сути), я мог бы;
dim myDSstrings(6,10000) as string
dim myDSdoubles(4,10000) as double
Это возвращает мне контроль и эффективность, но также немного неуклюже (на практике типы смешаны и различны), и я получаю нечетное количество элементов в каждом, и в итоге приходится назначать их индивидуально в коде - а не по массе). Итак, это случай;
myDSstrings(1,r) = cells(r,1)
myDSdoubles(2,r) = cells(r,2)
myDSstrings(2,r) = cells(r,3)
myDSstrings(3,r) = cells(r,4)
myDSdoubles(3,r) = cells(r,5)
..etc...
Что намного страшнее, чем;
myDataSet(c,r) = cells(r,c)
Так что - это заставило меня задуматься - Должно быть, я что-то здесь упускаю. Каков оптимальный способ хранения массива данных разных типов? Или, если предположить, что нет способа сделать это - что было бы наилучшим методом кодирования для хранения массива смешанных типов данных?