Страницы: 1
RSS
Как перенести в VBA длинное число?
 
Длинное число (идентификационный номер) не могу скопировать в макросе.
Сразу уточню, что метод Copy-Paste не подходит, т.к копирование идет путем формирования через формулу и ряд проверок.
Изменено: Marat Ta - 01.03.2021 18:20:16
 
думаю длинное число - это текст в VBA )
Для всех чисел, где больше 15 символов добавляйте апостроф перед числом.
Код
Cells(2, 3).Value = "'" & Cells(2, 1).Value
Изменено: New - 01.03.2021 18:24:50
 
А если в макросе я поставлю ваш вариант, но добавлю * на 2 и нажму кнопку.
Как быть с результами расчетов?
Изменено: Marat Ta - 01.03.2021 18:32:26
 
Добавить 1
Код
Function Plus1(cell As String)
   Plus1 = Left(cell, 10) & CDbl(Mid(cell, 11)) + 1
End Function
 
не надо производить математические операции с идентификационными номерами
 
Цитата
Marat Ta написал: Длинное число (идентификационный номер)
добавлю * на 2
С какого перепугу взбрело в голову производить математические операции с идентификационным кодом?
 
vikttur, там проводится ряд проверок с числом.
 
Вопросы по обработке - не эта тема
 
Ок. Тогда тема закрыта.
Kuzmich, New,  спасибо. Как варианты буду изучать.
 
довольно много стандартных данных, состоящих из множества цифр, содержат избыточную цифру для проверки контролной суммы:
№ банковских карт
№ Счетов в банке
ИНН
штрих коды
QR-коды
и пр.
это нужно для контроля правильности ввода такого номера оператором, система сверяет контрольное число по заранее заданному алгоритму и исключает механические ошибки операторотов
насколько мне известно ВСЕ алгоритмы делят число на цифры, выполняют с каждой отдельной цыфрой некоторые арифметические действия, сверяю результат с последней - совпало, значит все нормально)
в случае с ИНН12, там 2 контрольных цифры
странно, что такой цифры нет в № телефона(((
чтобы при пополнении в терминали не проверять 3 раза привильно-ли я набрас № телефона
Изменено: Ігор Гончаренко - 01.03.2021 19:30:19
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Игорь, это понятно. Но нет смысла в математических операциях над целым кодом.
 
Ігор Гончаренко, спасибо за обстоятельный обзор.
Но тема уже закрыта.
 
тема закрыта, когда в списке тем перед ней написано ЗАКРЫТО и тогда я не могу ничего в нее добавить
а вот так нужно поправить макрос tt)
Код
Sub tt()
  Worksheets(1).[c3].NumberFormat = "@"
  Cells(2, 3) = Cells(2, 1)
End Sub
Изменено: Ігор Гончаренко - 01.03.2021 19:35:08
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко, оригинально,  но не отличается от добавления "'" от New, в вашем неудобство - ячейка принимает текстовой формат. При изменение формата на Общий целостность "улетит".
Изменено: Marat Ta - 01.03.2021 21:09:17
 
К сожалению, Excel не воспринимает более 15 чисел в ячейке за число и все последующие числа (16-е, 17-е и т.д.). будут заменены на 0. Чтобы этого избежать приходится "переводить" число в текст - либо менять формат ячейки на текстовый, либо добавлять апостроф спереди. Такие ограничения/особенности Excel.
В вашем идентификационном номере 20 чисел - тут надо переводить в текст или последние 5 чисел будут нули
Изменено: New - 01.03.2021 21:09:33
 
Цитата
неудобство - ячейка принимает текстовой формат.
А Вам процентный нужен? :)

Цитата
При изменение формата на Общий целостность "улетит".
А при удалении апострофа что-куда улетит? Примените и одно, и другое. А еще защиту листа поставьте, чтобы не удалили данные или не дописали фигу посередине кода...
Вы как дите малое... Варианты! Тема для всех останется.

Мой вариант: сразу задать столбцу текстовый формат, еще до вставки данных.
 
Цитата
Marat Ta написал:
оригинально,  но не отличается от
вы задаете вопрос "как скопировать длинное число"
показываете макрос, который не справляется с выполнением этой задача
я показал вам как его поправить, чтобы увидеть в ячейке заветное длинное число
---------------------
все остальное не относится к поставленному вопросу
вопроос "как?"
ответ "а вот так"
вы получили желаемый результат, применив способ описанный в ответе?
а что за задачу вы решаете на самом деле НИКТО не знает, и чем вас не устраивает решение, НИКОМУ не интересно
зашли, задали вопрос, получили ответ, теперь (в след. теме) сосредоточьтесь на том, каккой же вопрос вас действительно интересовал?
сосредоточтесь и сформулируйте, но уже в следующей теме))
удачи!
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
Страницы: 1
Наверх