Сравнение строк Vba Excel

Обновлено: 16.06.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. Макрос сравнит строки в двух списках и сообщит, равны ли они.

VBA StrComp Demo Original Списки


Исходный список курортов Диснея класса люкс

Сначала мы выполним макрос как есть. Обратите внимание, что аргумент Compare имеет значение vbBinaryCompare. Что происходит?

VBA StrComp vbBinaryCompare


Результаты сравнения vbBinary

Двоичное сравнение сообщает, что все совпадает, кроме строки 4. Посмотрите, как в ячейке A4 первые буквы в слове «Современный курорт» заглавные, а в ячейке B4 текст остается строчным. Если вы используете опцию бинарного сравнения, vbBinaryCompare, строки должны быть полностью идентичными, чтобы получить совпадение. Включая заглавные и строчные буквы!

Что, если вы установите аргумент Compare равным vbTextCompare . Изменить строку

Запустите макрос еще раз. Что теперь происходит?

VBA StrComp vbTextCompare


Результаты vbTextCompare

В каждой ячейке в столбце C теперь указано "Совпадение", потому что при сравнении текста не учитывается регистр букв! Строка «abc» совпадает с «ABC» при использовании vbTextCompare.

Это полезно, поскольку означает, что вам больше не нужно беспокоиться о том, используете ли вы (или ваш пользователь) заглавные буквы при вводе. До того, как я обнаружил функцию VBA StrComp, я заставлял все свои строки в верхнем регистре, UCase(String1) при сравнении строк. Мне больше не нужно этого делать, и вам тоже!

Идеи для приложений

Вы можете использовать StrComp везде, где вам нужно сравнить строки.Вот несколько идей, которые помогут вам проявить творческий потенциал.

  1. Сравнить списки адресов электронной почты
  2. Сопоставление столбца имен сотрудников с другими атрибутами сотрудников
  3. Поскольку теперь вы можете управлять регистром букв, создавайте интерактивные информационные панели с текстовыми подсказками для ввода пользователем.
  4. Проделайте то же самое для интерактивных пользовательских форм VBA.
  5. Почему бы не изменить мой пример сравнения столбцов и заменить уравнения UCase эквивалентными уравнениями StrComp?

Умение работать со строками, не беспокоясь о прописных и строчных буквах, является важным навыком, который вы только что укрепили, прочитав мое руководство StrComp VBA.

Надеюсь, вы найдете функцию StrComp такой же увлекательной, как и я. Я сравниваю строки с помощью VBA больше, чем что-либо еще, что я делаю в Excel. Функция StrComp VBA упрощает задачу!

Когда вы будете готовы вывести свой VBA на новый уровень, подпишитесь, заполнив форму ниже.

Готовы делать больше с VBA?
Мы собрали гигантский PDF-файл с более чем 300 готовыми макросами и хотим, чтобы вы получили его бесплатно. Введите свой адрес электронной почты ниже, и мы вышлем вам копию вместе с нашим комплектом разработчика VBA, полным советов, приемов и ярлыков VBA.

Прежде чем мы начнем, я хочу сообщить вам, что мы разработали набор шпаргалок по VBA, чтобы вам было проще писать лучшие макросы. Мы включили более 200 советов и 140 примеров макросов, поэтому в них есть все, что вам нужно знать, чтобы стать лучшим программистом VBA.

Возвращает вариант (целое число), указывающий результат сравнения строк.

Синтаксис

StrComp(строка1, строка2, [ сравнить ])

Синтаксис функции StrComp имеет следующие именованные аргументы:

< /th>
Часть Описание
string1 Обязательный. Любое допустимое строковое выражение.
string2 Обязательно. Любое допустимое строковое выражение.
compare Необязательно. Указывает тип сравнения строк. Если аргумент compare имеет значение Null, возникает ошибка. Если параметр compare опущен, параметр Option Compare определяет тип сравнения.

Настройки

< td style="text-align: left;">2
Константа Значение Описание
vbUseCompareOption -1 Выполняет сравнение, используя настройку оператора Option Compare.
vbBinaryCompare 0 Выполняет бинарное сравнение.
vbTextCompare 1 Выполняет текстовое сравнение.
vbDatabaseCompare Только Microsoft Access. Выполняет сравнение на основе информации из вашей базы данных.

