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

Вход

Регистрация

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

 

= Мир MS Excel/Извлечение текста из данных - Мир MS Excel

Старая форма входа
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: китин, _Boroda_  
Извлечение текста из данных
Jam Дата: Четверг, 08.11.2012, 20:23 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 42
Репутация: 0 ±
Замечаний: 0% ±

Есть БД (контакты) со смешанными цифрами и текстом, с извлечением первого (цифр) разобрался (благодаря форуму), а вот со вторым, ни как не получается.
И как удалить лишние знаки препинания (появились в процессе экспорта БД)?


Сообщение отредактировал Jam - Четверг, 08.11.2012, 20:27
 
Ответить
СообщениеЕсть БД (контакты) со смешанными цифрами и текстом, с извлечением первого (цифр) разобрался (благодаря форуму), а вот со вторым, ни как не получается.
И как удалить лишние знаки препинания (появились в процессе экспорта БД)?

Автор - Jam
Дата добавления - 08.11.2012 в 20:23
Pelena Дата: Четверг, 08.11.2012, 20:35 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 19405
Репутация: 4555 ±
Замечаний: ±

Excel 365 & Mac Excel
Jam, приложите файл с примером в формате .xls
Покажите что есть и что надо получить


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеJam, приложите файл с примером в формате .xls
Покажите что есть и что надо получить

Автор - Pelena
Дата добавления - 08.11.2012 в 20:35
Jam Дата: Четверг, 08.11.2012, 20:46 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 42
Репутация: 0 ±
Замечаний: 0% ±

Пардон, не подумал.
 
Ответить
СообщениеПардон, не подумал.

Автор - Jam
Дата добавления - 08.11.2012 в 20:46
ikki Дата: Четверг, 08.11.2012, 22:27 | Сообщение № 4
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
как-то так?..
[vba]
Code
Sub xx()
      Dim re As New RegExp, om As Object
      With re
        .Pattern = "([a-zа-яё]+)\s*([a-zа-яё]*).*?(\+*\d+)"
        .Global = True
        .IgnoreCase = True
        Set om = .Execute(",Ивано  jА,,,,+456546,,,")
        MsgBox om.Item(0).SubMatches(0) & vbCrLf _
          & om.Item(0).SubMatches(1) & vbCrLf _
          & om.Item(0).SubMatches(2)
      End With
End Sub
[/vba]


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki


Сообщение отредактировал ikki - Четверг, 08.11.2012, 22:34
 
Ответить
Сообщениекак-то так?..
[vba]
Code
Sub xx()
      Dim re As New RegExp, om As Object
      With re
        .Pattern = "([a-zа-яё]+)\s*([a-zа-яё]*).*?(\+*\d+)"
        .Global = True
        .IgnoreCase = True
        Set om = .Execute(",Ивано  jА,,,,+456546,,,")
        MsgBox om.Item(0).SubMatches(0) & vbCrLf _
          & om.Item(0).SubMatches(1) & vbCrLf _
          & om.Item(0).SubMatches(2)
      End With
End Sub
[/vba]

Автор - ikki
Дата добавления - 08.11.2012 в 22:27
Jam Дата: Четверг, 08.11.2012, 23:00 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 42
Репутация: 0 ±
Замечаний: 0% ±

Если это макрос, то мне нужно изучать эту возможность программы. Еще не дошел до нее.
Спасибо за вариант решения. Возможно ли скинуть в личку всю БД?
 
Ответить
СообщениеЕсли это макрос, то мне нужно изучать эту возможность программы. Еще не дошел до нее.
Спасибо за вариант решения. Возможно ли скинуть в личку всю БД?

Автор - Jam
Дата добавления - 08.11.2012 в 23:00
ikki Дата: Четверг, 08.11.2012, 23:06 | Сообщение № 6
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
для вашего файла:
[vba]
Code
Sub xxx()
   Dim re As Object, om As Object, c As Range, i%
   Set re = CreateObject("vbscript.regexp")
   With re
     .Pattern = "([a-zа-яё]+)\s*([a-zа-яё]*).*?(\+*\d+)"
     .Global = True
     .IgnoreCase = True
   End With
   For Each c In [a8:a10]
     Set om = re.Execute(c.Text).Item(0)
     For i = 0 To 2
       c.Offset(, i + 7).NumberFormat = "@"
       c.Offset(, i + 7).Value = om.SubMatches(i)
     Next
   Next
End Sub
[/vba]
вставляете этот код в стандартный модуль.
на листе нажимаете Alt+F8, выбираете макрос ххх в списке, жмете "выполнить"


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki
 
