Vba excel сравнение строк с учетом регистра

Сравнение строк в VBA Excel с помощью функции StrComp, возвращающей результат сравнения двух строк в виде числа. Синтаксис, параметры, значения.

StrComp – это функция, которая сравнивает две указанные строки по длине и возвращает результат сравнения в виде числа (-1, 0, 1).

Синтаксис, параметры, значения

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

StrComp(String1, String2, [Compare])

Параметры функции StrComp:

Параметр Описание
String1 первая сравниваемая строка, обязательный параметр
String2 вторая сравниваемая строка, обязательный параметр
Compare тип сравнения строк, необязательный параметр, по умолчанию равен 0 (vbBinaryCompare)

Тип сравнения строк (Compare):

Константа Значение Описание
vbUseCompareOption -1 используется тип сравнения, заданный оператором Option Compare
vbBinaryCompare 0 выполняется двоичное сравнение (регистр имеет значение)
vbTextCompare 1 выполняется текстовое сравнение (без учета регистра)

Существует еще одна константа: vbDatabaseCompare, которая актуальна только для Microsoft Access.

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

Значение Описание
-1 длина первой строки меньше длины второй
0 длина первой строки равна длине второй
1 длина первой строки больше длины второй

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

Определяем, какой тип сравнения используется по умолчанию:

Sub Primer1()

    ‘Бинарное сравнение:

MsgBox StrComp(«Корова», «корова», vbBinaryCompare) ‘результат: -1

    ‘Текстовое сравнение:

MsgBox StrComp(«Корова», «корова», vbTextCompare) ‘результат: 0

    ‘Тип сравнения по умолчанию:

MsgBox StrComp(«Корова», «корова») ‘результат: -1 (бинарное сравнение)

End Sub

13 / 13 / 11

Регистрация: 03.09.2011

Сообщений: 1,026

1

Сравнение строк с учетом регистра

29.01.2015, 19:41. Показов 3111. Ответов 3


Студворк — интернет-сервис помощи студентам

Подскажите, как в VBA сделать с учетом регистра?
В коде у меня идет сравнение 2 ух переменных



0



5561 / 1367 / 150

Регистрация: 08.02.2009

Сообщений: 4,107

Записей в блоге: 30

29.01.2015, 19:49

2

Прокрути свою тему вниз — там аналогичные темы. 4-я из них (Olya1985) вроде даже буквально о том же.



1



iluxa1810

13 / 13 / 11

Регистрация: 03.09.2011

Сообщений: 1,026

29.01.2015, 19:50

 [ТС]

3

Sasha_Smirnov, Получается в самом начале модуля просто

PureBasic
1
Option Compare Text

Прописать?



0



5561 / 1367 / 150

Регистрация: 08.02.2009

Сообщений: 4,107

Записей в блоге: 30

29.01.2015, 20:00

4

iluxa1810, это наоборот — введёт неучёт регистра.

А по умолчанию

Like регистр различает. Так что никаких действий не требуется.

Для противоположного случая (где заглавные и строчные буквы различать не надо) есть испытанный пример: Вывести на экран слова текста, начинающиеся и оканчивающиеся на гласные буквы.



1



StrComp

StrComp(String1, String2[, Compare])

Функция StrComp служит для сравнения двух строк. Аналогична сравнению строк с помощью операторов арифметического сравнения

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

Возвращает значение типа Variant (Integer), представляющее результат сравнения строк

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

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

Параметры

Функция содержит именованные аргументы

String1 Обязательный аргумент — любое допустимое строковое выражение
String2 Обязательный аргумент — любое допустимое строковое выражение
Compare Необязательный аргумент. Указывает способ сравнения строк. Аргумент может быть опущен или иметь значение -1, 0, 1 или 2. Если аргумент имеет значение Null, возникает ошибка

Именованный аргумент Compare имеет следующие значения:

Константа Значение Описание
vbBinaryCompare 0 Двоичное сравнение по внутренним кодам символов.Буквы разных регистров считаются разными.Установлен по умолчанию
vbTextCompare 1 Текстовое сравнение строк без учета регистра на основе системной национальной настройки
vbDatabaseCompare 2 По установкам базы данных.Используется только в Microsoft Access

Примечание: В справке указывается еще одно неправильное значение (vbUseCompareOption,-1). Однако, вы не сможете использовать этот параметр в своих программах, невзирая на справку

Пример

 'В данном примере функция StrComp
' используется для сравнения строк

Dim MyStr1, MyStr2, MyComp
MyStr1 = "ABCD": MyStr2 = "abcd"
MyComp = StrComp(MyStr1, MyStr2, 1) ' Возвращает 0
MyComp = StrComp(MyStr1, MyStr2, 0) ' Возвращает -1
MyComp = StrComp(MyStr2, MyStr1) ' Возвращает 1

Категория
Функции обработки строк

Содержание

  • Использование функции StrComp для сравнения двух строк
  • Использование функции StrComp с двоичным и текстовым методами

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

Если вы хотите узнать, как использовать оператор VBA Like для сравнения неточных совпадений, щелкните здесь: Оператор Like VBA.

