Заполнение числовой строки нулями до кратности 3 - PullRequest
0 голосов
/ 03 июля 2019

Я хотел бы иметь быстрый однострочный VBA-код для дополнения числа в строковой форме, чтобы длина всегда была кратна 3. Например:

«12» становится «012»

«1234» становится «001234»

«1234567» становится «001234567»

"12345678912345678" становится "012345678912345678"

и т. Д.

В числовой строке не будет ни дробных, ни десятичных точек, так что об этом не стоит беспокоиться.

Длина результирующей строки должна быть кратна 3, если добавить 0 слева.

Числовая строка должна оставаться строкой на протяжении всего кодирования и не должна преобразовываться в число с помощью числовой функции, такой как Val, поскольку исходная строка может быть очень длинной более 150 цифр, а числовая функция может обрезать или округлять номер и дать нежелательные результаты.

Я предложил следующее как возможное решение, проверив длину строки, но чувствую, что есть более эффективный способ сделать это в одном (1) операторе кодирования.

Result = String((3 - (Len(MyString) Mod 3)) Mod 3, "0") & MyString

1 Ответ

0 голосов
/ 04 июля 2019

После нескольких попыток и ваших идей, я придумал следующее, используя одну функцию Mod:

MyString = String((Len(MyString) * 2) Mod 3, "0") & MyString

В общем случае общая формула будет иметь вид:

MyString = String((Len(MyString) * (Multiples-1) ) Mod Multiples, "0") & MyString
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...