VBA (Excel) числа в качестве сравнения строк

Хотя стандарт C ++ не имеет такого требования, некоторым компиляторам требуется, чтобы все шаблоны функций и классов были доступны в каждой используемой системе переводов. Фактически для этих компиляторов тела шаблонных функций должны быть доступны в файле заголовка. Повторить: это означает, что эти компиляторы не позволят их определять в файлах без заголовка, таких как .cpp-файлы

Существует ключевое слово export , которое должно смягчать этот проблема, но он нигде не близок к тому, чтобы быть портативным.

-2
задан Łukasz Mnich 3 March 2019 в 17:28
поделиться

1 ответ

Мних, с помощью 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 [ 115]

0
ответ дан J VBA 3 March 2019 в 17:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: