Страницы: 1
RSS
Вытащить число в текстовой строке по признаку
 
добрый!
Есть большой список лидов.
В нем встречаются написание кв.м. / м2 / м2 (двойка в верхнем регистре, короче обозначает квадрат
Помогите с написанием макроса, чтобы он находил это совпадение, и брал значение площади слева от него.
Значение площади может быть от 1 до 99999

Или может есть идея по формуле?
Благодарю!
 
максимальная площадь 5-ти значная?
 
Цитата
V написал:
максимальная площадь 5-ти значная?
в целом, может быть и 100 000...
Иногда пишут слитно, иногда раздельно....
Но хотя бы типовые заявки оформляются по правилам, слитно. [И обычно да, редко бывает больше 5 цифр
 
Код
=ЕСЛИОШИБКА(ПСТР(ЛЕВСИМВ(A2;ПОИСК(ЮНИСИМВ(178);A2));МИН(ЕСЛИ(ЕЧИСЛО(-ПСТР(ЛЕВСИМВ(A2;ПОИСК(ЮНИСИМВ(178);A2));СТРОКА($1:$99);1));СТРОКА($1:$99)));ПРОСМОТР(2;1/ЕЧИСЛО(-ПСТР(ЛЕВСИМВ(A2;ПОИСК(ЮНИСИМВ(178);A2));СТРОКА($1:$99);1));СТРОКА($1:$99))-МИН(ЕСЛИ(ЕЧИСЛО(-ПСТР(ЛЕВСИМВ(A2;ПОИСК(ЮНИСИМВ(178);A2));СТРОКА($1:$99);1));СТРОКА($1:$99)))+1);ПСТР(ЛЕВСИМВ(A2;ПОИСК("м2";A2));МИН(ЕСЛИ(ЕЧИСЛО(-ПСТР(ЛЕВСИМВ(A2;ПОИСК("м2";A2));СТРОКА($1:$99);1));СТРОКА($1:$99)));ПРОСМОТР(2;1/ЕЧИСЛО(-ПСТР(ЛЕВСИМВ(A2;ПОИСК("м2";A2));СТРОКА($1:$99);1));СТРОКА($1:$99))-МИН(ЕСЛИ(ЕЧИСЛО(-ПСТР(ЛЕВСИМВ(A2;ПОИСК("м2";A2));СТРОКА($1:$99);1));СТРОКА($1:$99)))+1))
 
для данного примера отрабатывает все
Код
=--СЖПРОБЕЛЫ(ПРАВСИМВ(ПОДСТАВИТЬ(ПСТР(A2;МАКС(ЕСЛИОШИБКА(ПОИСК({"кв.м":"м²":"м2"};A2);))-8;8);" ";ПОВТОР(" ";10);1);10))
Лень двигатель прогресса, доказано!!!
 
О боги, великолепно! Благодарен безмерно!
Всем ответившим!
Изменено: vikttur - 26.06.2021 00:20:22
 
Рано начал радоваться)
НЕ срабатывает на
Баранец Олег / СПб / ООО Инфокарт ЛТД / 60 кв.м.
Видимо когда в самом конце стоит?
 
Код
=ЕСЛИОШИБКА(ЕСЛИОШИБКА(ПСТР(ЛЕВСИМВ(A2;ПОИСК(ЮНИСИМВ(178);A2));МИН(ЕСЛИ(ЕЧИСЛО(-ПСТР(ЛЕВСИМВ(A2;ПОИСК(ЮНИСИМВ(178);A2));СТРОКА($1:$99);1));СТРОКА($1:$99)));ПРОСМОТР(2;1/ЕЧИСЛО(-ПСТР(ЛЕВСИМВ(A2;ПОИСК(ЮНИСИМВ(178);A2));СТРОКА($1:$99);1));СТРОКА($1:$99))-МИН(ЕСЛИ(ЕЧИСЛО(-ПСТР(ЛЕВСИМВ(A2;ПОИСК(ЮНИСИМВ(178);A2));СТРОКА($1:$99);1));СТРОКА($1:$99)))+1);ПСТР(ЛЕВСИМВ(A2;ПОИСК("м2";A2));МИН(ЕСЛИ(ЕЧИСЛО(-ПСТР(ЛЕВСИМВ(A2;ПОИСК("м2";A2));СТРОКА($1:$99);1));СТРОКА($1:$99)));ПРОСМОТР(2;1/ЕЧИСЛО(-ПСТР(ЛЕВСИМВ(A2;ПОИСК("м2";A2));СТРОКА($1:$99);1));СТРОКА($1:$99))-МИН(ЕСЛИ(ЕЧИСЛО(-ПСТР(ЛЕВСИМВ(A2;ПОИСК("м2";A2));СТРОКА($1:$99);1));СТРОКА($1:$99)))+1));ПСТР(ЛЕВСИМВ(A2;ПОИСК("кв.";A2));МИН(ЕСЛИ(ЕЧИСЛО(-ПСТР(ЛЕВСИМВ(A2;ПОИСК("кв.";A2));СТРОКА($1:$99);1));СТРОКА($1:$99)));ПРОСМОТР(2;1/ЕЧИСЛО(-ПСТР(ЛЕВСИМВ(A2;ПОИСК("кв.";A2));СТРОКА($1:$99);1));СТРОКА($1:$99))-МИН(ЕСЛИ(ЕЧИСЛО(-ПСТР(ЛЕВСИМВ(A2;ПОИСК("кв.";A2));СТРОКА($1:$99);1));СТРОКА($1:$99)))+1))
 
скорректированная
Код
=--СЖПРОБЕЛЫ(ПРАВСИМВ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПСТР(A2;МАКС(ЕСЛИОШИБКА(ПОИСК({"кв.м":"м²":"м2"};A2);))-8;8);" ";ПОВТОР(" ";10);1);"/ ";ПОВТОР(" ";10);1);10))
Лень двигатель прогресса, доказано!!!
 
UDF
Код
Function iMetr(cell$)
 With CreateObject("VBScript.RegExp")
     .Global = True
     .Pattern = "\d+(?=\s?(м|кв.м))"
   If .test(cell) Then
     iMetr = .Execute(cell)(0)
   Else
     iMetr = ""
   End If
 End With
End Function
 
Благодарю! Все возьму на вооружение!
Изменено: vikttur - 26.06.2021 00:20:56
 
Или так (ОТСЮДА)
Изменено: msi2102 - 21.06.2021 14:27:13 (заменил файл, теперь с дробной частью)
Страницы: 1
Наверх