Страницы: 1
RSS
Выбор из текста в ячейке данных по конкретным парметрам
 
Дано: база данных, где существует поле с текстовым значением, содержащим цифровую информацию. Пример :"квартира, назначение: жилое, кадастровый номер 50:20:0030102:1858, площадью 59,4 кв.м., кв. 138, адрес: Россия, Московская область, г. Одинцово, ул. Садовая, д. 24."

Задача - получить в соседних ячейках число кв.м.: "59,4", кадастровый номер:"50:20:0030102:1858" и город: "Одинцово". Как можно решить подобную проблему? Можно формулы, можно макрос
Изменено: Аналитик2 - 19.02.2020 12:46:06
 
В тексте всегда будут фрагменты "кв.м.:", "кадастровый номер:", "город"? Как должен выглядеть результат?
 
Цитата
Аналитик2 написал:
50:20:0030102:1858, площадью 59,4 кв.м., кв. 138, адрес
... несогласованность/несоответствие данных ... : ( ... в то же время и десятичный разделитель и разделитель списка ... : (
 
Набросок.
Площадь:
=--ЛЕВБ(ПСТР(A1;ПОИСК("площадью";A1)+9;20);ПОИСК(" ";ПСТР(A1;ПОИСК("площадью";A1)+9;20)))
Номер:
=ПСТР(A1;ПОИСК("Кадастровый номер";A1)+18;18)
Город:
=ЛЕВБ(ПСТР(A1;ПОИСК("г.";A1)+3;50);ПОИСК(",";ПСТР(A1;ПОИСК("г.";A1)+3;50))-1)

Подозреваю, что формат записи информации неодинаков ("пишем, как правая пятка советует" )
Поэтому нет смысла упрощать или что-тот еще придумывать без примера данных.
 
Доброе утро! Приложил исходник с примером подачи информации и с примером колонок, заполнение которых очень необходимо автоматизировать, т.к. объем большой.  Нужно учесть , что в ряде ячеек (около половины), информация вообще по другим обьектам, т.е они просто имеют значение ноль на выходе, не интересны в данной задаче. В примере база уже отфильтрована по необходимому признаку.  
 
Аналитик2, Сделайте нормальный пример - заполните ещё несколько строк. Непонятно, что делать в случае, когда в одной ячейке несколько площадей и кадастровых номеров, если отсутствует город и т. п.
 
aequit привел в исходнике несколько срок . Если значений нет - то просто 0
 
Макрос
 
Цитата
Аналитик2 написал:
Можно формулы, можно макрос
Не представляю, как это формулами можно сделать, набросал удэфэшек, проверяйте (конечно, не такой компактный и красивый, как выше, но тоже вариант):
Скрытый текст
 
Андрей_26 а у Вас макрос на 5 строк работает и останавливается. И дальше надо перезапускать. Правильно я понял?
 
aequit круто! Вроде ошибок нет. Просто с исходной информацией, к сожалению ничего не сделать- она всегда будет такой "вразнобой"...  Вам в личку сообщение сейчас скину
 
Цитата
Аналитик2 написал:
Андрей_26  а у Вас макрос на 5 строк работает и останавливается. И дальше надо перезапускать. Правильно я понял?
Странные люди, хотя бы вниз прокрутили и посмотрели бы.

P.S. Там где пусто - значит ничего не нашел.
 
Для площади UDF
Код
Function iSquare(cell$)
Dim mo As Object
Dim n As Integer
 With CreateObject("VBScript.RegExp")
     .Global = True
     .IgnoreCase = True
     .Pattern = "[\d ]+(,\d+)?(?= кв.м.)"
     If .Test(cell) Then
      Set mo = .Execute(cell)
      For n = 0 To mo.Count - 1
        iSquare = iSquare & mo(n) & ";" & Chr(10)
      Next
        iSquare = Left(iSquare, Len(iSquare) - 2)
     End If
 End With
End Function
 
Андрей_26 понял, спасибо!
Страницы: 1
Наверх