So sánh chuỗi VBA - Làm thế nào để so sánh hai giá trị chuỗi?

So sánh chuỗi VBA trong Excel

Để so sánh hai chuỗi trong VBA, chúng ta có một hàm tích hợp sẵn, tức là “ StrComp ”. Điều này chúng ta có thể đọc nó là “ So sánh chuỗi ”, chức năng này chỉ có sẵn với VBA và không có sẵn dưới dạng hàm trang tính. Nó so sánh hai chuỗi bất kỳ và trả về kết quả là “Zero (0)” nếu cả hai chuỗi đều khớp và nếu cả hai chuỗi được cung cấp không khớp thì chúng ta sẽ nhận được kết quả là “Một (1)” .

Trong VBA hoặc excel, chúng ta phải đối mặt với nhiều tình huống khác nhau. Một trong những kịch bản như vậy là "so sánh hai giá trị chuỗi." Trong một trang tính thông thường, chúng ta có thể thực hiện nhiều cách này, nhưng trong VBA, bạn làm như thế nào?

Dưới đây là cú pháp của hàm “StrComp”.

Đầu tiên, hai đối số khá đơn giản,

  • đối với Chuỗi 1, chúng tôi cần cung cấp giá trị đầu tiên mà chúng tôi đang so sánh và
  • đối với Chuỗi 2, chúng ta cần cung cấp giá trị thứ hai mà chúng ta đang so sánh.
  • (So ​​sánh) đây là đối số tùy chọn của hàm StrComp. Điều này rất hữu ích khi chúng ta muốn so sánh phân biệt chữ hoa chữ thường. Ví dụ, trong đối số này, “Excel” không bằng “EXCEL” vì cả hai từ này đều phân biệt chữ hoa chữ thường.

Chúng tôi có thể cung cấp ba giá trị ở đây.

  • Số không (0) cho “ So sánh nhị phân, tức là “Excel” không bằng “EXCEL”. Để so sánh phân biệt chữ hoa chữ thường, chúng tôi có thể cung cấp 0.
  • Một (1) cho “ So sánh văn bản, tức là “Excel” bằng “EXCEL”. Đây là một so sánh không phân biệt chữ hoa chữ thường.
  • Hai (2) cái này chỉ để so sánh cơ sở dữ liệu.

Kết quả của hàm “StrComp” không mặc định là TRUE hoặc FALSE mà thay đổi. Dưới đây là các kết quả khác nhau của hàm “StrComp”.

  • Chúng ta sẽ nhận được kết quả là “0” nếu các chuỗi được cung cấp khớp với nhau.
  • Chúng ta sẽ nhận được "1" nếu các chuỗi được cung cấp không khớp và trong trường hợp khớp số, chúng ta sẽ nhận được 1 nếu Chuỗi 1 lớn hơn chuỗi 2.
  • Chúng ta sẽ nhận được “-1” nếu chuỗi 1 số nhỏ hơn chuỗi 2 số.

Làm thế nào để thực hiện so sánh chuỗi trong VBA?

Ví dụ 1

Chúng tôi sẽ so khớp " Bangalore " với chuỗi " BANGALORE ."

Đầu tiên, khai báo hai biến VBA dưới dạng chuỗi để lưu trữ hai giá trị chuỗi.

Mã:

Chuỗi con_Comparison_Example1 () Dim Giá trị1 Như chuỗi Dim Giá trị2 Như chuỗi cuối Con

Đối với hai biến này, lưu trữ hai giá trị chuỗi.

Mã:

Sub String_Comparison_Example1 () Dim Value1 As String Dim Value2 As String Value1 = "Bangalore" Value2 = "BANGALORE" End Sub

Bây giờ khai báo một biến nữa để lưu trữ kết quả của hàm “ StrComp ”.

Mã:

Sub String_Comparison_Example1 () Dim Value1 As String Dim Value2 As String Value1 = "Bangalore" Value2 = "BANGALORE" Dim FinalResult làm chuỗi kết thúc Sub

Đối với biến này, hãy mở hàm “StrComp”.

Mã:

