Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Разделить список на имена и телефоны - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Разделить список на имена и телефоны (Макросы/Sub)
Разделить список на имена и телефоны
Stormy Дата: Вторник, 10.11.2015, 14:39 | Сообщение № 1
Группа: Проверенные
Ранг: Обитатель
Сообщений: 357
Репутация: 12 ±
Замечаний: 0% ±

Excel 2010
Доброго времени суток!
Помогите, пожалуйста, разделить список. Примерный вид прикреплен в приложении.
Имена могут быть в середине, в начале и в конце. Номеров для одного человека может быть несколько.
В оригинале этот столбец из 3 тыс строк состоит, поэтому сделать вручную долго и муторно ((
Сами номера тоже писались по разному. То с пробелами, то с дефисами. С чего начать и как продолжить ума не приложу ((
К сообщению приложен файл: imena.xlsx (10.6 Kb)


Место для рекламы.
 
Ответить
СообщениеДоброго времени суток!
Помогите, пожалуйста, разделить список. Примерный вид прикреплен в приложении.
Имена могут быть в середине, в начале и в конце. Номеров для одного человека может быть несколько.
В оригинале этот столбец из 3 тыс строк состоит, поэтому сделать вручную долго и муторно ((
Сами номера тоже писались по разному. То с пробелами, то с дефисами. С чего начать и как продолжить ума не приложу ((

Автор - Stormy
Дата добавления - 10.11.2015 в 14:39
sv2014 Дата: Вторник, 10.11.2015, 23:16 | Сообщение № 2
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 226
Репутация: 61 ±
Замечаний: 0% ±

Excel 2013
Stormy, добрый вечер,протестируйте макрос,кнопка zzz в файл-примере,много,но не все,- вытягивает, -надо доработать...

[vba]
Код
Sub zzz()
    Dim objRegExp As Object, objMatch As Object
    Dim i%, j%, m%, n%, i1%
    i1 = Range("B" & Cells.Rows.Count).End(xlUp).Row
    Application.ScreenUpdating = False
    For j = 3 To i1
    n = 0: m = 0
    Set objRegExp = CreateObject("VBScript.RegExp")
    With objRegExp: .IgnoreCase = True: .Global = True
     .Pattern = "(\d{3}\-\d{3}\-\d{2}\-\d+)([a-zA-Z ]+)"
    End With
        For Each objMatch In objRegExp.Execute(Range("B" & j))
         m = m + 1
         Range("C" & j).Offset(, m) = objMatch.SubMatches(0)
         n = n + 1
         Range("E" & j).Offset(, n) = Trim(objMatch.SubMatches(1))
        Next: Range("C" & j) = Range("F" & j)
        Range("F" & j) = Range("G" & j): Range("G" & j) = ""
        Next
       Application.ScreenUpdating = True
       Columns("H").ClearContents
End Sub
[/vba]
К сообщению приложен файл: example_12_11_2.xls (48.0 Kb)
 
Ответить
СообщениеStormy, добрый вечер,протестируйте макрос,кнопка zzz в файл-примере,много,но не все,- вытягивает, -надо доработать...

[vba]
Код
Sub zzz()
    Dim objRegExp As Object, objMatch As Object
    Dim i%, j%, m%, n%, i1%
    i1 = Range("B" & Cells.Rows.Count).End(xlUp).Row
    Application.ScreenUpdating = False
    For j = 3 To i1
    n = 0: m = 0
    Set objRegExp = CreateObject("VBScript.RegExp")
    With objRegExp: .IgnoreCase = True: .Global = True
     .Pattern = "(\d{3}\-\d{3}\-\d{2}\-\d+)([a-zA-Z ]+)"
    End With
        For Each objMatch In objRegExp.Execute(Range("B" & j))
         m = m + 1
         Range("C" & j).Offset(, m) = objMatch.SubMatches(0)
         n = n + 1
         Range("E" & j).Offset(, n) = Trim(objMatch.SubMatches(1))
        Next: Range("C" & j) = Range("F" & j)
        Range("F" & j) = Range("G" & j): Range("G" & j) = ""
        Next
       Application.ScreenUpdating = True
       Columns("H").ClearContents
End Sub
[/vba]

Автор - sv2014
Дата добавления - 10.11.2015 в 23:16
Stormy Дата: Среда, 11.11.2015, 07:50 | Сообщение № 3
Группа: Проверенные
Ранг: Обитатель
Сообщений: 357
Репутация: 12 ±
Замечаний: 0% ±

Excel 2010
sv2014,
Благодарю. Уже что-то , дальше можно формулами доработать.


Место для рекламы.
 
Ответить
Сообщениеsv2014,
Благодарю. Уже что-то , дальше можно формулами доработать.

Автор - Stormy
Дата добавления - 11.11.2015 в 07:50
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Разделить список на имена и телефоны (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!