Я понял суть пузырьковой сортировки, но я изо всех сил пытаюсь найти способ реализовать "string 1"> "String 2".Я начну с описания своей рабочей книги.
Моя рабочая книга - это общий файл excel, используемый для отслеживания повседневной работы каждого проекта.Каждый день в полдень рабочая книга будет добавлять новый столбец с датой дней в столбец G. Из-за этого нет определенного правильного конца рабочей книги, поскольку он добавляет один столбец каждый день.Строки с 1 по 11 замораживаются и заполняются информацией, не относящейся к проекту (например, легенда, доска объявлений, кнопки для других макросов, заголовки столбцов)
Каждый проект в книге занимает три строки (например, строки 12-14 - первый перечисленный проект, строки 15-17 - второй перечисленный проект).Столбец А содержит строки «Статус», «Дата начала» и «Дата окончания».Моя цель - отсортировать проекты по статусу.В ячейке состояния есть раскрывающийся список с шестью различными вариантами: «R» на ходу, «S» для настройки »,« H »для удержания,« P »для отчета,« U »для предстоящего и« C »для завершения.Это также порядок, по которому я надеюсь отсортировать проекты.
Я нашел версию пузырьковой сортировки, которую планирую внедрить здесь .Подпункт из этого поста:
'============================================================================
'- BUBBLE SORT EXAMPLE : 3 NUMBERS (ASCENDING)
'- The method is to use a "pointer" and check its current position in the array.
'- If the current number is more than the next then switch their positions in the array.
'- If a position is changed then set a marker so the pointer goes through again.
'- The sort is complete when the pointer has gone through the array without change.
'- Brian Baulsom October 2008
'=============================================================================
Sub SORT_()
Dim MyNumbers(3)
Dim Pointer As Integer
Dim Changed As Boolean
Dim MyTemp
'-------------------------------------------------------------------------
MyNumbers(1) = 30
MyNumbers(2) = 20
MyNumbers(3) = 10
'-------------------------------------------------------------------------
Do
Changed = False
For Pointer = 1 To 3 - 1
If MyNumbers(Pointer) > MyNumbers(Pointer + 1) Then
MyTemp = MyNumbers(Pointer)
MyNumbers(Pointer) = MyNumbers(Pointer + 1)
MyNumbers(Pointer + 1) = MyTemp
Changed = True
End If
Next
Loop While Changed = True
'-------------------------------------------------------------------------
MsgBox (MyNumbers(1) & vbCr & MyNumbers(2) & vbCr & MyNumbers(3) & vbCr)
End Sub
'============================================================================
С этим я планирую изменить способ изменения отсортированного номера вместо вырезания и вставки.
Я знаю, что не могу просто поставить If "P ">" C "без этого выкидывает ошибки.Итак, где я сейчас нахожусь - выясняю, как дать каждому из значений строк, которые я могу отсортировать, пока (желательно) только имея один цикл IF.
Сохраняются ли числа как MyNumbers (1), MyNumbers(2) сортировка по числовому индексу или .Value?Если он сортируется по индексу, тогда не должно быть проблем с созданием:
MyNumbers(1) = "R"
MyNumbers(2) = "S"
MyNumbers(3) = "H"
MyNumbers(4) = "P"
MyNumbers(5) = "U"
MyNumbers(6) = "C"
, но я все еще незнаком с VBA, чтобы понять это легко.