VBA Excel - проверка на нулевые цифры до и после определённых цифр числа
Возьмём число в пределах от 1 до 1 000 000 000 000 000, где жирным шрифтом для примера выделен класс разрядов числа, который будем проверять. Необходимо проверить условие, при котором классы до него (тысячи и единицы) являются пустыми. Отдельно необходимо проверить условие, при котором пустыми являются классы после выделенного (миллиарды, триллионы и квадриллионы). Если первое условие истинно, а второе нет, результат должен быть истинным, в противном случае ложным. Проблема в том, что у меня не получается сделать цикл этого кода для всех классов разрядов. Число мы поделили на классы примерно вот так:
For i1 = 1 To 6 'i1 - номер класса разрядов справа налево
x = Fix(x) / 1000 'x - исходное число
y(i1) = (x - Fix(x)) * 1000 'y(i1) - группа цифр в каждом классе
Next
Классы поделили на разряды вот так:
For i2 = 1 To 6 'i2 - номер класса разрядов справа налево
y1 = y(i2) Mod 10 'y1 - цифра разряда сотен каждого класса
y2 = (y(i2) - y1) / 10 Mod 10 'y2 - цифра разряда десятков каждого класса
y3 = y(i2) \ 100 'y3 - цифра разряда единиц каждого класса
Next
На примере числа 1 235 000 687 000 000 должно получиться вот это:
fffttt
На примере числа 225 485:
ffffft
На примере числа 200 000:
ffffft
и т. д.
Ответы (1 шт):
Sub test()
Const x As Double = 1234567
Debug.Print fCheckClasses(x)
End Sub
Function fCheckClasses(x As Double) As String
Dim i As Long
For i = 3 To Len(x & "") Step 3
If Int(x Mod 10 ^ i) > 0 Then Exit For
Next i
If i >= Len(x & "") Then i = i - 3
i = i / 3
fCheckClasses = Left$("ffffff", 6 - i) & Left$("ttttt", i)
End Function
Может, достаточно определения i и не нужно String рисовать?