Страницы: 1
RSS
Вытягивание значений до и после определенного слова
 
1. Как отделить текст до вариации написания "КВ"? И если его нет, то занести то что в ячейке.
2. Как отделить текст после вариации написания "КВ"? И если его нет то ячейку оставить пустую.
Кроме того, если есть сразу перед самим словом "кв" или сразу после слова  "кв" точка, запятая,
пробел то их нужно убрать. Т.е. после "Кв" это номер квартиры, а до номер дома.
 
Для п.1 как вариант:
Код
=СЖПРОБЕЛЫ(ЕСЛИОШИБКА(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ЛЕВСИМВ(A5;ПОИСК("КВ";A5)-1);".";"");",";"");A5))
Для п. 2 как вариант:
Код
=СЖПРОБЕЛЫ(ЕСЛИОШИБКА(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ЗАМЕНИТЬ(A5;1;НАЙТИ("КВ";A5)+1;"");".";"");",";"");A5))
 
Первый вариант прокатывает, но вот со вторым есть проблемы, а именно где нет кв там подставляет значение ячейки, но это поправимо, но вот где "кв." не в верхнем регистре, то вставляет полностью всю ячейку.
для 2го варианта подойдет
Код
=СЖПРОБЕЛЫ(ЕСЛИОШИБКА(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ЗАМЕНИТЬ(A5;1;ПОИСК("КВ";A5)+1;"");".";"");",";"");""))

Спасибо всем за помощь!
Изменено: Алексейко - 13.09.2019 22:12:32 (дополнения)
 
До:
Код
=СЖПРОБЕЛЫ(ЛЕВБ(A5;ПОИСК("кв";A5&"кв")-1-МАКС((ПСТР(A5;ПОИСК("кв";A5&"кв")-{1;2};1)<"/")*{1;2})))
После, но квартиры только числовые:
Код
=ЕСЛИ(ЕОШ(ПОИСК("кв";A5));"";ЕСЛИОШИБКА(-ПРОСМОТР(1;-ПРАВБ(A5;{1;2;3;4}));""))
 
Светлый, вариант "до" не прокатывает когда например однозначное значение номера дома. Например 3 или вариант "3кв14"
 
Цитата
Алексейко написал:
Данный вариант не прокатывает
Исправил:
Код
=СЖПРОБЕЛЫ(ЛЕВБ(A5;ПОИСК("кв";A5&"кв")-1-ЕСЛИОШИБКА(МАКС((ПСТР(A5;ПОИСК("кв";A5&"кв")-{1;2};1)<"/")*{1;2});)))
 
Код
Sub iКВ()
Dim i As Long
Dim iLastRow As Long
  iLastRow = Cells(Rows.Count, "A").End(xlUp).Row
  Range("B5:C" & iLastRow).ClearContents
 With CreateObject("VBScript.RegExp")
     '.Global = True
     .IgnoreCase = True
     .Pattern = "\,? ?КВ\.?"
   For i = 5 To iLastRow
     If .test(Cells(i, 1)) Then
       Cells(i, 2) = Left(Cells(i, 1), .Execute(Cells(i, 1))(0).FirstIndex)
       Cells(i, 3) = Mid(Cells(i, 1), .Execute(Cells(i, 1))(0).FirstIndex + .Execute(Cells(i, 1))(0).Length + 1)
     Else
       Cells(i, 2) = Cells(i, 1)
     End If
   Next
 End With
End Sub
Разделение в столбцы В и С
Страницы: 1
Наверх