VBA & Excel
От: sshurov  
Дата: 25.01.05 13:54
Оценка:
Столько копий сломано по поводу оптимизации вывода в Excel
Уже совершенно очевидно, что заполнять лист по ячейкам, выполнять .Select-ы, и прочее, прочее
совсем "не логиш".
Другое дело сделать в памяти массив вариантов и потом присвоить его реальному Range листа.
чтото вроде

Dim varArray(x, y)
for i = xxx
for j = xxx
varArray(i, j) = <values>
next
next

Set p_Range = Application.Range("XX:YY")

p_Range.Value = varArray(...)

работает всё супер — массив в 40.000 ячеек (на 1ГГц проце) заполняется секунд за пару-тройку.

Но не все так гладко.
Проблема состоит в том, что реально в том ранге ( Set p_Range = Application.Range("XX:YY") )
могут быть объеденённые ячейки. тоесть реально в массиве вариантов varArray ячейке 10,3
в ранге листа может соответствовать одновременно и 10,3 и 10,4, и 10,5.
Excel есессно чихать хотел на это и пуляет данные один к одному.
Таким образом — чтобы не потреять данные — приходится создавать массив вариантов с "фиктивными"
ячейками.

Вопрос собсно в следующем — может кто знает, как отучить Excel от такой "дурацкой" привычки,
чтобы он пулял значения с учётом объеденённых ячеек.

Спасибо!

С.
Re: VBA & Excel
От: SergeySV2  
Дата: 28.01.05 07:32
Оценка:
Думаю это невозможно, ведь ячейки то объединеные, как же иначе Excel будет их различать, фишка в том, что других поглощенных ячеек в Range уже не существует как бы


А что, убрать объединение ячеек нельзя? или тебе надо просто выплюнуть массив данных на лист и ты даже не представляешь что там за лист, какой у него формат...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.