VBA (Excel) числа в качестве сравнения строк - PullRequest
0 голосов
/ 03 марта 2019

Как сравнить числа в виде строки?Я хочу сравнить f.ex.2 и 10. Когда я сортирую их в Excel в порядке возрастания 2, до 10, но когда я сравниваю в VBA, эти два 10, кажется, меньше, чем 2. Я использую функцию strcomp.Мне нужно сравнить их как строки, потому что это часть большой программы, которая ищет идентичные строки в столбцах Excel.Строки могут быть обычными строками, числами и числами в формате «12-131xxx».

1 Ответ

0 голосов
/ 04 марта 2019

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...