Ответить
Сообщениедля вашего файла:
[vba]
Code
Sub xxx()
   Dim re As Object, om As Object, c As Range, i%
   Set re = CreateObject("vbscript.regexp")
   With re
     .Pattern = "([a-zа-яё]+)\s*([a-zа-яё]*).*?(\+*\d+)"
     .Global = True
     .IgnoreCase = True
   End With
   For Each c In [a8:a10]
     Set om = re.Execute(c.Text).Item(0)
     For i = 0 To 2
       c.Offset(, i + 7).NumberFormat = "@"
       c.Offset(, i + 7).Value = om.SubMatches(i)
     Next
   Next
End Sub
[/vba]
вставляете этот код в стандартный модуль.
на листе нажимаете Alt+F8, выбираете макрос ххх в списке, жмете "выполнить"

Автор - ikki
Дата добавления - 08.11.2012 в 23:06
ikki Дата: Четверг, 08.11.2012, 23:07 | Сообщение № 7
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
Quote (Jam)
Возможно ли скинуть в личку всю БД?

мне?
зачем?
обработать ВСЮ вашу БД?
wacko


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki
 
Ответить
Сообщение
Quote (Jam)
Возможно ли скинуть в личку всю БД?

мне?
зачем?
обработать ВСЮ вашу БД?
wacko

Автор - ikki
Дата добавления - 08.11.2012 в 23:07
Jam Дата: Четверг, 08.11.2012, 23:16 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 42
Репутация: 0 ±
Замечаний: 0% ±

чтоб глянуть, возможно ли ее скорректировать.
Кстати, возникла новая задача, группы цифр разделяемые одной или несколькими запятыми сортировать в разные ячейки. Возможно ли такое?
 
Ответить
Сообщениечтоб глянуть, возможно ли ее скорректировать.
Кстати, возникла новая задача, группы цифр разделяемые одной или несколькими запятыми сортировать в разные ячейки. Возможно ли такое?

Автор - Jam
Дата добавления - 08.11.2012 в 23:16
ikki Дата: Четверг, 08.11.2012, 23:22 | Сообщение № 9
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
вы код скопировали/выполнили?
что-то не получается?

просматривать ВСЮ вашу БД "из интереса" у меня желания нет. возможно, у вас не во всех записях такой формат данных.
макрос написан с учетом текущей постановки задачи.
что там в реале - мне неведомо.

вот уже первый звоночек прозвенел:
Quote (Jam)
Кстати, возникла новая задача... Возможно ли такое?

конкретно на этот вопрос отвечаю - можно. но надо корректировать макрос.

может быть, вам не стоит торопиться? выберите различные варианты.
м.б. где-то номера телефонов написаны с пробелами, скобками, дефисами?
это всё важно.


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki


Сообщение отредактировал ikki - Четверг, 08.11.2012, 23:23
 
Ответить
Сообщениевы код скопировали/выполнили?
что-то не получается?

просматривать ВСЮ вашу БД "из интереса" у меня желания нет. возможно, у вас не во всех записях такой формат данных.
макрос написан с учетом текущей постановки задачи.
что там в реале - мне неведомо.

вот уже первый звоночек прозвенел:
Quote (Jam)
Кстати, возникла новая задача... Возможно ли такое?

конкретно на этот вопрос отвечаю - можно. но надо корректировать макрос.

может быть, вам не стоит торопиться? выберите различные варианты.
м.б. где-то номера телефонов написаны с пробелами, скобками, дефисами?
это всё важно.

Автор - ikki
Дата добавления - 08.11.2012 в 23:22
Jam Дата: Четверг, 08.11.2012, 23:29 | Сообщение № 10
Группа: Пользователи
Ранг: Новичок
Сообщений: 42
Репутация: 0 ±
Замечаний: 0% ±

Спасибо, Вы правы. Номера действительно записаны и с запятыми и с кавычками ( от одной, до 10 кавычек) Больше нет ни каких знаков (ни пробелов, ни чего более).



С текстом разобрался, и он откорректирован, осталось отсортировать номера телефонов с обязательным присутствием (где он есть ) знака "+"


Сообщение отредактировал Jam - Четверг, 08.11.2012, 23:33
 
Ответить
СообщениеСпасибо, Вы правы. Номера действительно записаны и с запятыми и с кавычками ( от одной, до 10 кавычек) Больше нет ни каких знаков (ни пробелов, ни чего более).



С текстом разобрался, и он откорректирован, осталось отсортировать номера телефонов с обязательным присутствием (где он есть ) знака "+"

Автор - Jam
Дата добавления - 08.11.2012 в 23:29
ikki Дата: Четверг, 08.11.2012, 23:38 | Сообщение № 11
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
Quote (Jam)
37",,,,,,,,,"87019246302","6981819