Возвращаемые значения

Функция StrComp возвращает следующие значения:

Если StrComp возвращает
string1 меньше, чем string2 -1
string1 равно string2 0
string1 больше, чем string2 1
string1 или string2 равно Null Null

Пример

В этом примере функция StrComp используется для возврата результатов сравнения строк. Если третий аргумент равен 1, выполняется текстовое сравнение; если третий аргумент равен 0 или опущен, выполняется двоичное сравнение.

См. также

Поддержка и обратная связь

Есть вопросы или отзывы об Office VBA или этой документации? См. раздел Поддержка и отзывы об Office VBA, чтобы узнать, как получить поддержку и оставить отзыв.

VBA String Сравнение

В повседневной жизни мы часто сравниваем.Сравнения между двумя людьми, сравнение между двумя продуктами, сравнение между двумя числами и, ради этого, сравнение между двумя строками. Хотя для сравнения двух чисел у нас есть различные математические функции, такие как оператор равенства, в этой лекции мы рассмотрим, как сравнивать строки в VBA в Excel. Обычный оператор равенства выдает либо ИСТИНА, либо ЛОЖЬ в результате сравнения двух чисел или текстов. В VBA у нас есть функция STRCOMP, которая определяет сравнение двух строк. Однако результаты не такие, как у оператора равенства (ИСТИНА/ЛОЖЬ), вместо этого у нас есть три возможных результата, основанных на сравнении. Мы подробно рассмотрим это в следующем разделе этой статьи. Давайте посмотрим на синтаксис и работу функции VBA STRCOMP.

Синтаксис функции VBA StrComp:

Оценка, Hadoop, Excel, мобильные приложения, веб-разработка и многое другое.

Синтаксис сравнения строк VBA

String1 и String2 — это два строковых значения, которые мы хотели сравнить друг с другом.

Как сравнивать строки в VBA?

VbCompareMethod — это метод сравнения двух предоставленных строк. Ниже перечислены три типа сравнения:

Эта функция может возвращать три возможных результата следующим образом:

  • 0 — если строка 1 совпадает со строкой 2.
  • 1 — если String1 не совпадает со String2 и в случае бинарного сравнения String1 меньше, чем String2.
  • -1 — если строка 1 не совпадает со строкой 2 и в случае двоичного сравнения строка 1 больше, чем строка 2.

Примеры сравнения строк в VBA

Ниже приведены примеры сравнения строк 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+ часов | Поддающийся проверке сертификат об окончании | Пожизненный доступ
4,7 (10 144 оценки)

Вставить модуль

Шаг 3. Определите новую подпроцедуру, используя предложение Sub-End, которое может содержать ваш макрос.

Код:

Шаг 4. Определите две новые переменные String1 и String2 с типом данных в виде строки, которые можно использовать для хранения строковых значений, которые мы хотели сравнить друг с другом.

Код:

Примеры сравнения строк VBA 1–4

Шаг 5. Присвойте текстовые значения двум созданным нами переменным с помощью оператора присваивания. Я назначу значения как «Добро пожаловать в VBA!» и «ДОБРО ПОЖАЛОВАТЬ В VBA!» соответственно двум переменным.

Код:

Примеры сравнения строк VBA 1–5

Шаг 6. Теперь определите новую переменную с именем CompResult в виде строки. Эта переменная будет использоваться для хранения результата функции StrComp, которая сравнивает, равны ли две строки или нет.

Код:

Новая переменная Примеры 1–6

Шаг 7. Теперь используйте оператор присваивания, чтобы присвоить значение функции StrComp этой вновь определенной переменной.

Код:

Примеры сравнения строк VBA 1–7

Шаг 8. Укажите аргументы, которые требуются для этого функционального оператора. Используйте String1 в качестве первого аргумента. Переменную String2 в качестве второго аргумента и используйте vbTextCompare в качестве аргумента сравнения для этого оператора.

Код:

Примеры сравнения строк VBA 1–8< бр />

Шаг 9. Используйте свойство VBA MsgBox для отображения вывода оператора StrComp, который хранится в переменной CompResult.

Код:

Примеры сравнения строк VBA 1–9

