在VBA中使用Excel的比较运算符?

时间:2014-08-12 22:18:52

标签: excel vba excel-vba

我正在试图找出如何使用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使用的比较运算符来获得此结果?或者是否有必要为此创建自己的函数?

1 个答案:

答案 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