Пользователь |
Сообщение: вопрос знатокам екселя (Тема#63049) |
ME4EHbIU
Only GOD can judge me

Возраст: 39
: Киев
С нами с 05.01.06
Посты: 11686
|
есть база
в первой колонке написана инфа (в разных строках по-разному) в формате: индекс, область, город, улица, дом, офис\квартира
задача:
разнести данные по отдельным колонкам.
тоесть в этом же файле....
колонка 2 называеца индекс (соответственно все индексы в неё)
колонка 3 называеца область (области сюда)
и т.д.
реально ? ибо база большая, ручками лень
|
|
|
Nameless
Maximus - Lite Edition

: 404
С нами с 02.11.05
Посты: 21233
|
задача поставлена настолько в общем, что ответить точно нереально. Но вообще - скорее да. Макросы и регулярные выражения в помощь )
|
|
|
Nameless
Maximus - Lite Edition

: 404
С нами с 02.11.05
Посты: 21233
|
более точно можно ответить, если глянуть на сэмпл из файла.
|
|
|
ME4EHbIU
Only GOD can judge me

Возраст: 39
: Киев
С нами с 05.01.06
Посты: 11686
|
вот пример...
я дело в том, шо в написании макросов не шарю совсем....
|
|
|
ME4EHbIU
Only GOD can judge me

Возраст: 39
: Киев
С нами с 05.01.06
Посты: 11686
|
Нейм, есишо с меня пиво
|
|
|
сцобака
11001100101000

С нами с 27.07.07
Посты: 6012
|
пилишь цикл, в него запихиваешь split по запятой и cell(x,y).value в помощь - и всё
|
|
|
Nameless
Maximus - Lite Edition

: 404
С нами с 02.11.05
Посты: 21233
|
не, не все. Ему надо по колонкам разложить, а там в строках порядок разный. Да и состав.
Отредактировано Nameless 16.05.12 11:43. Причина редактирования: Причина не указана.
|
|
|
ME4EHbIU
Only GOD can judge me

Возраст: 39
: Киев
С нами с 05.01.06
Посты: 11686
|
отож....если такое могешь замутить - в личку кину полный файл.....в долгу не останусь
|
|
|
сцобака
11001100101000

С нами с 27.07.07
Посты: 6012
|
не, не все. Ему надо по колонкам разложить, а там в строках порядок разный. Да и состав.
По колонкам разложить не проблема, у него проблема, что структура строк не одинаковая. Где-то нету индекса, где-то только город, а где-то область и село и т.д. - тут ещё помимо разбивания надо анализ и идентификацию типа данных делать
|
|
|
Nameless
Maximus - Lite Edition

: 404
С нами с 02.11.05
Посты: 21233
|
я кагбэ об этом и написал ) "по колонкам разложить" = "по нужным колонкам разложить"
|
|
|
сцобака
11001100101000

С нами с 27.07.07
Посты: 6012
|
Вот набросок на быструю руку, но т.к. исходные данные кривые и не шаблонные, тот тут нужно больше времени, чтобы построить и описать алгоритм сортировки и расфасовки данных по правильны полочкам.
 Прикрепления: vba.zip (16.76 KB) 54 Просмотр(ы)
|
|
|
Nameless
Maximus - Lite Edition

: 404
С нами с 02.11.05
Посты: 21233
|
нуу если такое качество устраивает.
|
|
|
ME4EHbIU
Only GOD can judge me

Возраст: 39
: Киев
С нами с 05.01.06
Посты: 11686
|
мерси 
та фих с ним....руками лопатить буду и пару людей подключу....
пасиба откликнувшимся...тему прикройте
|
|
|
Apache
подполковник

Возраст: 33
: Lublin, Polska
С нами с 10.03.09
Посты: 3776
|
а если просто написать парсер?
перевести файл в .csv и отпарсить, а потом обратно в .xls
|
|
|
ME4EHbIU
Only GOD can judge me

Возраст: 39
: Киев
С нами с 05.01.06
Посты: 11686
|
мне шоп понять шо такое парсер нада википедию перелопатить
|
|
|
сцобака
11001100101000

С нами с 27.07.07
Посты: 6012
|
а если просто написать парсер?
перевести файл в .csv и отпарсить, а потом обратно в .xls
дело в том, что там одни строки разделены пробелами, другие запятыми, а третьи и пробелы и запятые, в одном месте номер дома начинается с "буд", в другом просто цифра, в третьем ещё какая помесь, при этом части данных может не быть, или смещены в другой конец строки. По крайней мере это то что я увидел в примере выложенном.
Исходные данные слишком перемешанные. Написать подходящий парсер конечно можно, но займёт много времени.
|
|
|
Nameless
Maximus - Lite Edition

: 404
С нами с 02.11.05
Посты: 21233
|
вот-вот. Можно, просто быстро не получится и надо будет еще гонять на большом файле и смотреть на результат, тюнить.
|
|
|
Apache
подполковник

Возраст: 33
: Lublin, Polska
С нами с 10.03.09
Посты: 3776
|
если коротко:
берем программно читаем строку (для этого как раз и делаем .csv как самый простой формат таблиц)
"01001, м. Київ, вул. Хрещатик, буд. 19-А" разбиваем ее по запятым
получаем:
01001
м. Київ
вул. Хрещатик
буд. 19-А
анализируем
если "слово" имеет 6 символов и они число то это индекс
далее если слово содержит "м." или просто Київ это город (маски можно расширит)
далее если имеем "вул." это улица
если "буд." это дом
потом записываем строку как нам нужно
могу сейчас попробовать написать если получится скину
|
|
|
Nameless
Maximus - Lite Edition

: 404
С нами с 02.11.05
Посты: 21233
|
ох, тыж блин ну пробуй-пробуй, если есть время и желание ) там дофига вариантов ) когда все переберешь, как раз задачу Меченого и сделаешь, а он тебе пива выставит )
единственная сложность в этой задаче - это как раз все варианты и перебрать )
Отредактировано Nameless 16.05.12 16:46. Причина редактирования: Причина не указана.
|
|
|
Apache
подполковник

Возраст: 33
: Lublin, Polska
С нами с 10.03.09
Посты: 3776
|
тут дело не в пиве, а в спортивном интересе
|
|
|