Шаг 10. Запустите этот код, нажав F5 или кнопку "Выполнить", расположенную на самой верхней ленте редактора Visual Basic.

Ноль здесь в окне сообщения означает, что два текста, которые мы сохранили в строках String1 и String2, совпадают друг с другом, несмотря на разницу в регистре. Это потому, что мы указали vbTextCompare в качестве аргумента сравнения. Этот аргумент проверяет, совпадают ли тексты друг с другом или нет, независимо от проверки регистров.

Теперь выполните следующие действия, чтобы сравнить строки в VBA.

Шаг 1. Определите подпроцедуру, которая может содержать ваш макрос.

Код:

Шаг 2. Определите переменную Result как строку, чтобы мы могли присвоить ей значение функции StrComp.

Код:

Шаг 3. Теперь используйте оператор присваивания, чтобы присвоить значение StrComp переменной с именем Result.

Код:

Оператор присваивания Примеры 2-3

Шаг 4. Теперь нам нужно указать аргументы для этой функции. Используйте «Индия» в качестве аргументов String1, «INDIA» в качестве аргументов String2.

Код:

Примеры аргументов 2–4

Шаг 5. Для сравнения двух строк используйте vbBinaryCompare в качестве аргумента. Это нормально, если вы поместите его как пустое, потому что это необязательный аргумент и имеет значение по умолчанию как сам vbBinaryCompare. Благодаря этой операции сравнения система проверяет двоичные коды двух строк, заданных на вход (которые, по-видимому, будут разными для двух предоставленных строк).

Код:

Примеры двоичного кода 2–5

Шаг 6. Используйте свойство VBA MsgBox для отображения результата в окне сообщения.

Код:

Примеры сравнения строк VBA 2–6

Шаг 7. Запустите этот код, нажав F5 или кнопку "Выполнить" на верхней ленте в редакторе Visual Basic.

Как только вы запустите этот код, вы увидите вывод «1» в окне сообщения, что означает, что эти два текста не равны. Это правильно из-за использования свойства vbBinaryCompare. Вот как мы можем сравнить две строки в VBA, используя функцию StrComp. Давайте завершим эту статью несколькими моментами, которые следует запомнить:

Что нужно помнить

  • Аргумент сравнения является необязательным и может быть пропущен, поскольку по умолчанию он имеет значение vbBinaryCompare, которое сверяет две строки с их двоичными кодами. Это означает, что «ВЕРХНИЙ» и «верхний» — разные.
  • Если строковое значение не указано, эта функция возвращает пустое значение
  • Эту функцию можно использовать для сравнения адресов электронной почты разных клиентов.
  • Если String1 больше, чем String2. Это происходит в случае бинарного сравнения; в этом случае вывод будет -1.

Рекомендуемые статьи

Это руководство по сравнению строк VBA. Здесь мы обсуждаем, как сравнивать строки в Excel VBA вместе с практическими примерами и загружаемым шаблоном Excel. Вы также можете ознакомиться с другими нашими рекомендуемыми статьями –

Для сравнения двух строк в VBA у нас есть встроенная функция, например, «StrComp». Это мы можем прочитать как «Сравнение строк», эта функция доступна только с VBA и недоступна как функция рабочего листа. Он сравнивает любые две строки и возвращает результат «Ноль (0)», если обе строки совпадают, а если обе предоставленные строки не совпадают, то в качестве результата мы получим «Один (1)».

В VBA или Excel мы сталкиваемся с множеством различных сценариев. Одним из таких сценариев является «сравнение двух строковых значений». На обычном листе мы можем сделать это несколькими способами, но как это сделать в VBA?

VBA- Сравнение строк

Ниже приведен синтаксис функции «StrComp».

Синтаксис сравнения строк VBA

Во-первых, два аргумента довольно просты,

  • для строки 1 нам нужно указать первое значение, которое мы сравниваем, и
  • для строки 2 нам нужно предоставить второе значение, которое мы сравниваем.
  • [Сравнить] это необязательный аргумент функции StrComp. Это полезно, когда мы хотим сравнить сравнение с учетом регистра. Например, в этом аргументе "Excel" не равно "EXCEL", поскольку оба эти слова чувствительны к регистру.

