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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.08.2009, 21:19   #1
bank_notes
Пользователь
 
Регистрация: 28.11.2007
Сообщений: 16
По умолчанию Сортировка

Подскажите пожалуйста как средствами VBA можно изменить порядок сортировки товара по коду. Пример:

16
17
11s
14a
14b
15a
18a
9s

Стандартные способы сортируют сначала только цифры затем цифры с буквами

16
17
11s
14a
14b
15a
18a
9s


А нужен следующий порядок:

9s
11s
14a
14b
15a
16
17
18a
bank_notes вне форума Ответить с цитированием
Старый 11.08.2009, 00:46   #2
ZORRO2005
Форумчанин
 
Аватар для ZORRO2005
 
Регистрация: 26.11.2006
Сообщений: 584
По умолчанию

С помощью пары дополнительных столбцов ("числа","буквы") можно без VBA.
Вложения
Тип файла: rar Сортировка.rar (4.3 Кб, 13 просмотров)

Последний раз редактировалось ZORRO2005; 11.08.2009 в 00:56.
ZORRO2005 вне форума Ответить с цитированием
Старый 11.08.2009, 04:55   #3
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Например, для столбца "A":
Код:
Sub Srt()
    Dim i As Long, j As Long, a(), b(), x
    b = Range([A1], Cells(Rows.Count, 1).End(xlUp)).Value: ReDim a(1 To UBound(b, 1), 1 To 1)
    For i = LBound(b, 1) To UBound(b, 1): a(i, 1) = Val(b(i, 1)): Next
    For i = LBound(a, 1) To UBound(a, 1) - 1
        For j = i + 1 To UBound(a, 1)
            If a(i, 1) > a(j, 1) Then
                x = a(i, 1): a(i, 1) = a(j, 1): a(j, 1) = x
                x = b(i, 1): b(i, 1) = b(j, 1): b(j, 1) = x
    End If: Next: Next
    Range([A1], Cells(UBound(b, 1), 1)).Value = b
End Sub
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 11.08.2009, 11:16   #4
bank_notes
Пользователь
 
Регистрация: 28.11.2007
Сообщений: 16
По умолчанию

Комедия: Хотел написать СПАСИБО! но вылезла табличко: "Ваше сообщение слишком короткое, нужно не менее десяти символов". Ну что ж тогда

БОЛЬШОЕ СПАСИБО!
bank_notes вне форума Ответить с цитированием
Старый 19.06.2010, 06:32   #5
Ilya_L
Пользователь
 
Регистрация: 18.06.2010
Сообщений: 78
По умолчанию

Цитата:
Сообщение от SAS888 Посмотреть сообщение
Например, для столбца "A":
Код:
Sub Srt()
    Dim i As Long, j As Long, a(), b(), x
    b = Range([A1], Cells(Rows.Count, 1).End(xlUp)).Value: ReDim a(1 To UBound(b, 1), 1 To 1)
    For i = LBound(b, 1) To UBound(b, 1): a(i, 1) = Val(b(i, 1)): Next
    For i = LBound(a, 1) To UBound(a, 1) - 1
        For j = i + 1 To UBound(a, 1)
            If a(i, 1) > a(j, 1) Then
                x = a(i, 1): a(i, 1) = a(j, 1): a(j, 1) = x
                x = b(i, 1): b(i, 1) = b(j, 1): b(j, 1) = x
    End If: Next: Next
    Range([A1], Cells(UBound(b, 1), 1)).Value = b
End Sub
А как в нем сделать, чтобы сортировка началась по столбцу G со второй строки, чтобы сортировка работала как для одного столбца так и для A:G?
Ilya_L вне форума Ответить с цитированием
Старый 19.06.2010, 06:35   #6
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

См. ответ здесь.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка Шелла и Шейкер-сортировка AleksandrMakarov Паскаль, Turbo Pascal, PascalABC.NET 11 11.03.2012 12:18
Сортировка файлов в Explorer vs сортировка в Delphi mutabor Общие вопросы Delphi 11 04.09.2009 14:32
сортировка CrazyRabbit Паскаль, Turbo Pascal, PascalABC.NET 3 27.10.2008 21:04
1. Сортировка Шелла по убыванию 2. Сортировка вставками по убыванию Arkuz Помощь студентам 1 25.09.2007 17:16