Модераторы: mihanik
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Простой парсинг строк в Excel, подскажите формулу 
:(
    Опции темы
iDeus
Дата 2.2.2013, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Deus vult
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 5.6.2008
Где: Vladivostok

Репутация: нет
Всего: нет



Здравствуйте, подскажите пожалуйста, как можно решить такую задачу:

В таблице Excel есть столбец со строками вида: 

«ЭРТ №2 Такой-то край, Такой-то район, в/г ВоенныйГородок № 42 Кот 174 Здание контрольно-пропускного пункта (караулка)(встроенная) №174» без кавычек. 

Необходимо в три соседних ячейки той же строки, выдернуть числа после первого, второго и третьего символа «№» соответственно.
Учитывая, что между № и цифрой может быть или не быть пробел. 

Число после первого № может быть однозначным или двузначным
Число после второго № может быть однозначным, двузначным, трехзначным или записанным через дробную черту (например 1/1)
Число после третьего № может быть однозначным, двузначным, трехзначными, записанным через дробную черту (например 44/252) или записанным с дополнительным значением в скобках (например 24(83)). 

Насколько я понял, нужно 3 формулы, для целевых ячеек, которые будут парсить строку и получать необходимые значения. 

Excel 7-10 года, Windows.
PM MAIL ICQ Skype GTalk   Вверх
Akina
Дата 2.2.2013, 21:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20580
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 26
Всего: 454



Напишите VBA-функцию, и всё...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Данкинг
Дата 2.2.2013, 21:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 1
Всего: 130



Функция MID в помощь.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
diadiavova
Дата 3.2.2013, 09:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 1
Всего: 142



На самом деле такие задачи лучше всего решаются регулярными выражениями. Можно подключить к проекту библиотеку Microsoft VBScript Regular Expressions и разобрать текст с её помощью. Документация по библиотеке легко находится в сети, ну вот к примеру
http://www.script-coding.com/WSH/RegExp.html
Для VBA просто малость адаптировать примеры и всё будет работать. Приведу простейший пример
Код

Sub FindNumbers()
    Dim re As New RegExp
    re.Pattern = "№\s?([0-9\(\)\/]+)"
    re.Global = True
    Dim matchColl As MatchCollection
    Set matchColl = re.Execute("ЭРТ №2 Такой-то край, Такой-то район, в/г " & _
"ВоенныйГородок № 42 Кот 174 Здание контрольно-пропускного пункта " & _
"(караулка)(встроенная) №174")
    Range("A1") = matchColl(0).SubMatches(0)
    Range("A2") = matchColl(1).SubMatches(0)
    Range("A3") = matchColl(2).SubMatches(0)
    
End Sub

Здесь я не задавал всех перечисленный условий, просто нашёл все последовательности из цифр, слешей и скобок, следующих за № и необязательным пробелом. Но думаю, что пример совсем несложно доработать.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование, связанное с MS Office"
mihanik staruha

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами



  • Несанкционированная реклама на форуме запрещена
  • Пожалуйста, давайте своим темам осмысленный, информативный заголовок. Вопль "Помогите!" таковым не является.
  • Чем полнее и яснее Вы изложите проблему, тем быстрее мы её решим.
  • Оставляйте свои записи в "Книге отзывов о работе администрации"
  • А вот тут лежит FAQ нашего подраздела


Если Вам понравилась атмосфера форума, заходите к нам чаще!
С уважением mihanik и staruha.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование, связанное с MS Office | Следующая тема »


 




[ Время генерации скрипта: 0.0945 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.