Mnich, с StrComp , vbBinaryCompare или vbTextCompare даст вам возврат, который вы получаете в настоящее время.Когда Excel сортирует числа / целые числа, он сортирует их так, как вы ожидаете, но при сортировке чисел в виде строк используется текстовое сравнение;так что все числа, начинающиеся с 1, даже 111, будут ранжироваться ниже, чем 2. Как упоминает Коминтерн , вы должны добавить лидирующие нули, чтобы избежать этого.
Или, возможно, вы ответили одним сравнением чисел, прежде чем ранжировать строки, вы можете попробовать функцию для извлечения чисел, а затем позволить этому взвешивать ваше решение:
'pass in array from main stuff
Function StackOverflow(arr())
Dim arr_NewStr() As String
Dim x As Integer
Dim i As Integer
ReDim arr_NewStr(1 To UBound(arr))
x = 1
For i = 1 To UBound(arr)
Do
If IsNumeric(Mid(arr(i), x, 1)) Then
arr_NewStr = arr_NewStr & Mid(arr(i), x, 1)
End If
x = x + 1
Loop Until x = Len(arr(i))
Next
'clean up
x = vbEmpty: i = vbEmpty
'pass somewhere, or make "arr" public
End Function