Страницы: 1
RSS
Замена числен по порядковому номеру из таблицы соответствий
 
Добрый день! Помогите,пожалуйста, написать макрос или формулами авто нормализатор номера мобильного телефона

Например у нас есть номер 93170639502 - это шифрованный номер телефона, и если его расшифровать по приложенной таблице то мы получим - 89255908687.

Надо сделать так же в экселе, макросом или формулами, допустим я вставляю телефон в определенную ячейку, а по кнопке или автоматически он выдает правильный.

Сам к сожалению не осилил, искал по форуму по ключему слову "замена чисел" но разобраться не смог. для меня сложно
Изменено: Baristan - 27.01.2021 14:54:51
 
Baristan, что-то не понятна логика) (мне)
Не бойтесь совершенства. Вам его не достичь.
 
Давайте я поясню получше.

у нас есть входящее число 93170639502 - которое надо расшифровать в соответствии с таблицей. Результат этого расшифрования этого числа является этот моб.телефон - 89255908687

Для этого подробнее поясню как пользоваться таблицей соответствий

Входящее число разбиваемые на порядковые

1 2 3 4 5 6 7 8 9 10 11
9 3 1 7 0 6 3 9 5  0    2

из таблицы видим что первое число 9 (порядковый номер 1) - соответствует числу 8
                                     второе число 3 (порядковый номер 2) - соответствует число 9 (константа (нет в таблице))
                                     третье число 1 (порядковый номер 3) - соответствует числу 2 (это цифра в скобке, в столбце 3 таблицы)
и так далее
 
Цитата
Baristan написал:
первое число 9 (порядковый номер 1) - соответствует числу 8
понятно что первый порядковый номер, но почему числу 8 ? а не другому или так же константа как и 2 номер по порядку?
навскидку - выделяете нужный диапазон зашифрованных телефонов и запускаем макрос (нажимаем кнопку).
Код
Sub mrshkei()
Dim i As Long, rng As Range, col As Range, rr As Range, x As String
Set rng = Selection
For Each cell In rng
    For i = 1 To Len(cell)
    If Len(cell) = 11 Then
    If i = 1 Then
        x = 8
    ElseIf i = 2 Then
        x = x & "9"
    Else
        Set col = Worksheets("Соответствия").Rows(1).Find(i, LookAt:=xlWhole)
        Set rr = Worksheets("Соответствия").Columns(col.Column).Find(Mid(cell, i, 1), LookAt:=xlWhole)
        x = x & rr.Offset(0, 1)
    End If
    End If
    Next i
    cell.Offset(0, 2) = x
    x = ""
Next cell
End Sub
Изменено: Mershik - 27.01.2021 15:57:40
Не бойтесь совершенства. Вам его не достичь.
 
Пишет ошибку что subscript of range а в дебаге останавливается на строке
Код
 Set col = Worksheets("Соответствия").Rows(1).Find(i, LookAt:=xlWhole)

8 - это константа, так же как порядковый 2
 
Baristan, в приложенном файле выдает ошибку??
на всякий случай
Цитата
выделяете нужный диапазон зашифрованных телефонов и запускаем макрос (нажимаем кнопку).
Изменено: Mershik - 27.01.2021 16:49:07
Не бойтесь совершенства. Вам его не достичь.
 
спасибо! работает! оказалось какая проблема у меня с кодировкой, вместо "соответствия" какие то каракули, переименовал в английски всё работает ) большое спасибо!
Страницы: 1
Наверх