ikki; попробую, Значит, из БД выбираем: 1.номера разделенные запятыми, они могут быть. - 16 значными - 12 значными - 11 значными - вначале содержать "8", "+4", "+7" или "+9" - семизначными - шестизначными - пятизначными - четырехзначными. 2. Имена - могут содержать одно слово (неделимых символов) - могут содержать два слова (две группы символов разделенных одной или несколькими запятыми или пробелами) - могут содержать 3 слова (три группы символов разделенных одной или несколькими запятыми или пробелами) - двузначные цифры (применять к имени)
Но это в том случае, если мы работаем с неотсортированной БД (в которой вперемешку запятые, цифры, буквы) (в первом вложенном файле) Вчера, благодаря уважаемому Александру, была отсортирована БД (в "xls"), ( во втором вложенном файле)где в нужных столбцах была необходимая информация (телефоны (со знаками "+" где необходимо) и имена), возможно ли имея такую информацию, перекодировать ее в "CSV"?
Заранее прошу прощения за возможную неверную трактовку сути вопроса, моя деятельность пролегает в других сферах .
ikki; попробую, Значит, из БД выбираем: 1.номера разделенные запятыми, они могут быть. - 16 значными - 12 значными - 11 значными - вначале содержать "8", "+4", "+7" или "+9" - семизначными - шестизначными - пятизначными - четырехзначными. 2. Имена - могут содержать одно слово (неделимых символов) - могут содержать два слова (две группы символов разделенных одной или несколькими запятыми или пробелами) - могут содержать 3 слова (три группы символов разделенных одной или несколькими запятыми или пробелами) - двузначные цифры (применять к имени)
Но это в том случае, если мы работаем с неотсортированной БД (в которой вперемешку запятые, цифры, буквы) (в первом вложенном файле) Вчера, благодаря уважаемому Александру, была отсортирована БД (в "xls"), ( во втором вложенном файле)где в нужных столбцах была необходимая информация (телефоны (со знаками "+" где необходимо) и имена), возможно ли имея такую информацию, перекодировать ее в "CSV"?
Заранее прошу прощения за возможную неверную трактовку сути вопроса, моя деятельность пролегает в других сферах .Jam
Сообщение отредактировал Jam - Пятница, 09.11.2012, 16:29
- номера разделенные запятыми, они могут быть - 16 значными - 12 значными - 11 значными - вначале содержать "8", "+4", "+7" или "+9" - семизначными - шестизначными - пятизначными - четырехзначными.
имхо, слишком много вариантов. кроме того, я не понял - входит ли цифра 7 из "+7", к примеру, в общее кол-во знаков варианта "11 значными", например.
думаю, надо исходить из того, что в исходной таблице всё-таки - телефонные номера. и их надо перенести (выделить в отдельные столбцы) а уж если там есть ошибки - то их надо оставить.
предлагаю следующую модификацию шаблона: [vba]
Code
.Pattern = "(\+{0,1}\d{4,})(?=\D+)"
[/vba]
теперь по поводу csv насколько я понимаю, никакого особого "перекодирования" не требуется. нужно: 1) после отработки макроса удалить ненужные исходные столбцы (можно в копии листа - на всякий случай); 2) всем столбцам с номерами присвоить заголовки в первой строке; 3) удалить столбцы справа; 4) "сохранить как...", формат csv.
всё. знаки "+" в файле csv будут.
гм.
Quote (Jam)
- номера разделенные запятыми, они могут быть - 16 значными - 12 значными - 11 значными - вначале содержать "8", "+4", "+7" или "+9" - семизначными - шестизначными - пятизначными - четырехзначными.
имхо, слишком много вариантов. кроме того, я не понял - входит ли цифра 7 из "+7", к примеру, в общее кол-во знаков варианта "11 значными", например.
думаю, надо исходить из того, что в исходной таблице всё-таки - телефонные номера. и их надо перенести (выделить в отдельные столбцы) а уж если там есть ошибки - то их надо оставить.
предлагаю следующую модификацию шаблона: [vba]
Code
.Pattern = "(\+{0,1}\d{4,})(?=\D+)"
[/vba]
теперь по поводу csv насколько я понимаю, никакого особого "перекодирования" не требуется. нужно: 1) после отработки макроса удалить ненужные исходные столбцы (можно в копии листа - на всякий случай); 2) всем столбцам с номерами присвоить заголовки в первой строке; 3) удалить столбцы справа; 4) "сохранить как...", формат csv.
Jam, у вас не база данных, а адресная книга с телефона. Нет? Обратите внимание, что ВСЕ данные после первой запятой, (первого поля адресной книги, обычно - фамилия), заключены в кавычки. Что будет при обратной закачке при отсутствии кавычек?????
Jam, у вас не база данных, а адресная книга с телефона. Нет? Обратите внимание, что ВСЕ данные после первой запятой, (первого поля адресной книги, обычно - фамилия), заключены в кавычки. Что будет при обратной закачке при отсутствии кавычек????? RAN
Быть или не быть, вот в чем загвоздка!
Сообщение отредактировал RAN - Пятница, 09.11.2012, 17:04
Вот какие действия я совершаю: 1. беру данные вида -
2. применяю макрос, типа:
[vba]
Код
Sub xxx() Dim re1 As Object, re2 As Object, om As Object, c As Range, i% Set re1 = CreateObject("vbscript.regexp") Set re2 = CreateObject("vbscript.regexp")
With re1 .Pattern = "([a-zа-яё0-9]+)\s*([a-zа-яё0-9]*)(.*)" .Global = True .IgnoreCase = True End With With re2 .Pattern = "(\+{0,1}\d{4,})(?=\D+)" .Global = True .IgnoreCase = True End With
For Each c In [a10:a12] Set om = re1.Execute(c.Text).Item(0) c.Offset(, 10).Resize(, 6).NumberFormat = "@" c.Offset(, 10).Value = om.SubMatches(0) c.Offset(, 11).Value = om.SubMatches(1) Set om = re2.Execute(om.SubMatches(2)) For i = 0 To om.Count - 1 c.Offset(, i + 12).Value = om.Item(i) Next Next End Sub
[/vba]
с предложенной Александром, модификацией шаблона. [vba]
Код
.Pattern = "(\+{0,1}\d{4,})(?=\D+)"
[/vba] 3. удаляю первый столбец данных (с кучей запятых и смешанных знаков) 4. сохраняю в формате CSV (не ДОС csv, не Макинтош csv) 5. открываю в блокноте, "+" стоят, а если открыть снова в экселе, то их нет.
Вопрос, это так должно быть? Или я что то не правильно сделал?
Вот какие действия я совершаю: 1. беру данные вида -
2. применяю макрос, типа:
[vba]
Код
Sub xxx() Dim re1 As Object, re2 As Object, om As Object, c As Range, i% Set re1 = CreateObject("vbscript.regexp") Set re2 = CreateObject("vbscript.regexp")
With re1 .Pattern = "([a-zа-яё0-9]+)\s*([a-zа-яё0-9]*)(.*)" .Global = True .IgnoreCase = True End With With re2 .Pattern = "(\+{0,1}\d{4,})(?=\D+)" .Global = True .IgnoreCase = True End With
For Each c In [a10:a12] Set om = re1.Execute(c.Text).Item(0) c.Offset(, 10).Resize(, 6).NumberFormat = "@" c.Offset(, 10).Value = om.SubMatches(0) c.Offset(, 11).Value = om.SubMatches(1) Set om = re2.Execute(om.SubMatches(2)) For i = 0 To om.Count - 1 c.Offset(, i + 12).Value = om.Item(i) Next Next End Sub
[/vba]
с предложенной Александром, модификацией шаблона. [vba]
Код
.Pattern = "(\+{0,1}\d{4,})(?=\D+)"
[/vba] 3. удаляю первый столбец данных (с кучей запятых и смешанных знаков) 4. сохраняю в формате CSV (не ДОС csv, не Макинтош csv) 5. открываю в блокноте, "+" стоят, а если открыть снова в экселе, то их нет.
Вопрос, это так должно быть? Или я что то не правильно сделал?Jam
Сообщение отредактировал Jam - Пятница, 09.11.2012, 21:42