У меня проблема, когда я пытаюсь сравнить значения, которые могут быть буквенно-цифровыми, только числовыми или только буквенными.VBA Больше, чем функция не работает
Код первоначально работал отлично для сравнения чего-либо внутри той же группы 100s (IE 1-99 с алфавитными компонентами). Однако, когда я включил в него 100+, он работал неправильно.
Текущая часть кода гласит:
For j = 1 To thislength
If lennew < j Then
enteredval = Left("100A", lennew)
ElseIf lennew >= j Then
enteredval = Left("100A", j)
End If
If lenold < j Then
cellval = Left("67", lenold)
ElseIf lenold >= j Then
cellval = Left("67", j)
End If
'issue occurs here
If enteredval >= cellval Then
newrow = newrow+1
End If
Next j
Проблема возникает в последнем if
заявлении. Когда велосипед через 100 больше 67, но все же перескакивает. Я попытался объявить их как строки (выше этой части кода), чтобы увидеть, поможет ли это, но это не так.
То, что я пытаюсь выполнить, - это отсортировать кучу строк и найти, куда он должен идти. IE 100A должен идти от 100 до 100B.
Извините, lennew=len("100A")
и lennold=len("67")
. И thislength=4
или что-то большее из двух длин.
Вы хотите отсортировать числовую часть численно, но если они равны, отсортируйте баланс в алфавитном порядке, исправьте? –
Да. Если нет лучшего способа сделать это. Я просто хочу, чтобы он появился. 69,69A, 69B, 70A, 99A, 100,100A. (или любое изменение чисел и букв). Проблема, с которой я столкнулся, заключается в том, что 69 для первого маленького бита больше 100, но каким-то образом код не узнает его сейчас, поскольку он действительно больше. –
Вам нужно будет отнести числовую часть к числовым типам, прежде чем использовать сравнения акций на них. См. [Операторы сравнения] (http://stackoverflow.com/documentation/vba/5813/operators/20479/comparison-operators#t=201702151525369696781) в документации. – Comintern