Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: сортировка переменных типа Variant Добавлено: 03.04.09 13:01  

Автор вопроса:  ilang-ilang | ICQ: 355115304 
подскажите плиз:
имеется ListBox в котором содержится список (1458, 4789, 1458А, 1478Б и т.д.). как отсортировать элементы списка. обычные алгритмы сортировки просто расбрасывают элементы по списку...

Ответить

  Ответы Всего ответов: 9  

Номер ответа: 1
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #1
Добавлено: 03.04.09 13:53
Используй не массив вариант, а массив строк. Если без Variant не обойтись - явно преобразуй элементы массива в строки. А вообще-то, у ListBox есть встроенная возможность сортировки данных.

Ответить

Номер ответа: 2
Автор ответа:
 ilang-ilang



ICQ: 355115304 

Вопросов: 5
Ответов: 16
 Профиль | | #2 Добавлено: 06.04.09 10:14
а как ее подключить? я читала про нее, но наверное у меня старый вба((, свойства sorted у listbox'а нету((

Ответить

Номер ответа: 3
Автор ответа:
 ilang-ilang



ICQ: 355115304 

Вопросов: 5
Ответов: 16
 Профиль | | #3 Добавлено: 06.04.09 11:53
все дело в том, что когда вба сравнивает строки для него значение 5 больше 10, т.е. числа в строке он сравнивает правильно, если они имеют одинаковое кол-во цифр: 005 < 010 и т.д... поэтому у меня после сортировки выдавало, что 58 > 1237... по-другому видимо нельзя, даже если подключить Sorted

Ответить

Номер ответа: 4
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #4
Добавлено: 06.04.09 15:35
Ну если у тебя в ListBox хранятся строковые представления чисел (а не строки, содержащие символи и числа), то все их можно отформатировать List1(i) = Format(CLng(List1(i),"000000";) и тогда числа все будут шестизначные (к примеру): 000005 и 000010 и сравниваться уже будут правильно.

Ответить

Номер ответа: 5
Автор ответа:
 ilang-ilang



ICQ: 355115304 

Вопросов: 5
Ответов: 16
 Профиль | | #5 Добавлено: 07.04.09 11:19
Type mismatch ((

вот именно, что у меня как раз-таки строки, содержащие символы и числа, правда с символами редко, но все же встречаются, т.е. 5, 57, 4589, 1456, 1456А, 147, 1256Б и т.д., причем таких значений может быть больше шестисот и сортировка вручную ужасно замедляет работу...(

Ответить

Номер ответа: 6
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #6
Добавлено: 07.04.09 12:03
Ну это.. там типа номеров групп что-ли? Если посчитать число знаков в каждой строке, а затем в начало каждой строки добавить пробелов столько, чтобы выровнять длину строк, а потом отсортировать содержимое строкового массива скажем обычным пузырьковым алгоритмом? Далее загрузить все это в ListBox.

Ответить

Номер ответа: 7
Автор ответа:
 ilang-ilang



ICQ: 355115304 

Вопросов: 5
Ответов: 16
 Профиль | | #7 Добавлено: 07.04.09 12:45
спасибо огромное конечно за предложенные варианты! просто дело в том, что когда элементов более тысячи (это не группы, а номера шкафов уличного освещения(но это не имеет значения)), а иногда и более двух тысяч, то это уж очень медленно - сначала в массив, потом выравнивание строк, потом метод пузырька... тем более что далее проводятся с этим списком преобразования, которые добавляют элементы из другого списка, которые тоже нужно поместить на свои места, а не просто в конец списка и опять придется проделывать сравнение и т.д... бр-р-р..

Ответить

Номер ответа: 8
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #8
Добавлено: 07.04.09 15:52
Да не стоит так бояться величины списка, не вам вручную делать, а компьютеру. Выравнивание строк - для более красивой сортировки, не хотите-не надо. Используйте ListView, он-то точно умеет сортировать элементы, очень удобно потом сочетать в нем и другие данные в табличном виде. Кстати, а где хранятся сами данные? Может их удобно будет разок отсортировать в источнике данных и потом повторять сортировку только по мере добавления новых элементов?

Ответить

Номер ответа: 9
Автор ответа:
 ilang-ilang



ICQ: 355115304 

Вопросов: 5
Ответов: 16
 Профиль | | #9 Добавлено: 08.04.09 11:59
впринципе неплохая идея с сортировкой в самом источнике, нужно будет попробовать. спасибо)

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам