|
|
|
Сортировка массива. Код - аналог Sort для Range на листе
|
|||
|---|---|---|---|
|
#18+
Есть функция Sort для Range на листе. Нужен аналог этой функции в VBA для сортировки двумерного массива переменных. Т.е. Сортировка по нескольким полям. При равных значениях порядок оставлять изначальным. И главное: сортировка массива должна быть такой же быстрой, как функция Sort. Может быть, через Recordset? Жаль, ничего в нём не понимаю. Записать из массива на лист, отсортировать, а затем обратно в массив - не подойдёт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2007, 17:55 |
|
||
|
Сортировка массива. Код - аналог Sort для Range на листе
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2007, 10:19 |
|
||
|
Сортировка массива. Код - аналог Sort для Range на листе
|
|||
|---|---|---|---|
|
#18+
Метод, наверное, для VB, а не для VBA. Возникает куча ошибок компиляции, начиная со строки Option Compare Database Все перечислять не буду. Далее ошибки типа "Переменная не определена", "Не описан пользовательский тип" и т.п. А имеющееся выражение "</font>" наверное просто опечатка. Особо не понятен список аргументов в строке SortArr myArr, Array(adInteger, adVarChar, adDouble, adCurrency, adDate), "6 ASC, 2 DESC" У кого-нибудь получилось запустить данный код? Надо что-то где-то как-то подключить из каких-то библиотек? Или всё дело в моём Excel 97? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2007, 13:09 |
|
||
|
Сортировка массива. Код - аналог Sort для Range на листе
|
|||
|---|---|---|---|
|
#18+
Дело в том что VBA есть не только в EXCEL. Тот пример для Access (хотя его тоже нодо править) Вот для EXCEL только в референс подключи Microsoft ActiveX DataObjects 2.X Library Код: 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. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2007, 13:46 |
|
||
|
Сортировка массива. Код - аналог Sort для Range на листе
|
|||
|---|---|---|---|
|
#18+
Я в свое время сам задался этим вопросом и пришел при помощи Уокенбаха и своих дополнительных изменений к следующим сортировкам: Код: 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. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2007, 15:39 |
|
||
|
Сортировка массива. Код - аналог Sort для Range на листе
|
|||
|---|---|---|---|
|
#18+
и еще Код: 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. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2007, 15:40 |
|
||
|
Сортировка массива. Код - аналог Sort для Range на листе
|
|||
|---|---|---|---|
|
#18+
А можно еще проще. создать новый лист в своей книге, скопировать свой массив на свежесозданый лист, отсортировать область, скопировать область в массив, убить лист. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2007, 20:31 |
|
||
|
Сортировка массива. Код - аналог Sort для Range на листе
|
|||
|---|---|---|---|
|
#18+
White Owl А можно еще проще. создать новый лист в своей книге, скопировать свой массив на свежесозданый лист, отсортировать область, скопировать область в массив, убить лист. Согласен, но в свое время мне приходилось сортировать массивы до 100000 строк в Excel2003. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2007, 23:14 |
|
||
|
Сортировка массива. Код - аналог Sort для Range на листе
|
|||
|---|---|---|---|
|
#18+
Chelovek Tapok White Owl А можно еще проще. создать новый лист в своей книге, скопировать свой массив на свежесозданый лист, отсортировать область, скопировать область в массив, убить лист.Согласен, но в свое время мне приходилось сортировать массивы до 100000 строк в Excel2003.хосссподи... ну зачем? зачем такие объемы обрабатывать в Экселе? Не мучайте животное, не предназначено оно для этого. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2007, 01:13 |
|
||
|
Сортировка массива. Код - аналог Sort для Range на листе
|
|||
|---|---|---|---|
|
#18+
В варианте vkodor на строке (примерно №39) Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2008, 19:09 |
|
||
|
Сортировка массива. Код - аналог Sort для Range на листе
|
|||
|---|---|---|---|
|
#18+
White Owl Не мучайте животное Присоединяюсь! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2008, 10:54 |
|
||
|
Сортировка массива. Код - аналог Sort для Range на листе
|
|||
|---|---|---|---|
|
#18+
"быстрая сортировка" от "Chelovek Tapok" работает, но пришлось переменные массива описать как Variant, т.к. как при String сортировка чисел была глючная. Сортировка более правильная, т.к. учитывает дефисы. Sort на листе их почему-то игнорирует. Описано в теме Сортировка (косяк) К сожалению, сам так и не разобрался, как сделать сортировку не по одному, а по нескольким столбцам. И ещё. Данный алгоритм есть аналог метода Sort на листе при равных значениях строк в массиве? Т.е., если попадаются одинаковые значения по сортируемому столбцу, то они не должны менять порядок между собой: то, что было первее, там и должно остаться. Жаль, по поводу ошибки в коде для сортировки через Recordset ответа так и нет.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2008, 23:00 |
|
||
|
Сортировка массива. Код - аналог Sort для Range на листе
|
|||
|---|---|---|---|
|
#18+
вопрос по сортировке рекордсетом до сих актуален......... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2011, 13:02 |
|
||
|
Сортировка массива. Код - аналог Sort для Range на листе
|
|||
|---|---|---|---|
|
#18+
tolikt, была похожая тема в ветке по VB. я там отвечал. по "результатам" ( в кавычках - так как результатов особенно не было) написал вот что: см влож. программа-пример использования находится там же: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2011, 14:33 |
|
||
|
|

start [/forum/topic.php?fid=61&msg=35234122&tid=2176815]: |
0ms |
get settings: |
9ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
186ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
62ms |
get tp. blocked users: |
2ms |
| others: | 251ms |
| total: | 550ms |

| 0 / 0 |
