Сравнение строк Vba Excel
Обновлено: 24.11.2024
Для сравнения строк в Excel следует использовать функцию StrComp VBA. StrComp VBA может выполнять сравнение строк как с учетом регистра, так и без учета регистра. В этом руководстве вы познакомитесь с примером StrComp и узнаете, как использовать его для сравнения двух строк в VBA.
Пример
Демонстрация функции StrComp
Создавайте мощные макросы с помощью нашего бесплатного комплекта разработчика VBA
Подобные уроки могут быть сложными. Вот почему мы создали наш бесплатный комплект разработчика VBA и нашу большую книгу макросов Excel VBA в дополнение к этому руководству. Возьмите их ниже, и вы сразу же сможете писать мощные макросы.
Учебник
Ввод StrComp
Функция VBA StrComp возвращает целое число и принимает три аргумента:
Обязательные значения String1 и String2 должны быть строковыми типами данных или, по крайней мере, типами данных, которые оцениваются как строковые выражения (например, строковый вариант).
Теперь подробнее рассмотрим аргумент Compare, который является необязательным. Здесь все становится интереснее. Вот неполный список констант сравнения:
Константа | Описание |
---|---|
vbBinaryCompare | Сравнивает двоичный эквивалент ваших строк. Используйте это для выполнения сравнения с учетом регистра. С помощью этого метода «John Smith» не равно «john smith» |
vbTextCompare | Сравнивает строковый текст, независимо от буквенный регистр. Используйте это, чтобы игнорировать регистр и выполнять сравнение без учета регистра. В этом методе «Джон Смит» равно «Джон Смит» |
vbUseCompareOption | Опция по умолчанию — обычно двоичная. Чтобы изменить значение по умолчанию, вы должны изменить оператор Option Compare. Например, добавьте строку Option Compare Text в верхнюю часть модуля, чтобы по умолчанию использовать текстовое сравнение, а не бинарное сравнение. |
Вывод StrComp
При сравнении строк функция StrComp может дать 3 допустимых выходных значения.
Результат | Описание |
---|---|
-1 | String1 меньше чем String2 |
0 | String1 равно String2 |
1 | Строка 1 больше, чем строка 2 |
Сравнение строк странное — я не буду вдаваться в подробности. Если вы похожи на меня, вас редко интересует, является ли одна строка «больше» другой. Вы, конечно, можете использовать его, чтобы определить, какая строка больше, но я, и я подозреваю, что вы будете, нахожу более полезным просто проверить, равны ли строки.
Чтобы проверить, равны ли строки, вам нужно только увидеть, является ли полученное целое число равным 0. Если это не так, строки не равны! Вы можете выполнить эту проверку с помощью оператора If Then или оператора Select Case, как я сделал в примере StrCompDemo.
Объяснение StrCompDemo
Давайте применим мой пример макроса StrComp к двум спискам курортов Disney Deluxe. Макрос сравнит строки в двух списках и сообщит, равны ли они.
Исходный список курортов Диснея класса люкс
Сначала мы выполним макрос как есть. Обратите внимание, что аргумент Compare имеет значение vbBinaryCompare. Что происходит?
Результаты сравнения vbBinary
Двоичное сравнение сообщает, что все совпадает, кроме строки 4. Посмотрите, как в ячейке A4 первые буквы в слове «Современный курорт» заглавные, а в ячейке B4 текст остается строчным. Если вы используете опцию бинарного сравнения, vbBinaryCompare, строки должны быть полностью идентичными, чтобы получить совпадение. Включая заглавные и строчные буквы!
Что, если вы установите аргумент Compare равным vbTextCompare . Изменить строку
Запустите макрос еще раз. Что теперь происходит?
Результаты vbTextCompare
В каждой ячейке в столбце C теперь указано "Совпадение", потому что при сравнении текста не учитывается регистр букв! Строка «abc» совпадает с «ABC» при использовании vbTextCompare.
Это полезно, поскольку означает, что вам больше не нужно беспокоиться о том, используете ли вы (или ваш пользователь) заглавные буквы при вводе. До того, как я обнаружил функцию VBA StrComp, я заставлял все свои строки в верхнем регистре, UCase(String1) при сравнении строк. Мне больше не нужно этого делать, и вам тоже!
Идеи для приложений
Вы можете использовать StrComp везде, где вам нужно сравнить строки.Вот несколько идей, которые помогут вам проявить творческий потенциал.
- Сравнить списки адресов электронной почты
- Сопоставление столбца имен сотрудников с другими атрибутами сотрудников
- Поскольку теперь вы можете управлять регистром букв, создавайте интерактивные информационные панели с текстовыми подсказками для ввода пользователем.
- Проделайте то же самое для интерактивных пользовательских форм VBA.
- Почему бы не изменить мой пример сравнения столбцов и заменить уравнения UCase эквивалентными уравнениями StrComp?
Умение работать со строками, не беспокоясь о прописных и строчных буквах, является важным навыком, который вы только что укрепили, прочитав мое руководство StrComp VBA.
Надеюсь, вы найдете функцию StrComp такой же увлекательной, как и я. Я сравниваю строки с помощью VBA больше, чем что-либо еще, что я делаю в Excel. Функция StrComp VBA упрощает задачу!
Когда вы будете готовы вывести свой VBA на новый уровень, подпишитесь, заполнив форму ниже.
Готовы делать больше с VBA?
Мы собрали гигантский PDF-файл с более чем 300 готовыми макросами и хотим, чтобы вы получили его бесплатно. Введите свой адрес электронной почты ниже, и мы вышлем вам копию вместе с нашим комплектом разработчика VBA, полным советов, приемов и ярлыков VBA.
Прежде чем мы начнем, я хочу сообщить вам, что мы разработали набор шпаргалок по VBA, чтобы вам было проще писать лучшие макросы. Мы включили более 200 советов и 140 примеров макросов, поэтому в них есть все, что вам нужно знать, чтобы стать лучшим программистом VBA.
Возвращает вариант (целое число), указывающий результат сравнения строк.
Синтаксис
StrComp(строка1, строка2, [ сравнить ])
Синтаксис функции StrComp имеет следующие именованные аргументы:
Часть | Описание |
---|---|
string1 | Обязательный. Любое допустимое строковое выражение. |
string2 | Обязательно. Любое допустимое строковое выражение. |
compare | Необязательно. Указывает тип сравнения строк. Если аргумент compare имеет значение Null, возникает ошибка. Если параметр compare опущен, параметр Option Compare определяет тип сравнения. |
Настройки
Константа | Значение | Описание |
---|---|---|
vbUseCompareOption | -1 | Выполняет сравнение, используя настройку оператора Option Compare. |
vbBinaryCompare | 0 | Выполняет бинарное сравнение. |
vbTextCompare | 1 td> | Выполняет текстовое сравнение. |
vbDatabaseCompare | < td style="text-align: left;">2Только Microsoft Access. Выполняет сравнение на основе информации из вашей базы данных. |
Возвращаемые значения
Функция StrComp возвращает следующие значения:
Если | StrComp возвращает |
---|---|
string1 меньше, чем string2 | -1 |
string1 равно string2 | 0 |
string1 больше, чем string2 | 1 |
string1 или string2 равно Null | Null | tr>
Пример
В этом примере функция StrComp используется для возврата результатов сравнения строк. Если третий аргумент равен 1, выполняется текстовое сравнение; если третий аргумент равен 0 или опущен, выполняется двоичное сравнение.
См. также
Поддержка и обратная связь
Есть вопросы или отзывы об Office VBA или этой документации? См. раздел Поддержка и отзывы об Office VBA, чтобы узнать, как получить поддержку и оставить отзыв.
В повседневной жизни мы часто сравниваем.Сравнения между двумя людьми, сравнение между двумя продуктами, сравнение между двумя числами и, ради этого, сравнение между двумя строками. Хотя для сравнения двух чисел у нас есть различные математические функции, такие как оператор равенства, в этой лекции мы рассмотрим, как сравнивать строки в VBA в Excel. Обычный оператор равенства выдает либо ИСТИНА, либо ЛОЖЬ в результате сравнения двух чисел или текстов. В VBA у нас есть функция STRCOMP, которая определяет сравнение двух строк. Однако результаты не такие, как у оператора равенства (ИСТИНА/ЛОЖЬ), вместо этого у нас есть три возможных результата, основанных на сравнении. Мы подробно рассмотрим это в следующем разделе этой статьи. Давайте посмотрим на синтаксис и работу функции VBA STRCOMP.
Синтаксис функции VBA StrComp:
Оценка, Hadoop, Excel, мобильные приложения, веб-разработка и многое другое.
String1 и String2 — это два строковых значения, которые мы хотели сравнить друг с другом. VbCompareMethod — это метод сравнения двух предоставленных строк. Ниже перечислены три типа сравнения: Эта функция может возвращать три возможных результата следующим образом: Ниже приведены примеры сравнения строк Excel VBA: Вы можете скачать это сравнение строк VBA — шаблон Excel здесь — Сравнение строк VBA — шаблон Excel Давайте рассмотрим несколько примеров функции VBA StrComp. Для этого выполните следующие действия: Шаг 1. Откройте новый файл Excel и нажмите Alt + F11, чтобы перейти к редактору Visual Basic. Вы можете перейти на вкладку «Разработчики» и нажать кнопку Visual Basic, чтобы получить тот же результат.
Шаг 2. Вставьте новый модуль в редактор Visual Basic (VBE). Перейдите на вкладку «Вставка» > выберите «Модуль». Обучение VBA (3 курса, более 12 проектов) 3 онлайн-курса | 13 практических проектов | 45+ часов | Поддающийся проверке сертификат об окончании | Пожизненный доступ
Шаг 3. Определите новую подпроцедуру, используя предложение Sub-End, которое может содержать ваш макрос. Код: Шаг 4. Определите две новые переменные String1 и String2 с типом данных в виде строки, которые можно использовать для хранения строковых значений, которые мы хотели сравнить друг с другом. Код:
Шаг 5. Присвойте текстовые значения двум созданным нами переменным с помощью оператора присваивания. Я назначу значения как «Добро пожаловать в VBA!» и «ДОБРО ПОЖАЛОВАТЬ В VBA!» соответственно двум переменным. Код:
Шаг 6. Теперь определите новую переменную с именем CompResult в виде строки. Эта переменная будет использоваться для хранения результата функции StrComp, которая сравнивает, равны ли две строки или нет. Код:
Шаг 7. Теперь используйте оператор присваивания, чтобы присвоить значение функции StrComp этой вновь определенной переменной. Код:
Шаг 8. Укажите аргументы, которые требуются для этого функционального оператора. Используйте String1 в качестве первого аргумента. Переменную String2 в качестве второго аргумента и используйте vbTextCompare в качестве аргумента сравнения для этого оператора. Код:
Шаг 9. Используйте свойство VBA MsgBox для отображения вывода оператора StrComp, который хранится в переменной CompResult. Код:
Шаг 10. Запустите этот код, нажав F5 или кнопку "Выполнить", расположенную на самой верхней ленте редактора Visual Basic. Ноль здесь в окне сообщения означает, что два текста, которые мы сохранили в строках String1 и String2, совпадают друг с другом, несмотря на разницу в регистре. Это потому, что мы указали vbTextCompare в качестве аргумента сравнения. Этот аргумент проверяет, совпадают ли тексты друг с другом или нет, независимо от проверки регистров. Теперь выполните следующие действия, чтобы сравнить строки в VBA. Шаг 1. Определите подпроцедуру, которая может содержать ваш макрос. Код: Шаг 2. Определите переменную Result как строку, чтобы мы могли присвоить ей значение функции StrComp. Код: Шаг 3. Теперь используйте оператор присваивания, чтобы присвоить значение StrComp переменной с именем Result. Код:
Шаг 4. Теперь нам нужно указать аргументы для этой функции. Используйте «Индия» в качестве аргументов String1, «INDIA» в качестве аргументов String2. Код:
Шаг 5. Для сравнения двух строк используйте vbBinaryCompare в качестве аргумента. Это нормально, если вы поместите его как пустое, потому что это необязательный аргумент и имеет значение по умолчанию как сам vbBinaryCompare. Благодаря этой операции сравнения система проверяет двоичные коды двух строк, заданных на вход (которые, по-видимому, будут разными для двух предоставленных строк). Код:
Шаг 6. Используйте свойство VBA MsgBox для отображения результата в окне сообщения. Код:
Шаг 7. Запустите этот код, нажав F5 или кнопку "Выполнить" на верхней ленте в редакторе Visual Basic. Как только вы запустите этот код, вы увидите вывод «1» в окне сообщения, что означает, что эти два текста не равны. Это правильно из-за использования свойства vbBinaryCompare. Вот как мы можем сравнить две строки в VBA, используя функцию StrComp. Давайте завершим эту статью несколькими моментами, которые следует запомнить: Это руководство по сравнению строк VBA. Здесь мы обсуждаем, как сравнивать строки в Excel VBA вместе с практическими примерами и загружаемым шаблоном Excel. Вы также можете ознакомиться с другими нашими рекомендуемыми статьями – Для сравнения двух строк в VBA у нас есть встроенная функция, например, «StrComp». Это мы можем прочитать как «Сравнение строк», эта функция доступна только с VBA и недоступна как функция рабочего листа. Он сравнивает любые две строки и возвращает результат «Ноль (0)», если обе строки совпадают, а если обе предоставленные строки не совпадают, то в качестве результата мы получим «Один (1)». В VBA или Excel мы сталкиваемся с множеством различных сценариев. Одним из таких сценариев является «сравнение двух строковых значений». На обычном листе мы можем сделать это несколькими способами, но как это сделать в VBA?
Ниже приведен синтаксис функции «StrComp».
Во-первых, два аргумента довольно просты, Здесь мы можем указать три значения. Результаты функции «StrComp» по умолчанию не являются ИСТИНА или ЛОЖЬ, но различаются. Ниже приведены различные результаты функции «StrComp». Вы можете скачать этот шаблон Excel для сравнения строк VBA здесь — Шаблон Excel для сравнения строк VBA Мы сопоставим "Бангалор" со строкой "БАНГАЛОР". Код:
Для этих двух переменных сохраните два строковых значения. Код:
Теперь объявите еще одну переменную для хранения результата функции «StrComp». Код:
Для этой переменной откройте функцию «StrComp». Код:
Для «String1» и «String2» мы уже присвоили значения через переменные, поэтому введите имена переменных соответственно. Код:
Последняя часть функции — «Сравнить» для этого варианта «vbTextCompare». Код:
Код:
Хорошо, давайте запустим код и посмотрим на результат. Вывод: Поскольку строки «Bangalore» и «BANGALORE» одинаковы, мы получили результат 0, т. е. совпадение. Оба значения чувствительны к регистру, так как мы предоставили аргумент как «vbTextCompare», он проигнорировал совпадение с учетом регистра и сопоставил только значения, поэтому оба значения одинаковы, а результат равен 0, т. е. TRUE. Код:
Для того же кода мы изменим метод сравнения с «vbTextCompare» на «vbBinaryCompare». Код:
Теперь запустите код и посмотрите результат. Вывод: Несмотря на то, что обе строки одинаковы, мы получили результат 1, т. е. "Не совпадает", потому что мы применили метод сравнения "vbBinaryCompare", который сравнивает два значения с учетом регистра. Теперь мы увидим, как сравнивать числовые значения. Для одного и того же кода мы будем назначать разные значения. Код:
Оба значения равны 500, и в результате мы получим 0, поскольку оба значения совпадают. Вывод: Теперь я изменю число Value1 с 500 на 100. Код:
Запустите код и посмотрите результат. Вывод: Мы знаем, что значения Value1 и Value2 не совпадают, но результатом будет -1 вместо 1, потому что при численном сравнении, когда значение String 1 больше, чем значение String 2, мы получим -1. Код:
Теперь я поменяю местами значения. Код:
Запустите код и посмотрите результат. Вывод: В этом нет ничего особенного. Если не совпадает, мы получим только 1. Это руководство по сравнению строк VBA. Здесь мы обсудим, как сравнить два строковых значения с помощью функции StrComp в Excel VBA, а также примеры и загрузим шаблон Excel. Вы также можете ознакомиться с другими статьями, связанными с Excel VBA —Как сравнивать строки в VBA?
Примеры сравнения строк в VBA
4,7 (10 144 оценки)Что нужно помнить
Рекомендуемые статьи
Как выполнить сравнение строк в VBA?
Что здесь нужно помнить
Рекомендуемые статьи
Читайте также: