|
|
|
а как сортировать массивы в VBA ?
|
|||
|---|---|---|---|
|
#18+
вот собственно и весь вопрос.. ps наиболее быстро хочется.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2009, 11:35:52 |
|
||
|
а как сортировать массивы в VBA ?
|
|||
|---|---|---|---|
|
#18+
_slan_вот собственно и весь вопрос.. ps наиболее быстро хочется.. Так - же, как и в любом другом языке. Алгоритм сортировки и скорость оного зависят от того, что сортируем. Если сортировать массив из 10 чисел - тут и пузырьком пойдет. Если массив большой, но диапазон не велик - сортировка подсчетом. И так далее. Основные алгоритмы именно в VB реализации - есть в книге Гетса\Джилберта - Программирование VB\VBA - как то так, точно название не помню. Тут на сайте, в книгах, есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2009, 14:28:50 |
|
||
|
а как сортировать массивы в VBA ?
|
|||
|---|---|---|---|
|
#18+
Кинуть массив на лист и там отсортировать функцией экселя. Затем закинуть отсортированный диапазон обратно в массив. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2009, 14:40:14 |
|
||
|
а как сортировать массивы в VBA ?
|
|||
|---|---|---|---|
|
#18+
A-NikКинуть массив на лист и там отсортировать функцией экселя. Затем закинуть отсортированный диапазон обратно в массив. Как насчет массива из 500 000 элементов, например? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2009, 14:46:13 |
|
||
|
а как сортировать массивы в VBA ?
|
|||
|---|---|---|---|
|
#18+
В СУБД решается за секунду. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2009, 14:48:13 |
|
||
|
а как сортировать массивы в VBA ?
|
|||
|---|---|---|---|
|
#18+
SQL_LamerA-NikКинуть массив на лист и там отсортировать функцией экселя. Затем закинуть отсортированный диапазон обратно в массив. Как насчет массива из 500 000 элементов, например? использовать Офис 2007 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2009, 14:49:44 |
|
||
|
а как сортировать массивы в VBA ?
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2009, 14:55:46 |
|
||
|
а как сортировать массивы в VBA ?
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2009, 20:48:49 |
|
||
|
а как сортировать массивы в VBA ?
|
|||
|---|---|---|---|
|
#18+
SQL_Lamer, самому писать - эт понятно тогда, но эт же велосипед.. неужели ничего встроенного/готового нет? мож с dll.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2009, 20:51:18 |
|
||
|
а как сортировать массивы в VBA ?
|
|||
|---|---|---|---|
|
#18+
_slan_SQL_Lamer, самому писать - эт понятно тогда, но эт же велосипед.. неужели ничего встроенного/готового нет? мож с dll.. Прикольно :) Пошел на сайт мелкософт, что там про сортировки в VBA говорят, а там ту - же книжку советуют, что и я :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2009, 21:12:27 |
|
||
|
а как сортировать массивы в VBA ?
|
|||
|---|---|---|---|
|
#18+
A-NikSQL_LamerA-NikКинуть массив на лист и там отсортировать функцией экселя. Затем закинуть отсортированный диапазон обратно в массив. Как насчет массива из 500 000 элементов, например? использовать Офис 2007 А если это не excel, а word, или outlook? :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2009, 21:32:53 |
|
||
|
а как сортировать массивы в VBA ?
|
|||
|---|---|---|---|
|
#18+
Самый быстрый способ (применительно к большим наборам данных в Офисе) - выгрузить данные в файл, отсортировать его с помощью сторонней утилиты (лучше всего писаной на си или асме) и закачать обратно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2009, 03:43:19 |
|
||
|
а как сортировать массивы в VBA ?
|
|||
|---|---|---|---|
|
#18+
SQL_LamerA-NikSQL_LamerA-NikКинуть массив на лист и там отсортировать функцией экселя. Затем закинуть отсортированный диапазон обратно в массив. Как насчет массива из 500 000 элементов, например? использовать Офис 2007 А если это не excel, а word, или outlook? :))Ой сомневаюсь я, что кто-либо столкнётся с задачей сортировки 500 000 записей в ворде или аутлуке ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2009, 11:58:03 |
|
||
|
а как сортировать массивы в VBA ?
|
|||
|---|---|---|---|
|
#18+
AndreTMСамый быстрый способ (применительно к большим наборам данных в Офисе) - выгрузить данные в файл, отсортировать его с помощью сторонней утилиты (лучше всего писаной на си или асме) и закачать обратно... Выгружать куда - то данные, потом обратно... Только, чтоб отсортировать? Что за чепуха? Есть же в VBA возможность написать любую сортировку. VBA - вполне функцинальный инструмент для таких вещей. Если уж хочется использовать сторонние инструменты - можете reference на dll свою сделать. Только dll ваша должна иметь строгое имя и должна быть зарегана в гасе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2009, 15:28:13 |
|
||
|
а как сортировать массивы в VBA ?
|
|||
|---|---|---|---|
|
#18+
Удивляюсь, для чего люди СУБД придумывали? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2009, 17:42:07 |
|
||
|
а как сортировать массивы в VBA ?
|
|||
|---|---|---|---|
|
#18+
F, ну вот вы субд субд.. т.е. вы мне предлагаете к оффису еще и СУБД прикупить? да у меня и базы-то нет.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2009, 22:08:55 |
|
||
|
а как сортировать массивы в VBA ?
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2009, 05:49:17 |
|
||
|
а как сортировать массивы в VBA ?
|
|||
|---|---|---|---|
|
#18+
_slan_F, ну вот вы субд субд.. т.е. вы мне предлагаете к оффису еще и СУБД прикупить? да у меня и базы-то нет.. Надо задачи решать правильными средствами. СУБД есть бесплатные. И что-то мне подсказывает, что если у вас есть оффис, то там есть и Access. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2009, 10:31:03 |
|
||
|
а как сортировать массивы в VBA ?
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2009, 13:40:45 |
|
||
|
а как сортировать массивы в VBA ?
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2009, 13:41:11 |
|
||
|
а как сортировать массивы в VBA ?
|
|||
|---|---|---|---|
|
#18+
тынц ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2009, 15:32:24 |
|
||
|
а как сортировать массивы в VBA ?
|
|||
|---|---|---|---|
|
#18+
big-duke, уже нашли.. немножко доработали. http://www.planetaexcel.ru/forum.php?thread_id=7702 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2009, 19:10:16 |
|
||
|
а как сортировать массивы в VBA ?
|
|||
|---|---|---|---|
|
#18+
_slan_, вариант с рекордсетом я тоже нашел, но заставить работать пока не смог.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2009, 19:15:47 |
|
||
|
а как сортировать массивы в VBA ?
|
|||
|---|---|---|---|
|
#18+
F, фигню вы говорите.. зачем мне переходить в другую среду.. ни вообще, ни в частности не понимаю. больше с вами не разговариваю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2009, 19:18:29 |
|
||
|
а как сортировать массивы в VBA ?
|
|||
|---|---|---|---|
|
#18+
Инфо для советчиков обрабатывать Excel-данные с помощью СУДБ, в частности ADO : 1. Обработка открытых Excel-книг приводит к утечкам памяти, мною это проверено, а кто не верит читайте здесь: BUG Memory leak occurs when you query an open Excel worksheet by using ActiveX Data Objects Такая проблема относится и к оекомендованной здесь ссылке на Сортировка двухмерного массива с помощью ADO рекордсета Сохранять книгу для того, чтобы обработать, а затем открывать? Это - тормоз :) 2. Если в столбце(колонке) Excel-книги данные смешанных типов, то импортируются только данные одного их этих типов, а данные остальных типов игнорируются. Обычно определение типа данных производится по первым 8-ми строкам колонки (зависит от параметра в реестре, может быть от 1 до 16 или по всей колонке, но импортируются все равно данные только одного типа) Другими словами, совет обработать с помощью СУБД - тупиковый. Или предложите импортировать в MEMO-поля Access-a, там обрабатывать и возвращать в Excel? Ну, это совет для врагов разве что :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2009, 07:35:55 |
|
||
|
а как сортировать массивы в VBA ?
|
|||
|---|---|---|---|
|
#18+
ZVI А иде в предложенном примере (сортировка с помощью адо рекордсета) вы нашли запрос или вообще хоть какое нибудь пересечение с вашей ссылкой об утечках ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2009, 08:17:30 |
|
||
|
а как сортировать массивы в VBA ?
|
|||
|---|---|---|---|
|
#18+
RestavraciyaZVI А иде в предложенном примере (сортировка с помощью адо рекордсета) вы нашли запрос или вообще хоть какое нибудь пересечение с вашей ссылкой об утечках ? Ссылка Вами дана на код для Access-а, для которого то проблем никаких нет. В этом смысле все корректно. Утечки памяти возникнут при попытке обработки подобным способом (средствами ADO) открытых в Excel книг. В этом случае утечка образуется вот здесь (строка кода из приведенной ссылки): Dim rst As New ADODB.Recordset И даже Set rst = Nothing в конце кода не устраняет утечку памяти в этом случае (открытая книга в Excel + ADO). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2009, 09:02:35 |
|
||
|
а как сортировать массивы в VBA ?
|
|||
|---|---|---|---|
|
#18+
ZVIИнфо для советчиков обрабатывать Excel-данные с помощью СУДБ, в частности ADO ... ZVI Все это известно уже сто лет. Вам контрвопрос. А как вы собираетесь сортировать в массиве данные разных типов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2009, 10:33:17 |
|
||
|
а как сортировать массивы в VBA ?
|
|||
|---|---|---|---|
|
#18+
Меня убивает, например, такой способ решения элементарной проблемы сортировки , как подключение сторонней DLL. Тогда как в СУБД сортировка осуществляется или добавлением двух слов Order by в текст запроса, или включением нужного индекса. Многие задачи средствами СУБД решаются на несколько порядков проще, чем Экселем. Поэтому переход на СУБД почти всегда оправдан. P.S. Я никоим образом не против Excel! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2009, 10:39:56 |
|
||
|
а как сортировать массивы в VBA ?
|
|||
|---|---|---|---|
|
#18+
F ZVI Все это известно уже сто лет. То есть, Вы давно согласны, что СУБД не всегда приемлемо ;) FВам контрвопрос. А как вы собираетесь сортировать в массиве данные разных типов? Ссылку (planetaexcel) на программную VBA-сортировку Слэн уже давал. Там есть вариант и для сортировки разных типов данных аналогично тому, как это делает Excel: данные не исчезают, а только сортируются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2009, 12:14:30 |
|
||
|
а как сортировать массивы в VBA ?
|
|||
|---|---|---|---|
|
#18+
ещё вариант, использую в Excel в модуле1 Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Код: plaintext 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2009, 14:32:36 |
|
||
|
а как сортировать массивы в VBA ?
|
|||
|---|---|---|---|
|
#18+
Это похоже на пузырька. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2009, 14:53:10 |
|
||
|
а как сортировать массивы в VBA ?
|
|||
|---|---|---|---|
|
#18+
nporaMepЭто похоже на пузырька.точно, один в один (не изобритать же велосипед) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2009, 14:58:37 |
|
||
|
а как сортировать массивы в VBA ?
|
|||
|---|---|---|---|
|
#18+
пузырек плохо на больших массивах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2009, 15:10:01 |
|
||
|
а как сортировать массивы в VBA ?
|
|||
|---|---|---|---|
|
#18+
ZVIТо есть, Вы давно согласны, что СУБД не всегда приемлемо То, что вы имеете в виду, это и не СУБД, это запрос к таблице Excel, созданной не по правилам СУБД. Он и не должен работать. ZVI Ссылку (planetaexcel) на программную VBA-сортировку Слэн уже давал. Там есть вариант и для сортировки разных типов данных аналогично тому, как это делает Excel: данные не исчезают, а только сортируются. Вот в этом частном случае я с вами согласен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2009, 15:37:05 |
|
||
|
а как сортировать массивы в VBA ?
|
|||
|---|---|---|---|
|
#18+
nporaMepпузырек плохо на больших массивах.на очень больших не пробовал В моём случае около 3-ёх тысяч элементов. Пока всё устраивает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2009, 15:47:45 |
|
||
|
а как сортировать массивы в VBA ?
|
|||
|---|---|---|---|
|
#18+
klen_, Exchange = False из цикла хотя бы уберите :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2009, 15:55:17 |
|
||
|
а как сортировать массивы в VBA ?
|
|||
|---|---|---|---|
|
#18+
_slan_, да и переприсваивать массив в конце незачем, он же по умолчанию по ссылке.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2009, 15:57:36 |
|
||
|
а как сортировать массивы в VBA ?
|
|||
|---|---|---|---|
|
#18+
_slan_не согласен с вами, ни с тем ни с другим предложением ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2009, 12:49:53 |
|
||
|
а как сортировать массивы в VBA ?
|
|||
|---|---|---|---|
|
#18+
на счёт второго предложения, всё-таки под вопросом Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2009, 12:57:46 |
|
||
|
а как сортировать массивы в VBA ?
|
|||
|---|---|---|---|
|
#18+
Do Exchange = False надо поменять на Exchange = False Do ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2009, 14:27:52 |
|
||
|
а как сортировать массивы в VBA ?
|
|||
|---|---|---|---|
|
#18+
klen_на счёт второго предложения, всё-таки под вопросом Код: plaintext Да , про эту. с первой, согласен, я несколько поторопился :) но вообще обратите внимание - там нашелся довольно быстрый алгоритм, особенно после модернизации его ZVI ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2009, 14:51:10 |
|
||
|
а как сортировать массивы в VBA ?
|
|||
|---|---|---|---|
|
#18+
точнее про эти две: massiv2 = ArraySort(massiv1) - лучше просто ArraySort(massiv1) ArraySort = ARRAY_() - вообще удалить программа будет сортировать непосредственно во входящем массиве, если же его трогать не надо, то всегда можно переприсвоить, но пусть уж это будет на совести вызывающего ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2009, 14:59:12 |
|
||
|
а как сортировать массивы в VBA ?
|
|||
|---|---|---|---|
|
#18+
_slan_точнее про эти две: massiv2 = ArraySort(massiv1) - лучше просто ArraySort(massiv1) ArraySort = ARRAY_() - вообще удалить программа будет сортировать непосредственно во входящем массиве, если же его трогать не надо, то всегда можно переприсвоить, но пусть уж это будет на совести вызывающего Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2009, 15:49:24 |
|
||
|
а как сортировать массивы в VBA ?
|
|||
|---|---|---|---|
|
#18+
_slan_но вообще обратите внимание - там нашелся довольно быстрый алгоритм, особенно после модернизации его ZVIне дадите ссылочку, я никак не найду (пожалуйста) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2009, 15:59:36 |
|
||
|
а как сортировать массивы в VBA ?
|
|||
|---|---|---|---|
|
#18+
Klen, вот ссылка http://www.planetaexcel.ru/forum.php?thread_id=7702 ______________________________________________________________ Разрабатываю макросы под заказ. Email: MacrosForYou собака yandex точка ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2009, 12:04:44 |
|
||
|
|

start [/forum/topic.php?all=1&fid=61&tid=2179915]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
206ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
79ms |
get tp. blocked users: |
1ms |
| others: | 201ms |
| total: | 525ms |

| 0 / 0 |