Если вы хотите узнать, как использовать операторы сравнения, щелкните здесь: Операторы сравнения VBA — не равно и др.

В StrComp функция принимает в качестве аргументов две строки и метод сравнения. Есть 3 метода сравнения:

  • vbBinaryCompare — сравнивает две двоичные строки (с учетом регистра);
  • vbTextCompare — сравнивает две строки как текст (без учета регистра);
  • vbDatabaseCompare — этот метод доступен только в Microsoft Access, но не в VBA.

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

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

  • 0 — если строки равны;
  • -1 — если строка 1 меньше строки 2;
  • 1 — если строка 1 больше строки 2;
  • Null — если одна из строк пуста.

Вот пример кода:

123 Dim intResult как целое числоintResult = StrComp («Компьютер», «Компьютер»)

В этом примере мы хотим проверить, «Компьютер» а также «Компьютер» равны, используя метод сравнения по умолчанию (двоичный). Результат функции находится в intResult Переменная. Как вы можете видеть на изображении, обе строки равны, поэтому intResult имеет значение 0.

Изображение 1. Использование функции StrComp с двоичным методом в VBA

Использование функции StrComp с двоичным и текстовым методами

Теперь вы увидите разницу между использованием двоичного и текстового методов. Двоичный метод имеет двоичное число для каждого символа, поэтому в этом методе прописные и строчные буквы — разные символы. С другой стороны, текстовый метод считает «S» и «s» одними и теми же буквами. Если вы хотите сделать функцию нечувствительной к регистру, вам нужно установить для третьего аргумента значение vbBinaryCompare. Вот код:

123456 Dim intResult1 как целое числоDim intResult2 как целое числоintResult1 = StrComp («Компьютер», «CompuTer»)intResult2 = StrComp («Компьютер», «CompuTer», vbTextCompare)

Мы хотим сравнить строки «Компьютер» а также «Компьютер», используя оба метода.

В переменной intResult1, мы получим значение бинарным методом, а intResult2 получит значение текстовым методом. Вы можете увидеть значения этих двух переменных:

Изображение 2. Использование функции StrComp двоичным и текстовым методами.

Значение intResult1 равно 1, что означает, что для двоичного метода две строки различны. Для текстового метода эти две строки равны, поэтому значение intResult2 равно 0.

Вы поможете развитию сайта, поделившись страницей с друзьями

Return to VBA Code Examples

In VBA, you can compare two strings using the StrComp function. In this tutorial, you will learn how to use this function with different comparison methods.

If you want to learn how to use VBA like operator to compare inexact matches, click here: VBA Like Operator.

If you want to learn how to use comparison operators, click here: VBA Comparison Operators – Not Equal to & More

Using the StrComp Function to Compare Two Strings

The StrComp function takes two strings and comparison method as arguments. There are 3 methods of comparison:

  • vbBinaryCompare – compares two strings binary (case-sensitive);
  • vbTextCompare – compares two strings as texts (case-insensitive);
  • vbDatabaseCompare – this method is available only in Microsoft Access and not in VBA.

By default, the function uses the binary method. If we omit this argument, the function will be case-sensitive.

The function returns the following results:

  • 0 – if strings are equal;
  • -1 – if string 1 is less than string 2;
  • 1 – if string 1 is greater than string 2;
  • Null – if one of the strings is empty.

Here is the example code:

Dim intResult As Integer

intResult = StrComp("Computer", "Computer")

In this example, we want to check if strings “Computer” and “Computer” are equal, using the default comparison method (binary). The result of the function is in the intResult variable. As you can see in Image, both strings are equal, therefore the intResult has value 0.

vba compare strings strcomp binary

Image 1. Using the StrComp function with the binary method in VBA

Using the StrComp Function with Binary and Textual Method

You will now see the difference between using the binary and textual method. The binary method has a binary number for each character, so the uppercase and lowercase are different characters in this method. On the other side, the textual method considers “S” and “s” as the same letters. If you want to make the function case-insensitive, you need to set the third argument to vbBinaryCompare. Here is the code:

Dim intResult1 As Integer
Dim intResult2 As Integer  

intResult1 = StrComp("Computer", "CompuTer")

intResult2 = StrComp("Computer", "CompuTer", vbTextCompare)

We want to compare strings “Computer” and “CompuTer”, using both methods.

In the variable intResult1, we will get the value with the binary method, while the intResult2 will get the value with the textual method. You can see the values of these two variables:

vba compare strings strcomp

Image 2. Using the StrComp function with binary and textual method

The value of intResult1 is 1, which means that two strings are different for the binary method. For the textual method, these two strings are equal, so the value of intResult2 is 0.

VBA Coding Made Easy

Stop searching for VBA code online. Learn more about AutoMacro — A VBA Code Builder that allows beginners to code procedures from scratch with minimal coding knowledge and with many time-saving features for all users!
vba save as

Learn More!

Like this post? Please share to your friends:
  • Vba excel сравнение символов
  • Vba excel сравнение двух столбцов
  • Vba excel сравнение двух дат
  • Vba excel сравнение времени
  • Vba excel справка по русски