Здесь мы можем указать три значения.

  • Ноль (0) для «Двоичное сравнение», т. е. «Excel», не равно «EXCEL». Для сравнения с учетом регистра можно указать 0.
  • Один (1) для параметра "Сравнение текста", т. е. "Excel", равен "EXCEL". Это сравнение без учета регистра.
  • Два (2) только для сравнения с базой данных.

Результаты функции «StrComp» по умолчанию не являются ИСТИНА или ЛОЖЬ, но различаются. Ниже приведены различные результаты функции «StrComp».

  • В результате мы получим «0», если предоставленные строки совпадают.
  • Мы получим «1», если предоставленные строки не совпадают, а в случае числового совпадения мы получим 1, если строка 1 больше, чем строка 2.
  • Мы получим «-1», если число в строке 1 меньше числа в строке 2.

Как выполнить сравнение строк в VBA?

Вы можете скачать этот шаблон Excel для сравнения строк VBA здесь — Шаблон Excel для сравнения строк VBA

Мы сопоставим "Бангалор" со строкой "БАНГАЛОР".

Код:

 Пример сравнения строк VBA 1

Для этих двух переменных сохраните два строковых значения.

Код:

 Пример 1.1

Теперь объявите еще одну переменную для хранения результата функции «StrComp».

Код:

 Пример сравнения строк VBA 1.2

Для этой переменной откройте функцию «StrComp».

Код:

 Пример сравнения строк VBA 1.3

Для «String1» и «String2» мы уже присвоили значения через переменные, поэтому введите имена переменных соответственно.

Код:

 Пример сравнения строк VBA 1.4

Последняя часть функции — «Сравнить» для этого варианта «vbTextCompare».

Код:

 Пример 1.5

Код:

 Пример сравнения строк VBA 1.6

Хорошо, давайте запустим код и посмотрим на результат.

Вывод:

Поскольку строки «Bangalore» и «BANGALORE» одинаковы, мы получили результат 0, т. е. совпадение. Оба значения чувствительны к регистру, так как мы предоставили аргумент как «vbTextCompare», он проигнорировал совпадение с учетом регистра и сопоставил только значения, поэтому оба значения одинаковы, а результат равен 0, т. е. TRUE.

Код:

 Пример сравнения строк VBA 1.8

Для того же кода мы изменим метод сравнения с «vbTextCompare» на «vbBinaryCompare».

Код:

 Пример 2

Теперь запустите код и посмотрите результат.

Вывод:

Несмотря на то, что обе строки одинаковы, мы получили результат 1, т. е. "Не совпадает", потому что мы применили метод сравнения "vbBinaryCompare", который сравнивает два значения с учетом регистра.

Теперь мы увидим, как сравнивать числовые значения. Для одного и того же кода мы будем назначать разные значения.

Код:

Пример сравнения строк VBA 3
< /p>

Оба значения равны 500, и в результате мы получим 0, поскольку оба значения совпадают.

Вывод:

Теперь я изменю число Value1 с 500 на 100.

Код:

 Пример сравнения строк VBA 3.2

Запустите код и посмотрите результат.

Вывод:

Мы знаем, что значения Value1 и Value2 не совпадают, но результатом будет -1 вместо 1, потому что при численном сравнении, когда значение String 1 больше, чем значение String 2, мы получим -1.

Код:

 Пример сравнения строк VBA 3.4

Теперь я поменяю местами значения.

Код:

 Пример 3.5

Запустите код и посмотрите результат.

Вывод:

В этом нет ничего особенного. Если не совпадает, мы получим только 1.

Что здесь нужно помнить

  • Аргумент [Compare] для «StrComp» является необязательным, но в случае совпадения с учетом регистра мы можем использовать его, и параметр — «vbBinaryCompare».
  • Результат числовых значений немного отличается, если строка 1 больше строки 2, и результат будет равен -1.
  • Результаты равны 0, если совпадение найдено, и 1, если не найдено.

Рекомендуемые статьи

Это руководство по сравнению строк VBA. Здесь мы обсудим, как сравнить два строковых значения с помощью функции StrComp в Excel VBA, а также примеры и загрузим шаблон Excel. Вы также можете ознакомиться с другими статьями, связанными с Excel VBA —

Читайте также: