Добрый день, помогите, пожалуйста, решить проблему, есть таблица (куча строк), в ней забиты номера в формате 79995556622, в некоторых ячейках по несколько номеров через запятую, где-то есть эл.почта, нужно привести номер телефона к формату 8-999-555-66-22, это реально сделать?
Добрый день, помогите, пожалуйста, решить проблему, есть таблица (куча строк), в ней забиты номера в формате 79995556622, в некоторых ячейках по несколько номеров через запятую, где-то есть эл.почта, нужно привести номер телефона к формату 8-999-555-66-22, это реально сделать?dashenka2237
Это для ячейки В1 например, и тащим вправо на 5-6 столбцов, сколько там максимум номеров может быть и вниз А вот как их до 7-999-999-99-99 переделать еще не придумал)))
Пока придумал как вытащить номера раздельно
Код
=ПСТР($A1;СТОЛБЕЦ($A$1)+13*(СТОЛБЕЦ(A1)-1);11)
Это для ячейки В1 например, и тащим вправо на 5-6 столбцов, сколько там максимум номеров может быть и вниз А вот как их до 7-999-999-99-99 переделать еще не придумал)))elovkov
dashenka2237, а в каком вообще виде нужно результат получить? В смысле - как оно все должно на листе располагаться? И что с почтой делать? И может ли там еще какая-то информация быть?
dashenka2237, а в каком вообще виде нужно результат получить? В смысле - как оно все должно на листе располагаться? И что с почтой делать? И может ли там еще какая-то информация быть?_Boroda_
Sub Макрос1() Dim arr1, arr2, n As Long, m As Integer arr1 = Range("A1:A" & Cells(Rows.Count, 1).End(xlUp).Row) For n = 1 To UBound(arr1) arr2 = Split(arr1(n, 1), ",") For m = 0 To UBound(arr2) If IsNumeric(Trim(arr2(m))) And Len(Trim(arr2(m))) = 11 Then If Left(Trim(arr2(m)), 1) = 7 Or Left(Trim(arr2(m)), 1) = 8 Then arr2(m) = Format(Mid(Trim(arr2(m)), 2), "8-@@@-@@@-@@-@@") End If End If arr1(n, 1) = Join(arr2, ", ") Next Next [c1].Resize(UBound(arr1), 1) = arr1 End Sub
[/vba]
[p.s.]Исправил код и файл
Наверное придется делать макросом [vba]
Код
Sub Макрос1() Dim arr1, arr2, n As Long, m As Integer arr1 = Range("A1:A" & Cells(Rows.Count, 1).End(xlUp).Row) For n = 1 To UBound(arr1) arr2 = Split(arr1(n, 1), ",") For m = 0 To UBound(arr2) If IsNumeric(Trim(arr2(m))) And Len(Trim(arr2(m))) = 11 Then If Left(Trim(arr2(m)), 1) = 7 Or Left(Trim(arr2(m)), 1) = 8 Then arr2(m) = Format(Mid(Trim(arr2(m)), 2), "8-@@@-@@@-@@-@@") End If End If arr1(n, 1) = Join(arr2, ", ") Next Next [c1].Resize(UBound(arr1), 1) = arr1 End Sub
P.S. Причем, в процессе работы у меня также было промежуточное достижение в виде мега-формулы для одной ячейки, которая разбирает весь массив на отдельные ячейки по одному номеру (почтовому адресу), с указанием в соседней ячейке номера исходной строки (т.е. такая формула для "нормализации" справочника телефонов):
P.S. Причем, в процессе работы у меня также было промежуточное достижение в виде мега-формулы для одной ячейки, которая разбирает весь массив на отдельные ячейки по одному номеру (почтовому адресу), с указанием в соседней ячейке номера исходной строки (т.е. такая формула для "нормализации" справочника телефонов):