VBA(excel)数字作为字符串比较

时间:2019-03-03 17:28:01

标签: excel vba

如何将数字比较为字符串? 我想比较f.ex。 2和10。当我在Excel中按升序对它们进行排序时,它们2在10之前,但是当我在VBA中比较时,这两个10似乎比2低。我正在使用strcomp函数。我需要将它们作为字符串进行比较,因为它是在excel列中搜索相同字符串的较大程序的一部分。字符串可以是普通字符串,数字和带有数字的字符串,例如“ 12-131xxx”。

1 个答案:

答案 0 :(得分:0)

Mnich和 StrComp vbBinaryCompare vbTextCompare 会为您提供当前的收益。当Excel对数字/整数进行排序时,它将按照您的期望进行排序,但是当将数字作为字符串进行排序时,它将使用文本比较。因此所有以1开头(甚至111)的数字都将排在2以下。如Comintern所述,您必须添加前导零才能避免这种情况。

或者,也许您在对字符串进行排名之前回答了一个数字比较,您可以尝试使用Function提取数字,然后权衡您的决定:

'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

结束功能