Страницы: 1
RSS
Длинные числа: ввод номера банковской карты
 
Я знаю, что тема миллион раз поднималась, но ответе не нашёл.
Нам дано число (номер банковской карты) 1234567890123456, естественно ексель заменяет последний символ на 0. Надо сделать так, чтобы это число автоматически(!) представлялось в виде четырех групп символов 1234 5678 9012 3456. Да я знаю, что можно использовать текстовый формат, но тогда надо будет самому вводить пробелы, а это нельзя делать.

Вопрос:
Как сделать так, чтобы оно разбивалось на группы (да я знаю про формат 0000\ 0000\ 0000\ 0000)?

Один вопрос - одна тема. Лишнее удалено [МОДЕРАТОР]
 
Файл-пример в студию, в котором Как есть - Как надо
Цитата
VPupa написал:
2) Если использовать формулу, то как сделать так, чтобы в той ячейке, в которую вы вводите, изменялось значение, т.е. ввёл в ячейку и в ней же поменялось?
Непонятно. Вы хотите одновременно иметь в ячейке И формулу И значение? Так не получиться. Тут макрос Вам поможет
Согласие есть продукт при полном непротивлении сторон
 
Кнопка цитирования не для ответа [МОДЕРАТОР]

вот я хотел бы через формат, но не знаю как.
Да не файла, вот просто вводишь в ячейку 16-значное число, а получаешь 4 группы по 4 знака
 
В модуль листа. Макрос применим к диапазону A1:A10
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1:A10")) Is Nothing And Target.Count = 1 Then
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    Target.NumberFormat = "@"
    If Len(Target) = 16 Then
        Target = Left(Target, 4) & " " & _
                Mid(Target, 5, 4) & " " & _
                Mid(Target, 9, 4) & " " & _
                Right(Target, 4)
    Else
        MsgBox "Введено менее 16-ти цифр"
    End If
End If
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
Согласие есть продукт при полном непротивлении сторон
 
Доброе время суток
Цитата
VPupa написал:
вводишь в ячейку 16-значное число,
Числа в Excel представлены типом данных Double, который может содержать только 15 значащих цифр. Поэтому о вводе 16, 20 значных чисел с сохранением всех значащих цифр - можно забыть. Ввести можно только как текст: либо начиная ввод цифр числа с ', либо установив формат ячейки "Текстовый".
В справке по форматированию отсутствует какое-либо описание - как разбить введённый текст на группы символов. Хотя кто его знает, может и что-то существует такое, что если вводим в ячейку
abcdefghijklmnoprstu
то после применения форматирования можно будет получить
abcd efgh ijkl mnop rstu
Забег по интернету не дал ничего по данному вопросу.
Цитата
Sanja написал:
В модуль листа.
Коллега, а чем поможет? 16 цифра то всё равно потеряется, если не установлен формат Текстовый
 
А можно как-нибудь сделать так, чтобы первое число было статичным, а остальные менялись. Я примерно представляю, если первое число например у всех 1, то надо формат сделать 1000\ 0000\ 0000\ 0000. но тут мы получается вводим 15 символов, а как сделать так, чтобы мы вводили 16, но первое заменялось
 
Цитата
VPupa написал: надо... вводить пробелы, а это нельзя делать
Почему нельзя? Нет, понятно, что данные для дальнейшего использования должны быть без пробелов. Но тут или число с требуемым форматом (не получится), или текст, разделенный пробелами, с последующим обратным преобразованием.
Вариант: делим на две ячейки.
 
Цитата
VPupa написал:
что можно использовать текстовый формат, но тогда надо будет самому вводить пробелы, а это нельзя делать
"я не знаю что потом делать с этими пробелами" и "этого нельзя делать" - это довольно разные понятия
делать можно ВСЕ, что позволяет корректно хранить данные и показать их пользователю так, как ему нужно (привычно) видеть
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
Страницы: 1
Наверх