-2

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

4

1 回答 1

0

Mnich,使用StrCompvbBinaryComparevbTextCompare将为您提供当前获得的回报。当 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

结束功能

于 2019-03-04T04:13:22.580 回答