Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.10.2013, 14:40   #1
Скрипт
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 776
По умолчанию Сортировка как в Windows-проводнике

Не появилось ничего нового по этому вопросу?

В чём сложность и почему нельзя воспользоваться Excel-средствами для сортировки. Сложность в таких именах:
1_Имя файла
2_Имя файла
10_Имя файла

Еxсel вот такой отсортирует:
1_Имя файла
10_Имя файла
2_Имя файла

Никакой библиотеки не появилось для такой сортировки?
Потому что я сам вряд ли смогу сделать такую сортировку.
Скрипт вне форума Ответить с цитированием
Старый 29.10.2013, 15:03   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Добавить ведущие нули, сортировать.
Можно добавить в параллельном массиве (или столбце), сортировать по нему.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 29.10.2013, 15:06   #3
Скрипт
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 776
По умолчанию

Hugo121, сортировка - это очень сложный код. Такой код могут делать только профессиональные программисты. Я не профессиональный программист, поэтому даже не буду пытаться делать такой код.

Хотел бы готовое что-нибудь. Может появилось.
Скрипт вне форума Ответить с цитированием
Старый 29.10.2013, 15:14   #4
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Например так.
Если учитывать цифры в нутри,то немного сложнее будет
Код:
Sub MMM()
    Dim A As Collection
    Set A = New Collection
    A.Add "1_Имя файла"
    A.Add "10_Имя файла"
    A.Add "2_Имя файла"
    Set A = Sort(A)
End Sub

Public Function Sort(ByRef A As Collection) As Collection
    Set b = New Collection
    ReDim x(1 To A.Count, 1 To 2)
    For n = 1 To A.Count
        x(n, 1) = Val(A(n))
        x(n, 2) = n
    Next
    BubbleSort x
    For n = 1 To A.Count
        b.Add A(x(n, 2))
    Next
    Set Sort = b
End Function
Public Sub BubbleSort(ByRef List)

    Dim First As Integer, Last As Integer
    Dim i As Integer, j As Integer
    Dim Temp As Integer
    Dim Temp1 As Integer, Temp2 As Integer
    First = LBound(List)
    Last = UBound(List)
    For i = First To Last - 1
        For j = i + 1 To Last
            If List(i, 1) > List(j, 1) Then
                Temp = List(j, 1)
                Temp1 = List(j, 2)
                List(j, 1) = List(i, 1)
                List(j, 2) = List(i, 2)
                List(i, 1) = Temp
                List(i, 2) = Temp1
            End If
        Next j
    Next i
End Sub
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 29.10.2013, 15:17   #5
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Скрипт, Вы думаете Сергей этот код только что сейчас для Вас написал?
Т.е. это к тому, что таких готовых кодов в сети / в загашниках полно, нужно только найти и чуть подправить под задачу

Сергей - или таки написал всё сейчас?
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 29.10.2013, 15:19   #6
Скрипт
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 776
По умолчанию

doober, а какой там принцип сортировки?

Я так понял, что в Windows-проводнике различные фрагменты сортируются по разному: если число, то по числовому принципу, если текст, то по текстовому.

Windows-проводник только первые фрагменты принимает за числа, а всё что внутри находится, то считается уже текстом, даже если число или как там?
Скрипт вне форума Ответить с цитированием
Старый 29.10.2013, 15:22   #7
Скрипт
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 776
По умолчанию

Hugo121, чтобы использовать чужой код, который не известно кем написано, нужно проанализировать сначала код. Вряд ли я смогу осознать код по сортировке.

Я бы хотел средство от известных организаций, например, "Microsoft".

Я знаю только сортировку пузырьком.
Скрипт вне форума Ответить с цитированием
Старый 29.10.2013, 15:25   #8
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Игорь,писал сейчас,но брал из загашника BubbleSort.
Пользуюсь SmartIndent и складываю туда полезные решения

BubbleSort и есть сортировка пузырьком
Изображения
Тип файла: jpg Загашник.jpg (56.2 Кб, 77 просмотров)
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 29.10.2013, 15:28   #9
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Хотя как-то сложно, я даже с ходу не могу смысл уловить...
Я предполагал так - загнать список в двумерный массив. Во второй столбец или эти номера в голом виде как числа, или с ведущими нулями как строки (смотря что там за данные, что там за имена файлов, могут ли числа/имена повторяться и т.д.).
Затем этот двумерный сортируем любым готовым кодом, хоть тем же пузырьком из примера Сергея.
Затем берём нужный отсортированный столбец.
Но удобнее сортировать по второму, тогда первый проще взять - можно его например на лист одним движением выгрузить. Т.е. пузырёк я бы перевернул
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 29.10.2013, 15:33   #10
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Не люблю с листами работать,мне так проще.
Смысл простой.
создаем массив полученое число с имени файла,порядковый номер файла в коллекции.
Сортируем двухмерный массив ,по второму столбцу(идекс в исходной коллекции) создаем новую.
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выделение строк таблицы как в проводнике виндовс. StIX-S JavaScript, Ajax 4 16.12.2012 22:32
Как узнать какая иконка отображается в проводнике? dolphin705 Общие вопросы Delphi 5 05.05.2012 20:47
создание подстроки как в проводнике Windows Danilka Общие вопросы Delphi 3 26.05.2010 18:55
Как через дельфи открыть папку в проводнике? t3ns0r Общие вопросы Delphi 6 28.03.2009 21:32
Дерево как в проводнике, реестре Valdis Общие вопросы Delphi 1 04.10.2007 00:02