37 здесь - это что?
последние цифры 6981819 - тоже телефон?
вообще, макс. кол-во номеров известно? скажем, три или пять?

и всё-таки: что значит "отсортировать номера телефонов"?
кстати, "+" у меня обрабатывается (вроде бы smile )


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki


Сообщение отредактировал ikki - Пятница, 09.11.2012, 01:38
 
Ответить
Сообщение
Quote (Jam)
37",,,,,,,,,"87019246302","6981819

37 здесь - это что?
последние цифры 6981819 - тоже телефон?
вообще, макс. кол-во номеров известно? скажем, три или пять?

и всё-таки: что значит "отсортировать номера телефонов"?
кстати, "+" у меня обрабатывается (вроде бы smile )

Автор - ikki
Дата добавления - 08.11.2012 в 23:38
Jam Дата: Четверг, 08.11.2012, 23:50 | Сообщение № 12
Группа: Пользователи
Ранг: Новичок
Сообщений: 42
Репутация: 0 ±
Замечаний: 0% ±

37 - это часть имени (должна была остаться в поле "Имя", не получилось отсортировать таким образом)
последние цифры тоже телефон!
максимальное количество номеров = 4
"отсортировать" - разместить по одному номеру в отдельный столбец (телефон 1, телефон 2, телефон 3, телефон 4) номера телефонов разделены между собой разным количеством запятых, которые в свою очередь взяты в кавычки. (особенность сортировки)
77012423697",,"+77029179800","87009857977",,,,"+77757477466

И да, упустил (в БД несколько тысяч строк), есть и просто разделенные пробелом. sad
810491624114366 810499241809312 +49924170425


Сообщение отредактировал Jam - Четверг, 08.11.2012, 23:53
 
Ответить
Сообщение37 - это часть имени (должна была остаться в поле "Имя", не получилось отсортировать таким образом)
последние цифры тоже телефон!
максимальное количество номеров = 4
"отсортировать" - разместить по одному номеру в отдельный столбец (телефон 1, телефон 2, телефон 3, телефон 4) номера телефонов разделены между собой разным количеством запятых, которые в свою очередь взяты в кавычки. (особенность сортировки)
77012423697",,"+77029179800","87009857977",,,,"+77757477466

И да, упустил (в БД несколько тысяч строк), есть и просто разделенные пробелом. sad
810491624114366 810499241809312 +49924170425

Автор - Jam
Дата добавления - 08.11.2012 в 23:50
ikki Дата: Пятница, 09.11.2012, 00:01 | Сообщение № 13
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
ну... если максимум четыре, то можно тупо удлинить регэксп

вместо
[vba]
Code
    .Pattern = "([a-zа-яё]+)\s*([a-zа-яё]*).*?(\+*\d+)"
[/vba]
пишем так:
[vba]
Code
    .Pattern = "([a-zа-яё]+)\s*([a-zа-яё]*).*?(\+*\d+).*?(\+*\d+).*?(\+*\d+).*?(\+*\d+)"
[/vba]

с учетом того, что в "именах" могут быть цифры, а также того, что четыре номера надо куда-то записать, код становится таким:

[vba]
Code
Sub xxx()
Dim re As Object, om As Object, c As Range, i%
Set re = CreateObject("vbscript.regexp")
With re
      .Pattern = "([a-zа-яё0-9]+)\s*([a-zа-яё0-9]*).*?(\+*\d+).*?(\+*\d+).*?(\+*\d+).*?(\+*\d+)"
      .Global = True
      .IgnoreCase = True
End With
For Each c In [a8:a10]
      Set om = re.Execute(c.Text).Item(0)
      For i = 0 To 5
      c.Offset(, i + 7).NumberFormat = "@"
      c.Offset(, i + 7).Value = om.SubMatches(i)
      Next
Next
End Sub
[/vba]

вам нужно будет изменить исходный диапазон (сейчас [a8:a10])


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki
 
Ответить
Сообщениену... если максимум четыре, то можно тупо удлинить регэксп

вместо
[vba]
Code
    .Pattern = "([a-zа-яё]+)\s*([a-zа-яё]*).*?(\+*\d+)"
[/vba]
пишем так:
[vba]
Code
    .Pattern = "([a-zа-яё]+)\s*([a-zа-яё]*).*?(\+*\d+).*?(\+*\d+).*?(\+*\d+).*?(\+*\d+)"
[/vba]

с учетом того, что в "именах" могут быть цифры, а также того, что четыре номера надо куда-то записать, код становится таким:

