применение Like В VB Excel
Модератор: Naeel Maqsudov
-
- Сообщения: 163
- Зарегистрирован: 05 мар 2009, 11:27
Подскажите пожалуйста, как применить оператор Like , в VB для макроса в Excel.
покажите на примере цикла, как проверять есть ли в столбце A:A в каждой ячейке слово "мама", если да, то счетчик прибавляет 1.
Только не диапазоном пример нужен, а циклом, что бы просматривалась каждая ячейка.
Ну предположим в столбце A:A заполнено первых 5 ячеек.
Спасибо заранее
покажите на примере цикла, как проверять есть ли в столбце A:A в каждой ячейке слово "мама", если да, то счетчик прибавляет 1.
Только не диапазоном пример нужен, а циклом, что бы просматривалась каждая ячейка.
Ну предположим в столбце A:A заполнено первых 5 ячеек.
Спасибо заранее
- mc-black
- Сообщения: 250
- Зарегистрирован: 08 май 2008, 16:09
- Откуда: Россия, Нижний Новгород
- Контактная информация:
___DELETED___
На заказ: VBA, Excel mc-black@yandex.ru
- EducatedFool
- Сообщения: 197
- Зарегистрирован: 06 апр 2008, 14:03
- Откуда: Россия, Урал
- Контактная информация:
Код: Выделить всё
[color=darkblue]Sub[/color] test()
[color=darkblue]Dim[/color] cell [color=darkblue]As[/color] Range, ra [color=darkblue]As[/color] Range: Application.ScreenUpdating = [color=darkblue]False[/color]
[color=darkblue]Set[/color] ra = Range([A1], Range("A" & Rows.Count).End(xlUp))
[color=darkblue]For[/color] [color=darkblue]Each[/color] cell [color=darkblue]In[/color] ra.Cells
[color=darkblue]If[/color] cell [color=darkblue]Like[/color] "*" & "мама" & "*" [color=darkblue]Then[/color] i = i + 1
[color=darkblue]Next[/color] cell
Debug.Print i
[color=darkblue]End[/color] [color=darkblue]Sub[/color]
А лучше так:
Код: Выделить всё
[color=darkblue]Sub[/color] test2()
i = WorksheetFunction.CountIf([a1:a5], "мама")
Debug.Print i
[color=darkblue]End[/color] [color=darkblue]Sub[/color]
Код: Выделить всё
[color=darkblue]Sub[/color] test3()
txt = "13242342134[].,"
[color=darkblue]If[/color] txt [color=darkblue]Like[/color] "*[A-Z]*" [color=darkblue]Then[/color] MsgBox "Строка содержит английские буквы"
[color=darkblue]If[/color] txt [color=darkblue]Like[/color] "*[А-Я]*" [color=darkblue]Then[/color] MsgBox "Строка содержит русские буквы"
[color=darkblue]If[/color] txt [color=darkblue]Like[/color] "*[A-Z]*" [color=darkblue]Or[/color] txt [color=darkblue]Like[/color] "*[А-Я]*" [color=darkblue]Then[/color] MsgBox "Строка содержит русские или английские буквы"
[color=darkblue]If[/color] txt [color=darkblue]Like[/color] "*[A-Z]*" And txt [color=darkblue]Like[/color] "*[А-Я]*" [color=darkblue]Then[/color] MsgBox "Строка содержит русские и английские буквы"
[color=darkblue]If[/color] [color=darkblue]Not[/color] IsNumeric(txt) [color=darkblue]Then[/color] MsgBox "Строка не является числом"
[color=darkblue]If[/color] txt [color=darkblue]Like[/color] [color=darkblue]String[/color](Len(txt), "#") [color=darkblue]Then[/color] MsgBox "Строка состоит только из цифр"
[color=darkblue]End[/color] [color=darkblue]Sub[/color]
Макросы для Excel, Word, CorelDRAW. Быстро, профессионально, недорого. http://ExcelVBA.ru/
Благодарности принимаются на кошелёк WebMoney: R318574877619 и Яндекс.Деньги: 41001335672216
Благодарности принимаются на кошелёк WebMoney: R318574877619 и Яндекс.Деньги: 41001335672216
Еще добавлю. Допустимые спец. символы в маске оператора Like:
? - Любой одиночный символ
* - Ноль или более символов
# - Любая одиночная цифра (0–9).
[charlist] - Любой одиночный символ в классе символов (списке)
[!charlist] - Любой одиночный символ не принадлежащий классу символов
Поэтому, вместо достаточно написать
? - Любой одиночный символ
* - Ноль или более символов
# - Любая одиночная цифра (0–9).
[charlist] - Любой одиночный символ в классе символов (списке)
[!charlist] - Любой одиночный символ не принадлежащий классу символов
Поэтому, вместо
Код: Выделить всё
If cell Like "*" & "мама" & "*" Then...
Код: Выделить всё
If cell Like "*мама*" Then...
- Aent
- Сообщения: 1129
- Зарегистрирован: 01 окт 2006, 14:52
- Откуда: Saratov,Russia
- Контактная информация:
Ну и для полноты картины замечу, что образец в Like является регистрозависимым и на него не распространяется действие оператора
Option Compare Text
Поэтому "Мама" Like "мама" = False
Option Compare Text
Поэтому "Мама" Like "мама" = False
Андрей Энтелис,
aentelis.livejournal.com
aentelis.livejournal.com
-
- Сообщения: 163
- Зарегистрирован: 05 мар 2009, 11:27
Спасибо всем, всё работает как часы !!
- EducatedFool
- Сообщения: 197
- Зарегистрирован: 06 апр 2008, 14:03
- Откуда: Россия, Урал
- Контактная информация:
С каких это пор Like перестал слушаться директиву Option Compare Text?Aent писал(а):Ну и для полноты картины замечу, что образец в Like является регистрозависимым и на него не распространяется действие оператора
Option Compare Text
Поэтому "Мама" Like "мама" = False
Проверьте:
Код: Выделить всё
[color=darkblue]Option[/color] [color=darkblue]Compare[/color] [color=darkblue]Text[/color]
[color=darkblue]Sub[/color] test()
Debug.Print "Мама" [color=darkblue]Like[/color] "мама"
[color=darkblue]End[/color] [color=darkblue]Sub[/color]
The behavior of the Like operator depends on the Option Compare statement. The default string-comparison method for each module is Option Compare Binary.
Макросы для Excel, Word, CorelDRAW. Быстро, профессионально, недорого. http://ExcelVBA.ru/
Благодарности принимаются на кошелёк WebMoney: R318574877619 и Яндекс.Деньги: 41001335672216
Благодарности принимаются на кошелёк WebMoney: R318574877619 и Яндекс.Деньги: 41001335672216