|
Вставить данные из массива на лист Excel
|
|||
---|---|---|---|
#18+
... понимать как "затем произвел сданными к-л действия" ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2009, 17:58 |
|
Вставить данные из массива на лист Excel
|
|||
---|---|---|---|
#18+
Экий Вы задорный. Завидно просто. По-порядку. Вначале Вы "наехали" на меня с этим: _slan_ Папа Игорь, ваше утверждение, что обращение к Cells может быть быстрее обращения к массиву мягко говоря не совсем верно.. Где я это утверждал не вижу. Возможно вы неправильно поняли вот это: Папа ИгорьТестируйте. Но имейте ввиду, что Range - "родной" объект для объектной модели Excel, а массив - это структура данных для VBA. но это Ваши проблемы. И затем разразились доказательствами того, что обращение к данным массива быстрее обращения через объекты. Уважаемый, это и ежу понятно. Мы ведь обращаемся к разным вещам. И организация доступа к ним в памяти различаются. Мой тест был направлен на Ваше: _slan_ просто есть и другие способы обработки диапазонов - встроенные в иксель методы и свойства, они предпочтительнее, если надо отражать данные обратно на листе, чтобы не тратить время на чтение в массив и обратно. да и то не всегда .. Тест показал, что "...время на чтение в массив и обратно..." всегда больше. О переводе документации умолчу - здесь Вы не спорите. Ваши рассуждения о "чистых" и "не чистых" массивах, тоже оставим без внимания. Вашу приверженность неявным преобразованиям оставляю за Вами, грабли, на которые Вы наступите в связи с этим, еще впереди. Желаю Вам всяческих успехов (без иронии). ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2009, 20:00 |
|
Вставить данные из массива на лист Excel
|
|||
---|---|---|---|
#18+
Папа ИгорьТест показал, что "...время на чтение в массив и обратно..." всегда больше. Надо быть честным перед собой. Здесь я был НЕ ПРАВ . ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2009, 19:40 |
|
Вставить данные из массива на лист Excel
|
|||
---|---|---|---|
#18+
ешкин кот! :) жалко, что не хотите соревноваться. вот это было бы бесспорно. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2009, 20:05 |
|
Вставить данные из массива на лист Excel
|
|||
---|---|---|---|
#18+
_slan_...жалко, что не хотите соревноваться... А мой бизнес тануть кого попросим? Не до олимпиад мне нынче. Сейчас вот температура, а вынужден составлять планы для команды. И болеть некогда. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2009, 20:38 |
|
Вставить данные из массива на лист Excel
|
|||
---|---|---|---|
#18+
Дуэль. - Ваш выбор: сабля или пистолет? - Сабля - Хорошо, тогда я выбираю пистолет ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2009, 22:03 |
|
Вставить данные из массива на лист Excel
|
|||
---|---|---|---|
#18+
ZVI, или саблю, но с 20 шагов :) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2009, 11:06 |
|
Вставить данные из массива на лист Excel
|
|||
---|---|---|---|
#18+
_slan_, кстати, ZVI, не прокомментируете различия в коде? это работает: Sub d() ReDim arr(1 To 5, 1 To 1), arr2(1 To 5) arr = Range("a1:a2").Value arr2 = arr End Sub а это нет: Sub d() Dim arr(1 to 2,1 to 1) arr = Range("a1:a2").Value End Sub ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2009, 11:09 |
|
Вставить данные из массива на лист Excel
|
|||
---|---|---|---|
#18+
Для массива фиксированного размера отводится определенный неперемещаемый фрагмент памяти. По определению, изменение размера такого массива недопустимо. Динамический массив при переопределении его размера (ReDim) размещается в другом участке памяти (на это кстати требуется доп.время, чтобы найти свободный участок памяти требуемого размера и скопировать). В этом, собственно, и разница. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
Приведу пример заполнения списка ListBox или ComboBox без тормознутого цикла с Add Данный вариант не работает: Код: plaintext 1. 2. 3.
А этот вариант с дополнительной переменной arr работает: Код: plaintext 1. 2. 3. 4. 5.
Что касается, квадратных скобок в [A1:A100], то это просто другая форма записи метода Evaluate(). Т.е. выражения arr = Sheets(1).[A1:A100] и arr = Sheets(1).Evaluate("A1:A100") равнозначны. В определенных ситуациях я использую и [A1:A100], когда требуется наглядность, и Range(“A1:A100”), когда требуется скорость. Не помню, чтобы когда-либо наступал при этом на грабли :) В общем случае, конечно, лучше использовать явные преобразования, а в VB.NET в С++ без этого просто ничего не получится. Но как говорил поручик Ржевский, случаи бывают разные ;) Иногда, например, для совместимости с MS Excel97 и с MAC Excel приходится специально закладываться на неявные преобразования типов. Дискутировать по этому поводу ни с кем не хочу, т.к. у каждого свой опыт, предпочтения и грабли :) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2009, 19:13 |
|
Вставить данные из массива на лист Excel
|
|||
---|---|---|---|
#18+
ZVI, спасибо, весьма популярно :) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2009, 12:55 |
|
Вставить данные из массива на лист Excel
|
|||
---|---|---|---|
#18+
По теме ссылка - Перенос двумерного массива на лист Excel http://excelvba.ru/code/Array2worksheet Функция Array2worksheet позволяет быстро сформировать лист на основании данных из двумерного массива Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27.
Несколько модернизированный вариант функции - вставку на лист можно начинать с любой выбранной ячейки: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.04.2015, 13:40 |
|
|
start [/forum/topic.php?fid=61&msg=35892953&tid=2173548]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
30ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 131ms |
0 / 0 |