Vba excel сравнение строк без учета регистра
Ниже приведены операторы сравнения, определенные в Visual Basic.
Эти операторы сравнивают два выражения, чтобы определить, равны ли они, и если нет, то их отличия. Is , IsNot и Like подробно обсуждаются на отдельных страницах справки. Реляционные операторы сравнения подробно обсуждаются на этой странице.
Синтаксис
Компоненты
result
Обязательный элемент. Boolean Значение, представляющее результат сравнения.
expression1 , expression2
Обязательный. Любое выражение.
comparisonoperator
Обязательный. Любой оператор реляционного сравнения.
object1 , object2
Обязательный элемент. Имена ссылочных объектов.
string
Обязательный. Произвольное выражение String .
pattern
Обязательный. Любое String выражение или диапазон символов.
Комментарии
В следующей таблице содержится список реляционных операторов сравнения и условий, определяющих, result является ли True False .
Оператор | True , если | False , если |
---|---|---|
< (Меньше) | expression1 < expression2 | expression1 >= expression2 |
<= (Меньше или равно) | expression1 <= expression2 | expression1 > expression2 |
> (Больше) | expression1 > expression2 | expression1 <= expression2 |
>= (Больше или равно) | expression1 >= expression2 | expression1 < expression2 |
= (Равно) | expression1 = expression2 | expression1 <> expression2 |
<> (Не равно) | expression1 <> expression2 | expression1 = expression2 |
Оператор = также используется в качестве оператора присваивания.
Is Оператор, IsNot оператор и Like оператор имеют специальные функции сравнения, отличные от операторов в предыдущей таблице.
Сравнение чисел
При сравнении выражения типа Single с одним из типов Double Single выражение преобразуется в Double . это поведение противоположено поведению, обнаруженному в Visual Basic 6.
Аналогично, при сравнении выражения типа Decimal с выражением типа Single или Double Decimal выражение преобразуется в тип Single или Double . Для Decimal выражений любое значение дробной части меньше 1E-28 может быть потеряно. Такая утрата дробных значений может привести к тому, что два значения будут сравниваться как равные, если это не так. По этой причине следует соблюдать осторожность при использовании равенства ( = ) для сравнения двух переменных с плавающей запятой. Безопаснее проверить, является ли абсолютное значение разницы между двумя числами меньше, чем небольшая допустимая погрешность.
Точность чисел с плавающей запятой
При работе с числами с плавающей запятой следует помнить, что они не всегда имеют точное представление в памяти. Это может привести к непредвиденным результатам некоторых операций, таких как сравнение значений и оператор Mod. Дополнительные сведения см. в разделе Устранение неполадок типов данных.
Сравнение строк
При сравнении строк строковые выражения оцениваются на основе их порядка сортировки в алфавитном порядке, который зависит от Option Compare параметра.
Option Compare Binary базовые сравнения строк в порядке сортировки, производном от внутренних двоичных представлений символов. Порядок сортировки определяется кодовой страницей. В следующем примере показан типичный порядок двоичной сортировки.
A < B < E < Z < a < b < e < z < À < Ê < Ø < à < ê < ø
Option Compare Text сравнения строк при сравнении без учета регистра, порядок сортировки текста определяется языковым стандартом приложения. При задании Option Compare Text и сортировке символов в предыдущем примере применяется следующий порядок сортировки текста:
Зависимость от локали
При установке Option Compare Text результат сравнения строк может зависеть от языкового стандарта, в котором выполняется приложение. Два символа могут сравниваться как одинаковые в одном языковом стандарте, но не в другом. Если вы используете сравнение строк для принятия важных решений, например, принимаете ли вы попытку входа в систему, вы должны быть извещены о конфиденциальности языкового стандарта. Рекомендуется либо задать Option Compare Binary , либо вызвать метод StrComp , который учитывает языковой стандарт.
Программирование без типов с помощью реляционных операторов сравнения
Использование реляционных операторов сравнения с Object выражениями не допускается в Option Strict On . Если Option Strict имеет значение Off , а expression1 либо expression2 является Object выражением, типы времени выполнения определяют, как они сравниваются. В следующей таблице показано, как сравниваются выражения и результат сравнения, в зависимости от типа операндов среды выполнения.
Если операнды | Сравнение: |
---|---|
Как String | Сравнение сортировки на основе характеристик сортировки строк. |
Оба числовых | Объекты, преобразованные в Double , числовое сравнение. |
Один числовой и один String | String Преобразуется в Double и выполняется числовое сравнение. Если объект String не может быть преобразован в Double , InvalidCastException создается исключение. |
Один или оба являются ссылочными типами, отличными от String | Возникает исключение InvalidCastException. |
Числовые сравнения обрабатываются Nothing как 0. Сравнения строк обрабатываются Nothing как "" (пустая строка).
Перегрузка
Реляционные операторы сравнения ( < . <= , > , >= , = , <> ) могут быть перегружены. Это означает, что класс или структура могут переопределять их поведение, когда операнд имеет тип этого класса или структуры. Если в коде используются какие-либо из этих операторов в таком классе или структуре, убедитесь, что вы понимаете переопределенное поведение. Для получения дополнительной информации см. Operator Procedures.
Обратите внимание, что оператор = можно перегружать только как оператор реляционного сравнения, а не как оператор присваивания.
Пример
В следующем примере показаны различные варианты использования реляционных операторов сравнения, которые используются для сравнения выражений. Реляционные операторы сравнения возвращают Boolean результат, который представляет, принимает ли указанное выражение значение True . При применении > < операторов and к строкам сравнение выполняется с использованием обычного алфавитного порядка сортировки строк. Этот порядок может зависеть от настроек языкового стандарта. Учитывается ли сортировка с учетом регистра или не зависит от параметра параметра Compare .
В предыдущем примере первое сравнение возвращает, False а оставшиеся сравнения возвращают True .
Объявляет метод сравнения по умолчанию для использования при сравнении строковых данных.
Синтаксис
Компоненты
Термин | Определение |
---|---|
Binary | Необязательный элемент. Сравнения строк основываются на порядке сортировки, производном от внутренних двоичных представлений символов. |
Комментарии
Если используется оператор Option Compare , он должен быть указан в файле до всех прочих операторов.
Оператор Option Compare указывает метод сравнения строк ( Binary или Text ). Метод сравнения текста по умолчанию — Binary .
Сравнение Binary сравнивает числовое значение Юникода каждого символа в каждой строке. Сравнение Text сравнивает каждый символ Юникода на основе его лексического значения в текущем языке.
В Microsoft Windows порядок сортировки определяется кодовой страницей. Дополнительные сведения см. в разделе Кодовые страницы.
В следующем примере символы кодовой страницы ANSI 1252 сортируются с помощью оператора Option Compare Binary , создающего двоичный порядок сортировки.
A < B < E < Z < a < b < e < z < À < Ê < Ø < à < ê < ø
Когда эти же символы этой же кодовой страницы сортируются с помощью Option Compare Text , получается следующий порядок сортировки текста.
Если оператор Option Compare отсутствует
если исходный код не содержит Option Compare инструкцию, то используется параметр Option Compare на странице компиляция Project конструктора (Visual Basic) . При использовании компилятора командной строки используется параметр, заданный параметром компилятора -оптионкомпаре .
Отображаемые на компьютере имена или расположения некоторых элементов пользовательского интерфейса Visual Studio могут отличаться от указанных в следующих инструкциях. Это зависит от имеющегося выпуска Visual Studio и используемых параметров. Дополнительные сведения см. в разделе Персонализация среды IDE.
Чтобы включить Option Compare в среде разработки
Выберите проект в обозревателе решений. В меню Проект выберите пункт Свойства.
Откройте вкладку Компиляция.
Задайте значение в поле параметр сравнения .
При создании проекта параметр Option Compare на вкладке Компиляция имеет значение параметр Option Compare в диалоговом окне Параметры . Чтобы изменить этот параметр, в меню Сервис выберите пункт Параметры. В диалоговом окне Параметры разверните узел Проекты и решения и выберите пункт Параметры Visual Basic по умолчанию. Начальным значением по умолчанию в VB по умолчанию является binary.
Чтобы включить Option Compare в командной строке
- Включите параметр компилятора -оптионкомпаре в команду vbc .
Пример 1
В следующем примере оператор Option Compare используется, чтобы задать двоичное сравнение в качестве метода сравнения строк по умолчанию. Чтобы использовать этот код, раскомментируйте оператор Option Compare Binary и поместите его в начало файла исходного кода.
Пример 2
В следующем примере оператор Option Compare используется, чтобы задать сортировку текста без учета регистра в качестве метода сравнения строк по умолчанию. Чтобы использовать этот код, раскомментируйте оператор Option Compare Text и поместите его в начало файла исходного кода.
Возвращает переменную Variant (Integer), показывающую результат сравнения строк.
Синтаксис
StrComp(string1, string2, [ сравнить ])
Синтаксис функции StrComp содержит следующие именованные аргументы:
Part | Описание |
---|---|
строка1 | Обязательно. Любое допустимое строковое выражение. |
строка2 | Обязательно. Любое допустимое строковое выражение. |
compare | Необязательно. Задает тип сравнения строк. Если аргумент сравнения является Null,возникает ошибка. Если аргумент сравнение опущен, тип сравнения определяется параметром Option Compare. |
Параметры
Аргумент compare может принимать следующие значения:
Константа | Значение | Описание |
---|---|---|
vbUseCompareOption | –1 | Выполняет сравнение, используя параметр оператора Option Compare. |
vbBinaryCompare | 0 | Выполняется двоичное сравнение. |
vbTextCompare | 1 | Выполняется текстовое сравнение. |
vbDatabaseCompare | 2 | Только Microsoft Access. Выполняется сравнение на основе сведений из базы данных. |
Возвращаемые значения
Функция StrComp имеет следующие возвращаемые значения:
Если | StrComp возвращает |
---|---|
string1 меньше, чем string2 | –1 |
string1 равна string2 | 0 |
string1 больше, чем string2 | 1 |
string1 или string2 равна Null | Null |
Пример
В этом примере используется функция StrComp для возврата результатов сравнения строк. Если третий аргумент — 1, выполняется текстовое сравнение; если третий аргумент 0 или пропущен, выполняется двоичное сравнение.
См. также
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Написать программу сравнения строк без учета регистра
Доброго времени суток! помагите плз!)Написать программу, которая запрашивает у пользователя строки.
Написать программу, определяющую является ли данная строка палиндромом (без учета регистра)
Задание: 1.Написать программу, определяющую является ли данная строка палиндромом (без учета.
Написать программу, определяющую является ли данная строка палиндромом (без учета регистра)
Написать программу, определяющую является ли данная строка палиндромом (без учета регистра) Все.
Написать программу,определяющую является ли строка палиндром без учета регистра, во free pascal
if ord(s) in or ord(s) in then s := chr(ord(s) - 32); if.
Решение
Спасибо, первый вариант идеально подошел, а другие почему-то не срабатываютОксана33, Есть предложение - отказаться от цикла, к примеру, если заранее известно, что i = 7 , то :
Если же количество ячеек может меняться, то вместо [] можно использовать Evaluate() :
Спасибочки, но этот макрос меняет весь заданный диапазон [G2:G7], а мне нужно отдельно по каждой строкено все равно спасибо
Если "проблема" только в том, что после выполнения моего варианта, в ячейках появляются 0, то :
- их можно скрыть, если установить соответствующий формат, например Основной;-Основной;
- их можно скрыть, используя условное форматирование
- их можно скрыть, если в меню Сервис выбрать команду Параметры, затем закладку Вид и снять "флажок" Нулевые значения
- их можно просто программно удалить [G2:G7].Replace 0, "", xlWhole
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Вывести слова, начинающиеся с букв «a» «b» «c» без учета регистра и без повторений
Здравствуйте, нуждаюсь в вашей помощи! Требуется: Открыть текстовый файл для чтения TEXT1.TXT. .
Без учета регистра
Код полностью рабочий: Но как как в это коде обрабатывать без учета регистра букв, сейчас.
Проверка без учета регистра
Доброго времени суток! Есть строка string codtext="МАША",codkey="маша"; Как проверить: if.
Поиск без учета регистра
Здравствуйте. Подскажите, как сделать поиск по бд через TextBox чтобы не учитывался регистр.
В нашей работе мы обычно проводим сравнения каждый раз. Эти сравнения могут быть по номерам текстов или любого рода данных. Что касается чисел, мы уже знаем, как мы делаем сравнение. Есть много математических методов для этого. Но как сравнить две строки, какой результат мы получим. STRCOMP в VBA - это функция сравнения строк. Он сравнивает две строки друг с другом и дает нам результат. Однако результат сравнения не является истинным или ложным. Есть три способа сравнить две строки в функции STRCOMP. Прежде чем мы углубимся в это, давайте посмотрим синтаксис этой функции.
Синтаксис StrComp в Excel VBA
Синтаксис для функции VBA StrComp в Excel выглядит следующим образом:
Строка 1 - это строка, которая будет сравниваться со строкой 2. Методы сравнения являются необязательными для этой функции. Теперь давайте перейдем к методам сравнения в этой функции. В этой функции есть три типа методов сравнения:
Теперь, когда мы используем эту функцию, какой результат мы получим? Мы не получим истину или ложь с помощью этой функции сравнения. Вместо этого мы можем получить любой из следующих результатов:
- 0, если строки равны друг другу.
- 1, если строки не совпадают друг с другом.
- -1, если первая строка меньше строки 2.
- NULL, если для строки 1 и 2 нет значения.
Мы рассмотрим несколько различных примеров и посмотрим, как выполняется сравнение строк в VBA.
Как использовать функцию VBA StrComp в Excel?
Мы узнаем, как использовать функцию VBA StrComp с примером в Excel.
Вы можете скачать этот шаблон VBA StrComp Excel здесь - Шаблон VBA StrComp Excel
Пример № 1 - VBA StrComp
Давайте сначала используем метод двоичного сравнения для нашего примера. Мы возьмем от пользователя две строковые входные данные, одну в нижнем регистре, а другую - в верхнем, и сравним их.
Шаг 1: Из вкладки разработчика, а затем из Visual Basic, чтобы войти в VB Editor.
Шаг 2. Вставьте модуль с вкладки «Вставка», чтобы начать писать коды в VBA.
Шаг 3: Дважды щелкните модуль на вкладке проекта и объявите подфункцию следующим образом.
Код:
Шаг 4: Нам нужно определить три переменные как строки, две будут содержать наш ввод, а другая будет хранить результат.
Код:
Шаг 5: В переменной A и B примите ввод от пользователя для двух строк следующим образом.
Код:
Шаг 6: Сравните обе строки в переменной A и B и сохраните значение в C, используя функцию STRCOMP, и используйте метод сравнения в качестве двоичного сравнения.
Код:
Шаг 7: Показать вывод, сохраненный в переменной C, используя функцию Msgbox.
Код:
Шаг 8: Теперь нажмите F5 для выполнения кода и введите две строки ввода следующим образом:
Шаг 9: Смотрите окончательный результат следующим образом.
В результате мы получаем 1, потому что в двоичном сравнении обе строки не равны, так как одна строка находится в верхнем регистре, а другая - в нижнем.
Пример №2 - VBA StrComp
Теперь давайте воспользуемся другим методом сравнения - VbTextCompare и посмотрим, какие результаты мы получим для тех же данных, которые мы предоставили выше.
Шаг 1: В модуль, который мы вставили ранее, дважды щелкните его на вкладке проекта и объявите подфункцию, чтобы начать работу над вторым примером следующим образом.
Код:
Шаг 2: Нам нужно определить три переменные в виде строк, две будут содержать наш ввод, а другая будет хранить результат.
Код:
Шаг 3: В переменной A и B примите ввод от пользователя для двух строк следующим образом.
Код:
Шаг 4: Сравните обе строки в переменных A и B и сохраните значение в C с помощью функции STRCOMP и используйте метод сравнения в качестве текстового сравнения.
Код:
Шаг 5: Показать вывод, сохраненный в переменной C, используя функцию Msgbox.
Код:
Шаг 6: Теперь нажмите F5 и введите две строки ввода следующим образом.
Шаг 7: Смотрите окончательный результат следующим образом.
В результате мы получаем 0, так как сравнение текста не учитывает регистр, что означает, что строки равны.
Пример № 3 - VBA StrComp
Теперь у меня есть некоторые данные на листе 1 следующим образом. Я хочу выяснить, похожи ли данные в столбце A и столбце B друг на друга или нет. Посмотрите на данные ниже.
Шаг 1: Давайте поработаем в третьем примере для наших данных следующим образом.
Код:
Шаг 2: Активируйте лист 1, чтобы мы могли использовать его свойства.
Код:
Шаг 3: Объявите две переменные, одну как целое число, которое будет использоваться для цикла, и одну как строку, которая будет использоваться для хранения результата сравнения.
Код:
Шаг 4: Напишите следующий код для сравнения и используйте цикл for.
Код:
Шаг 5: Запустите приведенный выше код и посмотрите результат на листе 1 следующим образом.
Ни одна из строк не была равной в сравнении.
То, что нужно запомнить
- Это функция сравнения.
- Возвращает 0, 1, -1 или NULL в результате не true или false.
- Если мы не предоставляем какой-либо из методов сравнения, то по умолчанию используется метод сравнения VbBinaryCompare.
- Метод сравнения является необязательным аргументом для этой функции.
Рекомендуемые статьи
Это руководство по VBA StrComp. Здесь мы обсудим, как использовать функцию Excel VBA StrComp вместе с практическими примерами и загружаемым шаблоном Excel. Вы также можете просмотреть наши другие предлагаемые статьи -
Читайте также: