Выборочная сортировка в уникальном алфавитном порядке - PullRequest
0 голосов
/ 08 ноября 2019

Я пытаюсь выполнить пользовательскую сортировку в уникальном алфавитном порядке, чтобы быть точным в следующем порядке. Решение VBA является предпочтительным.

A, P, R, C, D, E, F, G, H, I, J, K, L, M, O, Q, S, T, U, V, W, X, Y, Z, B, N

Спасибо Suji

1 Ответ

1 голос
/ 08 ноября 2019

Это простая задача:

  1. Определение массива с вашим пользовательским порядком
  2. На основе этого массива выполните сравнение: найдите индексы букв и верните разницу этих индексов, а затем, еслирезультат равен> 0, затем второй параметр больше, <0 - первый больше, = 0 - оба равны. </li>

См. код ниже:

Option Explicit

Sub CustomOrder()
    MsgBox CustomComparer("Z", "B") 'shows 1, so B is greater
End Sub

Function CustomComparer(str1 As String, str2 As String) As Long
    Dim orderArray As Variant
    orderArray = Array("A", "P", "R", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "O", "Q", "S", "T", "U", "V", "W", "X", "Y", "Z", "B", "N")

    Dim isFirstFound As Boolean, isSecondfound As Boolean, i As Long, firstIndex As Long, secondIndex As Long

    For i = LBound(orderArray) To UBound(orderArray)
        If str1 = orderArray(i) Then
            firstIndex = i
            isFirstFound = True
        End If
        If str2 = orderArray(i) Then
            secondIndex = i
            isSecondfound = True
        End If
        If isFirstFound And isSecondfound Then Exit For
    Next

    CustomComparer = secondIndex - firstIndex
End Function
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...