VBA StrComp | So sánh các chuỗi trong VBA bằng cách sử dụng hàm StrComp

Hàm StrComp trong Excel VBA

VBA StrComp là một hàm tích hợp được sử dụng để so sánh xem hai giá trị chuỗi có giống nhau hay không. Tuy nhiên, kết quả không được mặc định là TRUE hoặc FALSE như trong bảng tính mà nó khác.

Trước khi chúng ta xem kết quả, hãy để tôi chỉ cho bạn cú pháp của hàm StrComp trước.

  • Chuỗi 1: Chuỗi 1 là chuỗi hoặc giá trị đầu tiên chúng ta đang so sánh.
  • Chuỗi 2: Chuỗi 2 là chuỗi hoặc giá trị thứ hai mà chúng ta đang so sánh với Chuỗi 1 .
  • So sánh: Chúng tôi có thể cung cấp ba tùy chọn ở đây.
      • 0 = So sánh nhị phân. Điều này thực hiện các phép tính phân biệt chữ hoa chữ thường. Ví dụ: “Xin chào” không bằng “HELLO” vì cả hai trường hợp từ đều khác nhau. Đây là giá trị mặc định nếu bạn bỏ qua tham số này. vbBinaryCompare
      • 1 = So sánh văn bản. Tùy chọn này thực hiện các phép tính không phân biệt chữ hoa chữ thường. Ví dụ: “Xin chào” tương đương với sự kiện “HELLO” mặc dù cả hai trường hợp từ đều khác nhau. vbTextCompare
      • 2 = So sánh quyền truy cập. Điều này thực hiện so sánh cơ sở dữ liệu.

Kết quả của hàm so sánh chuỗi (StrComp)

Như tôi đã nói khi chúng tôi so sánh hai giá trị trong trang tính, chúng tôi nhận được kết quả là TRUE hoặc FALSE. Nhưng với hàm so sánh chuỗi VBA kết quả không giống nhau.

  • Chúng ta nhận được không (0) khi Chuỗi 1 bằng Chuỗi 2.
  • Chúng tôi nhận được một (1) khi giá trị Chuỗi 1 lớn hơn Giá trị chuỗi 2 .
  • Chúng tôi nhận được trừ một (-1) khi giá trị Chuỗi 1 nhỏ hơn Chuỗi 2
  • Chúng tôi nhận được NULL khi giá trị Chuỗi 1 hoặc Chuỗi 2 là NULL.

Ví dụ để sử dụng Hàm VBA StrComp

Bạn có thể tải xuống Mẫu VBA StrComp Excel này tại đây - Mẫu VBA StrComp Excel

Ví dụ 1

Hãy bắt đầu với một ví dụ đơn giản. Ví dụ: chúng tôi sẽ so sánh hai giá trị tức là “Excel VBA” & “Excel VBA”.

Mã:

 Sub StrComp_Example1 () Dim FirstValue As String 'Để lưu trữ chuỗi 1 giá trị Dim SecondValue As String' Để lưu trữ giá trị chuỗi 2 Dim Kết quả như chuỗi 'Để lưu trữ kết quả của công thức StrComp FirstValue = "Excel VBA"' Gán chuỗi 1 giá trị SecondValue = "Excel VBA" 'Gán giá trị chuỗi 2 Result = StrComp (FirstValue, SecondValue, vbBinaryCompare)' Áp dụng hàm StrComp MsgBox Result 'Hiển thị kết quả trong hộp thông báo End Sub 

Khi tôi chạy đoạn mã này, chúng tôi sẽ nhận được kết quả là Zero (0) vì cả giá trị Chuỗi 1Chuỗi 2 đều giống nhau.

Ví dụ số 2

Bây giờ tôi sẽ thay đổi các trường hợp của hai từ.

Chuỗi 1 = Excel Vba

Chuỗi 2 = Excel VBA

Mã:

 Sub StrComp_Example2 () Dim FirstValue As String 'Để lưu trữ chuỗi 1 giá trị Dim SecondValue As String' Để lưu trữ giá trị chuỗi 2 Dim Kết quả như chuỗi 'Để lưu trữ kết quả của công thức StrComp FirstValue = "Excel Vba"' Gán chuỗi 1 giá trị SecondValue = "Excel VBA" 'Gán giá trị chuỗi 2 Result = StrComp (FirstValue, SecondValue, vbBinaryCompare)' Áp dụng hàm StrComp MsgBox Result 'Hiển thị kết quả trong hộp thông báo End Sub 

Khi tôi chạy mã này, chúng tôi sẽ nhận được 1 vì vì chúng tôi đã cung cấp đối số So sánh là “ vbBinaryCompare” nên nó sẽ kiểm tra các ký tự phân biệt chữ hoa chữ thường.

Bây giờ tôi sẽ thay đổi tùy chọn So sánh từ “ vbBinaryCompare” thành “ vbTextCompare”

Mã:

 Sub StrComp_Example3 () Dim FirstValue làm chuỗi 'Để lưu chuỗi 1 giá trị Dim SecondValue làm chuỗi' Để lưu chuỗi 2 giá trị Dim Kết quả làm chuỗi 'Để lưu trữ kết quả của công thức StrComp FirstValue = "Excel Vba"' Gán chuỗi 1 giá trị SecondValue = "Excel VBA" 'Gán giá trị chuỗi 2 Result = StrComp (FirstValue, SecondValue, vbTextCompare)' Áp dụng hàm StrComp MsgBox Result 'Hiển thị kết quả trong hộp thông báo End Sub 

Với So sánh này , chúng ta sẽ nhận được không (0)vbaTextCompare bỏ qua các từ phân biệt chữ hoa chữ thường.

Ví dụ # 3

Nghiên cứu điển hình về VBA StrComp với điều kiện IF

Giả sử bạn có dữ liệu như hình dưới đây.

Chúng ta cần so sánh Chuỗi 1 với Chuỗi 2 và đưa ra Kết quả là “Chính xác” nếu cả hai đều giống nhau, nếu không kết quả sẽ là “Không chính xác”.

Đoạn mã dưới đây sẽ thực hiện công việc cho chúng tôi.

Mã:

 Sub StrComp_Example4 () Dim Kết quả là chuỗi Dim I As Integer For i = 2 to 6 Result = StrComp (Cells (i, 1) .Value, Cells (i, 2) .Value) If Result = 0 Then Cells (i, 3 ) .Value = "Chính xác" Các Ô Khác (i, 3) .Value = "Không Chính xác" Kết thúc Nếu Tiếp theo Tôi Kết thúc Sub 

Khi tôi chạy mã VBA trên trong Excel, chúng tôi sẽ nhận được kết quả bên dưới.

Nếu bạn nhìn vào ô C4, Chuỗi 1Chuỗi 2 giống nhau nhưng các ký tự phân biệt chữ hoa chữ thường, vì vậy kết quả là “Không chính xác”. Để khắc phục vấn đề này, chúng ta cần cung cấp So sánh dưới dạng vbTextCompare.

Dưới đây là mã đã sửa đổi để nhận được kết quả là "Chính xác" cho ô C4.

Mã:

 Sub StrComp_Example4 () Dim kết quả là chuỗi Dim I As Integer For i = 2 to 6 Result = StrComp (Cells (i, 1) .Value, Cells (i, 2) .Value, vbTextCompare) If Result = 0 Then Cells (i , 3) .Value = "Chính xác" Các Ô Khác (i, 3) .Value = "Không Chính xác" Kết thúc Nếu Tiếp theo Tôi Kết thúc Sub 

Đoạn mã này sẽ trả về kết quả bên dưới.