Страницы: 1
RSS
поиск текста в любом регистре, LCase не помогает
 
Задача простейшая - найти слово в любом написании: Стол, СТОЛ, стол, сТОЛ и т.д.
Но банальная конструкция ищет только "стол".
Я думал, LCase как раз для этого - любое написание привести к общему знаменателю и потом искать, но нет
Код
For i = 2 To y
    If LCase(InStr(Cells(i, 1), "стол") Then
 
Код
 If InStr(LCase(Cells(i, 1)), LCase("стол")) Then
Изменено: Nordheim - 31.01.2020 09:59:11
"Все гениальное просто, а все простое гениально!!!"
 
Доброе время суток
Цитата
ixet написал:
LCase(InStr(Cells(i, 1), "стол")
)
В силу написания LCase работает с тем, что ей вернула InStr. InStr возвращает начальную позицию вхождения заданной подстроки в данной строке. Тогда какие претензии к LCase?
Изменено: Андрей VG - 31.01.2020 09:58:11
 
Nordheim,
А зачем второй LCase?
Код
If InStr(LCase(Cells(i, 1)), "стол") Then
 
Kuzmich, Я  сначала второй написал, затем в первый подставил. Дык что б наверняка  :D
По сути не нужен в данном случае, но если во втором случае кто то напишет "Стол", то авось пригодится  ;)
Изменено: Nordheim - 31.01.2020 10:24:00
"Все гениальное просто, а все простое гениально!!!"
 
Не понимаю зачем тут вообще приводить что-то к единому регистру - это затратная операция. Особенно если учесть, что InStr позволяет установить параметр, который будет игнорировать регистр:
Код
instr(1,Cells(i, 1), "стол",vbTextCompare)
vbTextCompare = поиск текста без учета регистра
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Спасибо, разобрался! Работают все варианты
Страницы: 1
Наверх