[vba]
Code
Sub xxx()
Dim re As Object, om As Object, c As Range, i%
Set re = CreateObject("vbscript.regexp")
With re
      .Pattern = "([a-zа-яё0-9]+)\s*([a-zа-яё0-9]*).*?(\+*\d+).*?(\+*\d+).*?(\+*\d+).*?(\+*\d+)"
      .Global = True
      .IgnoreCase = True
End With
For Each c In [a8:a10]
      Set om = re.Execute(c.Text).Item(0)
      For i = 0 To 5
      c.Offset(, i + 7).NumberFormat = "@"
      c.Offset(, i + 7).Value = om.SubMatches(i)
      Next
Next
End Sub
[/vba]

вам нужно будет изменить исходный диапазон (сейчас [a8:a10])

Автор - ikki
Дата добавления - 09.11.2012 в 00:01
Jam Дата: Пятница, 09.11.2012, 00:17 | Сообщение № 14
Группа: Пользователи
Ранг: Новичок
Сообщений: 42
Репутация: 0 ±
Замечаний: 0% ±

Преогромнейшее, Вам спасибо, правда не совсем разобрался с макросами. Но надеюсь буду вникать.
 
Ответить
СообщениеПреогромнейшее, Вам спасибо, правда не совсем разобрался с макросами. Но надеюсь буду вникать.

Автор - Jam
Дата добавления - 09.11.2012 в 00:17
Jam Дата: Пятница, 09.11.2012, 00:30 | Сообщение № 15
Группа: Пользователи
Ранг: Новичок
Сообщений: 42
Репутация: 0 ±
Замечаний: 0% ±

не совсем верно вышло

Раскидывает последние цифры от номера.


Сообщение отредактировал Jam - Пятница, 09.11.2012, 00:33
 
Ответить
Сообщениене совсем верно вышло

Раскидывает последние цифры от номера.

Автор - Jam
Дата добавления - 09.11.2012 в 00:30
ikki Дата: Пятница, 09.11.2012, 00:34 | Сообщение № 16
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
угу sad
надо подумать...


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki
 
Ответить
Сообщениеугу sad
надо подумать...

Автор - ikki
Дата добавления - 09.11.2012 в 00:34
Jam Дата: Пятница, 09.11.2012, 00:35 | Сообщение № 17
Группа: Пользователи
Ранг: Новичок
Сообщений: 42
Репутация: 0 ±
Замечаний: 0% ±

а возможно ли вставить правило где номером будет являться "+7" или "8" и 10 цифр идущих непрерывно за ними?
 
Ответить
Сообщениеа возможно ли вставить правило где номером будет являться "+7" или "8" и 10 цифр идущих непрерывно за ними?

Автор - Jam
Дата добавления - 09.11.2012 в 00:35
Jam Дата: Пятница, 09.11.2012, 00:45 | Сообщение № 18
Группа: Пользователи
Ранг: Новичок
Сообщений: 42
Репутация: 0 ±
Замечаний: 0% ±

Возможно это сможет облегчить задачу? Я отсортировал столбец с текстом (правда двузначные числа так и не смог перенести к ним) и номера отдельно. Если бы было возможно двузначные номера сортировать к тексту, был бы торт.


Сообщение отредактировал Jam - Пятница, 09.11.2012, 00:48
 
Ответить
СообщениеВозможно это сможет облегчить задачу? Я отсортировал столбец с текстом (правда двузначные числа так и не смог перенести к ним) и номера отдельно. Если бы было возможно двузначные номера сортировать к тексту, был бы торт.

Автор - Jam
Дата добавления - 09.11.2012 в 00:45
ikki Дата: Пятница, 09.11.2012, 00:51 | Сообщение № 19
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
Quote (ikki)
надо подумать...

пока вот так придумал:


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki
 
Ответить
Сообщение
Quote (ikki)
надо подумать...

пока вот так придумал:

Автор - ikki
Дата добавления - 09.11.2012 в 00:51
ikki Дата: Пятница, 09.11.2012, 00:56 | Сообщение № 20
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
Quote (Jam)
К сообщению приложен файл: 7716025.xls(24Kb)

нет.
давайте все то же самое, но в исходном виде?
кстати, у вас там в последней строчке последний "номер" не попадает под категорию "+7 или 8, а за ними 10 цифр".
и что делать?


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki
 
Ответить
Сообщение
Quote (Jam)
К сообщению приложен файл: 7716025.xls(24Kb)

нет.
давайте все то же самое, но в исходном виде?
кстати, у вас там в последней строчке последний "номер" не попадает под категорию "+7 или 8, а за ними 10 цифр".
и что делать?

Автор - ikki
Дата добавления - 09.11.2012 в 00:56
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

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