Это простая задача:
- Определение массива с вашим пользовательским порядком
- На основе этого массива выполните сравнение: найдите индексы букв и верните разницу этих индексов, а затем, еслирезультат равен> 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