Страницы: 1
RSS
Поиск цифровых значений в ячейке, Поиск цифрового значения в ячейке при определенных условиях
 
Добрый день.
Подскажите как мне из ячейки вычленить определенные цифровые значение (размер) идущие после слов "Розмірний ряд" но бывают и другие вариации то есть чтобы в формулу можно было добавить другие варианты поиска, в файле во вложении варианты как может все это дело выглядеть и что нужно в итоге. Если что-то выйдет у кого-то заранее большое спасибо.
 
UDF
Код
Function iDigits(cell$)
 With CreateObject("VBScript.RegExp")
     .Global = True
     .IgnoreCase = True
     .Pattern = "\d+(\,?\d+)?[-+](\d+(\,?\d+)?)?"
     iDigits = .Execute(cell)(0)
 End With
End Function
 
Kuzmich, подскажите как мне его использовать у себя?)
 
Функцию в стандартный модуль, а в ячейке (например B1) пишите =iDigits(A1) и протягиваете вниз
 
Kuzmich,виходит ошибка (#имя)
 
Приложите пример с вставленным макросом
 
Kuzmich,во вложении
 
Код надо поместить в стандартный модуль, а не в модуль листа
 
Kuzmich,спасибо все работает , и есть еще вопросик как мне добавить еще параметр поиска например есть вот такое и не находит 100/200
 
Добавьте в паттерн
Код
.Pattern = "\d+(\,?\d+)?[-+/](\d+(\,?\d+)?)?"
 
Kuzmich, Спасибо большое за функцию обрабатывает аж 94% от общей информации в ячейках , в основном не обрабатываются те значение в которых после цифр нет пробела и сразу идут данные , подскажите ниже варианты которые не обработаны , есть возможность добавить данные условия? Если нету все равно заранее спасибо.

Варианты:
(new word) 350gr+ , -200гр/шт , :+0,5КГ , +1,0КГ , 250гр+- ,
 
Цитата
Варианты:
(new word) 350gr+ , -200гр/шт , :+0,5КГ , +1,0КГ , 250гр+- ,
Включите все возможные варианты в пример
 
Kuzmich, во вложении
Изменено: Razdva - 17.10.2019 11:51:33
 
Razdva, Попробуйте так
Код
Sub iDigits_()
Dim i As Long
Dim iLastRow As Long
Dim iString As String
 iLastRow = Cells(Rows.Count, 1).End(xlUp).Row
 With CreateObject("VBScript.RegExp")
     .Global = True
     .IgnoreCase = True
    Range("C1:C" & iLastRow).ClearContents
  For i = 1 To iLastRow
    .Pattern = "\d+(\,?\d+)?[-+/ ](\d+(\,?\d+)?)?"
    iString = Split(LCase(Cells(i, "A")), "розмірний ряд")(1)
    If .Test(iString) Then
      Cells(i, "C") = .Execute(iString)(0)
    Else
      .Pattern = "\d+(\,?\d+)? ?(?=кг|гр|gr|разніе)"
      If .Test(iString) Then
        Cells(i, "C") = .Execute(iString)(0)
      End If
    End If
  Next
 End With
End Sub

Или UDF
Код
Function iDigits(cell$)
 With CreateObject("VBScript.RegExp")
     .Global = True
     .IgnoreCase = True
     .Pattern = "\d+(\,?\d+)?[-+/ ]?(\d+(\,?\d+)?)? ?(?=шт|г|кг|гр|gr|разніе)"
     iDigits = .Execute(Split(LCase(cell), "розмірний ряд")(1))(0)
 End With
End Function
Изменено: Kuzmich - 17.10.2019 13:48:57
 
Kuzmich, спасибо огромное все работает если не сложно подскажи еще 1 момент
Код
iDigits = .Execute(Split(LCase(cell), "розмірний ряд")(1))(0) 

Я так понимаю функция начинает искать значения после "розмірний ряд" ,  я могу как-то добавить дополнительное условие что-бы например если ("розмірний ряд" этого нет в ячейке  искало например " штука")
 
Цитата
искало например " штука"
Покажите конкретную строку
 
Kuzmich, во вложении
 
Цитата
4тутт оже разніе сим1561651волі штука +1,0КГ  разніе е5щ345345е символі  
А выделить надо 1,0КГ
Какие еще будут размерности?
 
Kuzmich, А выделить надо 1,0КГ - да , все так же как с условием "розмірний ряд" только вместо может бить "штука"
 
Код
Function iDigits(cell$)
 With CreateObject("VBScript.RegExp")
     .Global = True
     .IgnoreCase = True
     .Pattern = "\d+(\,?\d+)?[-+/ ]?(\d+(\,?\d+)?)? ?(?=шт|г|кг|гр|gr|разніе)"
     If InStr(cell, "розмірний ряд") > 1 Then
       iDigits = .Execute(Split(LCase(cell), "розмірний ряд")(1))(0)
     ElseIf InStr(cell, "штука") > 1 Then
       iDigits = .Execute(Split(LCase(cell), "штука")(1))(0)
    End If
 End With
End Function
Страницы: 1
Наверх