Sub String_Comparison_Example1 () Dim Value1 As String Dim Value2 As String Value1 = "Bangalore" Value2 = "BANGALORE" Dim FinalResult As String FinalResult = StrComp (End Sub

Đối với “String1” & “String2”, chúng tôi đã gán giá trị thông qua các biến, vì vậy hãy nhập tên biến tương ứng.

Mã:

Sub String_Comparison_Example1 () Dim Value1 As String Dim Value2 As String Value1 = "Bangalore" Value2 = "BANGALORE" Dim FinalResult As String FinalResult = StrComp (Value1, Value2, End Sub

Phần cuối cùng của hàm là “So sánh” cho lựa chọn này là “vbTextCompare.”

Mã:

Sub String_Comparison_Example1 () Dim Value1 As String Dim Value2 As String Value1 = "Bangalore" Value2 = "BANGALORE" Dim FinalResult As String FinalResult = StrComp (Value1, Value2, vbTextCompare) End Sub

Bây giờ hiển thị biến "Kết quả cuối cùng" trong hộp thông báo trong VBA.

Mã:

Sub String_Comparison_Example1 () Dim Value1 As String Dim Value2 As String Value1 = "Bangalore" Value2 = "BANGALORE" Dim FinalResult As String FinalResult = StrComp (Value1, Value2, vbTextCompare) MsgBox FinalResult End Sub

Ok, hãy chạy mã và xem kết quả.

Đầu ra:

Vì cả hai chuỗi “Bangalore” và “BANGALORE” đều giống nhau, chúng tôi nhận được kết quả là 0, tức là khớp. Cả hai giá trị đều phân biệt chữ hoa chữ thường vì chúng tôi đã cung cấp đối số là “vbTextCompare”, nó đã bỏ qua đối sánh phân biệt chữ hoa chữ thường và chỉ đối sánh các giá trị, vì vậy cả hai giá trị đều giống nhau và kết quả là 0, tức là TRUE.

Mã:

Sub String_Comparison_Example1 () Dim Value1 As String Dim Value2 As String Value1 = "Bangalore" Value2 = "BANGALORE" Dim FinalResult As String FinalResult = StrComp (Value1, Value2, vbTextCompare) MsgBox FinalResult End Sub

Ví dụ số 2

For the same code, we will change the compare method from “vbTextCompare” to “vbBinaryCompare.”

Code:

Sub String_Comparison_Example2() Dim Value1 As String Dim Value2 As String Value1 = "Bangalore" Value2 = "BANGALORE" Dim FinalResult As String FinalResult = StrComp(Value1, Value2, vbBinaryCompare) MsgBox FinalResult End Sub

Now run the code and see the result.

Output:

Even though both the strings are the same, we got the result as 1, i.e., Not Matching because we have applied the compare method as “vbBinaryCompare,” which compares two values as case sensitive.

Example #3

Now we will see how to compare numerical values. For the same code, we will assign different values.

Code:

Sub String_Comparison_Example3() Dim Value1 As String Dim Value2 As String Value1 = 500 Value2 = 500 Dim FinalResult As String FinalResult = StrComp(Value1, Value2, vbBinaryCompare) MsgBox FinalResult End Sub

Both the values are 500, and we will get 0 as a result because both the values are matched.

Output:

Now I will change the Value1 number from 500 to 100.

Code:

Sub String_Comparison_Example3() Dim Value1 As String Dim Value2 As String Value1 = 1000 Value2 = 500 Dim FinalResult As String FinalResult = StrComp(Value1, Value2, vbBinaryCompare) MsgBox FinalResult End Sub

Run the code and see the result.

Output:

We know Value1 & Value2 aren’t the same, but the result is -1 instead of 1 because for numerical comparison when the String 1 value is greater than String 2, we will get this -1.

Code:

Sub String_Comparison_Example3() Dim Value1 As String Dim Value2 As String Value1 = 1000 Value2 = 500 Dim FinalResult As String FinalResult = StrComp(Value1, Value2, vbBinaryCompare) MsgBox FinalResult End Sub

Now I will reverse the values.

Code:

Sub String_Comparison_Example3() Dim Value1 As String Dim Value2 As String Value1 = 500 Value2 = 1000 Dim FinalResult As String FinalResult = StrComp(Value1, Value2, vbBinaryCompare) MsgBox FinalResult End Sub

Run the code and see the result.

Output:

This is not special. If not match, we will get 1 only.

Things to Remember here

  • (Compare) argument of “StrComp” is optional, but in case of case sensitive match, we can utilize this, and the option is “vbBinaryCompare.”
  • The result of numerical values is slightly different in case String 1 is greater than string 2, and the result will be -1.
  • Results are 0 if matched and 1 if not matched.

Recommended Articles

Đây là một hướng dẫn để so sánh chuỗi VBA. Ở đây chúng ta thảo luận về cách so sánh hai giá trị chuỗi bằng cách sử dụng hàm StrComp trong excel VBA cùng với các ví dụ và tải xuống mẫu excel. Bạn cũng có thể xem các bài viết khác liên quan đến Excel VBA -

  • Hướng dẫn các hàm chuỗi VBA
  • VBA tách chuỗi thành mảng
  • Phương thức chuỗi con VBA
  • Văn bản VBA

thú vị bài viết...