我正在试图找出如何使用Excel用于排序混合字母数字值的相同比较运算符,如下所示:
0
9
34
51
123abc
15
a
a1b23c
i
z
34ui
10
d
1
12
对此进行排序时,结果如下:
0
1
9
10
12
15
34
51
123abc
34ui
a
a1b23c
d
i
z
是否可以使用Excel使用的比较运算符来获得此结果?或者是否有必要为此创建自己的函数?
答案 0 :(得分:1)
我只是继续创建一个比较函数,其返回值与StrComp()
相同,因为它似乎还没有。
Function ExcelCompare(ByVal str1 As String, ByVal str2) As Integer
Dim isnum1 As Boolean
Dim isnum2 As Boolean
isnum1 = IsNumeric(str1)
isnum2 = IsNumeric(str2)
ExcelCompare = StrComp(str1, str2)
If isnum1 And Not isnum2 Then
ExcelCompare = -1
ElseIf Not isnum1 And isnum2 Then
ExcelCompare = 1
ElseIf isnum1 And isnum2 Then
Dim num1 As Double
Dim num2 As Double
num1 = CDbl(str1)
num2 = CDbl(str2)
If num1 = num2 Then
ExcelCompare = 0
ElseIf num1 < num2 Then
ExcelCompare = -1
Else
ExcelCompare = 1
End If
End If
End Function