Страницы: 1
RSS
как привести телефонные номера в один формат
 
есть номера вида 375293167267-но иногда попадают вида (29) 1091037  
вопрос:как добиться чтобы все номера сразу записывались в один формат вида  375293167267(номера вставляем копипастом),т.к.настроена функция удаления дубле номеров-и она, естественно, не срабатывает, когда номера в разном формате-огромная просьба помогите разобраться
 
ctrl+h
Я сам - дурнее всякого примера! ...
 
так слишком долго-и речь ведь не об изменении одного номера-номера сыплются быстро-и хотелось бы чтобы как то настроить эксель, чтобы они сразу-автоматом-записывалис бы в нужном формате
 
Лучше всего интегрировать проверку прямо в функцию удаления дублей, особенно если она тоже подвешена на событие Worksheet_Change.  
 
Вот образец для приведения формата:  
Private Sub Worksheet_Change(ByVal Target As Range)  
 If Target.Column = 1 Then 'если вставляем в первый столбец  
   Application.EnableEvents = 0  
   For Each rng In Target  
     If rng Like "(29)*" Then rng.Value = 375290000000# + Val(Mid(rng, 5))  
   Next  
   Application.EnableEvents = 1  
 End If  
End Sub  
 
Неуточнённый нюанс: если в скобках не только "29", то всегда ли добавлять левее "375"?
 
всегда 375  
а вот 29 не всегда  
может быть и 33, и 44 и пр.
 
рискую вызвать ваше неуловольствие-но не могли бы вы подсказать ОБЫЧНОМУ ПОЛЬЗОВАТЕЛЮ-как мне всеже настроить эксель-прямо поэтапно, если можно-из вышенаписанного абсолютно, изините, ничего не ясно......
 
все сделала как вы писали-появился новый лист-макрос-но при вставлении номеров телефона в него, к сожалению, формат их не изменяется
 
исходный текст-далее вставить -появляется окошко, в него и вставляю клпированнный текст-что дальще???как либо сохранить что то ексель не предлагает...что дальше то делать?пожалуйста, извините, вопросы новичка
 
{quote}{login=1234567890}{date=26.08.2012 10:51}{thema=}{post}что дальще???{/post}{/quote}Попробуйте ввести "неправильный" номер.
 
пи попытке соханить документ-пишет о невозможности сохранения без поддержки макросов-я проверила-гаалочка на "разрешить все макросы"стоит-сохранила в книгу с поддержкой макросов-далее-открываю эту книгу-номер "неправильный"пытыюсь вставить в тот же лист-в который вставляла ранее(в который вписывала макрос)-к сожалению в правильном формате номер не записывается.......выскакивает картинка , в которой я вводила макрос-и одна из строк в макросе выделяется желтым-что дальше делать-в чем ошибка????пикрепляю скрин выскакивающей картинки
 
Не надо нам Ваш скрин(тем более с превышением допустимого размера). Выложите небольшой пример в файле Эксель, где у Вас выскакивает ошибка.  
PS сделай Вы это раньше - давно забыли бы о этой теме.  
 
13366
Я сам - дурнее всякого примера! ...
 
я ввожу номер в "неверном" формате-сразу выскакивает окошко  
Private Sub Worksheet_Change(ByVal Target As Range)  
If Target.Column = 1 Then 'если вставляем в первый столбец  
Application.EnableEvents = 0  
Dim sNum  
For Each Rng In Target  
If Rng Like "*(*)*" Then  
sNum = Replace(sNum, "(", ""): sNum = Replace(sNum, ")", "")  
   
Rng.Value = CLng(sNum)  
End If  
Next  
Application.EnableEvents = 1  
End If  
End Sub  
причем  Rng.Value = CLng(sNum) выделяется ярко желтым  
если сохраню документ-то просто при открытии будет список номеров телефона-так как я его вставляла-неверный формат останется неверным
 
1234567890, как можно иначе понять: "Выложите небольшой пример в файле Эксель"?  
Впрочем, мне уже неинтересно.
Я сам - дурнее всякого примера! ...
 
я верно поняла-но что вы увидели бы в этом экселе????я скопировала выпадающюю ошибку-помоему достаточно для решения проблемы-прикрепляю эксель-надеюсь кто то всеже сможет ответить на вопрос
 
>> -помоему достаточно для решения проблемы  
Так что ж Вы не решили ее, раз так уверены?  
 
Private Sub Worksheet_Change(ByVal Target As Range)  
   If Target.Column = 1 Then    'если вставляем в первый столбец  
       Application.EnableEvents = 0  
       Dim sNum  
       For Each Rng In Target  
           If Rng Like "*(*)*" Then  
               sNum = Replace(Rng, "(", ""): sNum = Replace(sNum, ")", "")  
               Rng.Value = "375" & sNum  
           End If  
       Next  
       Application.EnableEvents = 1  
   End If  
End Sub
Я сам - дурнее всякого примера! ...
 
То The_Prist: Дим, я убрал преобразование в число, поскольку телефонные номера по определению в мат. операциях вроде как не участвуют. К тому же в номере могут быть лидирующие нули. Там бы неплохо еще и апостроф клеить сначала.
Я сам - дурнее всякого примера! ...
 
спасибо большое  
почти получилось-когда изменила макрос-теперь сохраняет в виде 293399728-осталось только прикрутить к началу 375....прикрепляю ексель-спасибо
 
Вы мой пример смотрели? Там как раз "прикручивает". Я вижу, в пустоту делаю...
Я сам - дурнее всякого примера! ...
 
{quote}{login=1234567890}{date=27.08.2012 10:02}{thema=}{post}но что вы увидели бы в этом экселе????{/post}{/quote}Теперь понятно, зачем Вас просили файл?
 
The_Prist огромное спасибо!!! вы решили проблему-все сохраняется так, как требовалось!!!как можно к вам обратиться вне форума-мне нужно пару скриптов на платной основе-может вы смогли бы помочь
 
теперь ясно зачем просили файл-извините  
я успела скопировать первый пример исправленного макроса-теперь проблема решена-отлично-всем большое спасибо за быстрые и правильные ответы
 
{quote}{login=1234567890}{date=27.08.2012 10:38}{thema=}{post}как можно к вам обратиться вне форума{/post}{/quote}Прочитать в подписи любого сообщения почтовый адрес и написать на него письмо.
Страницы: 1
Наверх