Hàm so sánh chuỗi trong vba

Hàm InStr() trong VBA trả về lần xuất hiện đầu tiên của một chuỗi trong chuỗi khác. Tìm kiếm diễn ra từ trái sang phải.

Nội dung chính

  • Cú pháp:
  • Ví dụ sử dụng hàm InStr() trong VBA

Cú pháp:

InStr([start,]string1,string2[,compare])

Mô tả các tham số:

  • start: Tham số tùy chọn. Chỉ định vị trí bắt đầu cho tìm kiếm. Tìm kiếm bắt đầu từ vị trí đầu tiên từ trái sang phải.
  • string1: Tham số bắt buộc. Chuỗi được tìm kiếm.
  • string2: Tham số bắt buộc. Chuỗi mà String1 được tìm kiếm.
  • compare: Tham số tùy chọn. Chỉ định so sánh chuỗi được sử dụng. Nó có thể có các giá trị được đề cập sau đây. 0 = vbBinaryCompare - Thực hiện so sánh nhị phân (mặc định). 1 = vbTextCompare - Thực hiện so sánh kiểu văn bản.

Ví dụ sử dụng hàm InStr() trong VBA

Sub vidu_ham_instr() Dim var As Variant var = "Hoc VBA Online" Cells(1, 1) = ("Line 1: " & InStr(1, var, "o")) Cells(2, 1) = ("Line 2: " & InStr(7, var, "O")) Cells(3, 1) = ("Line 3: " & InStr(1, var, "c", 1)) Cells(4, 1) = ("Line 4: " & InStr(1, var, "c", 0)) Cells(5, 1) = ("Line 5: " & InStr(var, "VBA")) Cells(6, 1) = ("Line 6: " & InStr(7, var, "o")) End Sub

Trong VBA Excel, hàm IF được sử dụng khi bạn muốn kiểm tra một kết quả theo một hoặc nhiều điều kiện cho trước. Khi điều điều kiện đúng, lệnh nhánh đúng sẽ được thực thi hoặc nếu sai, lệnh nhánh sai sẽ được thực thị.

Để hiểu rõ hơn về lệnh IF trong VBA, các bạn hãy cùng mình xem qua cấu trúc và các ví dụ về cách sử dụng được tổng hợp dưới đây nhé.

Cách sử dụng hàm IF trong VBA Excel

Sẽ có 2 dạng lệnh IF bạn sẽ gặp trong VBA là:

  • IF đơn: chỉ có một điều kiện
  • IF nhiều điều kiện: có nhiều hơn 1 điều kiện.
  • Hàm IF đơn

Cú pháp:

IF <điều kiện> THEN

<lệnh thực hiện nếu điều kiện đúng>

Else

<lệnh thực hiện nếu điều kiện sai>

END IF

Chú thích cú pháp:

  • <điều kiện>: có thể là các phép so sánh toán học (>, <, >=, <=, =), so sánh chuỗi (=””), các hàm kiểm tra giá trị (kiểm tra số, kiểm tra TRUE/ FALSE)…
  • IF <điều kiện> THEN: nếu điều kiện kiểm tra là đúng thì thực thi lệnh
  • Else: nếu điều kiện trong IF <điều kiện> THEN sai thì lệnh trong ELSE sẽ được thực thi.
  • END IF: kết thúc lệnh cho một hàm IF.

Mỗi hàm IF sẽ kèm theo một END IF.

Ví dụ: Kiểm tra số nhập từ InputBox lớn hay nhỏ hơn 0.

Sub kiemtra_soduong()

Dim so As Integer

x = InputBox(“Nhao so”, “So sanh”, 0)

If x >= 0 Then

MsgBox “So vua nhap la so lon hon hoac bang 0”

Else

MsgBox “So vua nhap la so nhỏ hơn 0”

End If

End Sub

  1. Hàm IF nhiều điều kiện

Khi dùng hàm IF trong Excel, khi muốn so sánh nhiều điều kiện chúng ta phải sử dụng nhiều câu lệnh IF lồng vào ở điều kiện đúng hoặc sai. Nhưng trong VBA, các bạn có thể sử dụng ELSEIF để tạo thêm một điều kiện so sánh.

Tuy bạn có thể tạo nhiều ELSEIF nhưng không nên tạo quá nhiều vì sẽ ảnh hướng tới hiệu suất. Thay vào đó bạn có thể sử dụng hàm Switch trong VBA.

Cú pháp

If <điều kiện 1> Then

<lệnh thực thi nếu điều kiện 1 đúng>

ElseIf <điều kiện 2> Then

<lệnh thực thi nếu điều kiện 2 đúng>

ElseIf <điều kiện thứ n> Then

<lệnh thực thi nếu điều kiện thứ n đúng>

Else

<lệnh thực thi nếu các điều kiện trên không đúng>

End If

Ví dụ: So sánh số nhập từ InputBox với 0

Sub kiemtra_so()Dim so As Integerx = InputBox(“Nhao so”, “So sanh”, 0)If x = 0 ThenMsgBox “So vua nhap la so 0″ElseIf x > 0 ThenMsgBox “So vua nhap lon hon 0″ElseMsgBox “So vua nhap nho hon 0″End IfEnd Sub

  1. Cách áp dụng hàm IF VBA vào Excel

Hàm IF trong VBA được sử dụng rất rộng, nó có thể được sử dụng riêng hay được lồng vào trong các vòng lặp để bắt giá trị theo điều kiện. Vậy để rõ hơn về cách sử dụng hàm IF trong VBA, các bạn hãy tham khảo tiếp các ví dụ cụ thể dưới đây nhé.

Ví dụ: Sử dụng điều kiện IF đơn không ELSE

Sử dụng lệnh IF đơn không ELSE khi bạn chỉ muốn kiểm tra điều kiện đúng thì thoát chương trình mà không cần kiểm tra đến điều kiện sai.

Trong một số trường hợp, bạn có thể chỉ cần so sánh hai ô liền kề của chuỗi và đánh dấu các điểm tương đồng hoặc khác biệt của chúng trong Excel. Bài viết này cung cấp hai phương pháp để bạn đạt được nó.


So sánh hai chuỗi với công thức

Như ảnh chụp màn hình bên dưới được hiển thị, nếu bạn chỉ muốn biết liệu các chuỗi được so sánh có khớp hay không, bạn có thể áp dụng công thức sau.

Hàm so sánh chuỗi trong vba

1. Chọn một ô trống C2, nhập công thức \= CHÍNH XÁC (A2, B2) vào Thanh công thức, rồi nhấn phím Đi vào. Xem ảnh chụp màn hình:

Hàm so sánh chuỗi trong vba

Chú thích: Trong công thức, A2 và B2 là các ô chứa các chuỗi so sánh.

2. Tiếp tục chọn ô kết quả, sau đó kéo Fill Handle đến các ô cho đến khi nhận được tất cả các kết quả được so sánh.

Kết quả FALSE có nghĩa là các chuỗi được so sánh là khác nhau và kết quả TRUE cho biết hai chuỗi được so sánh là khớp. Xem ảnh chụp màn hình:

Hàm so sánh chuỗi trong vba


So sánh hai chuỗi về sự giống nhau hoặc đánh dấu sự khác biệt với mã VBA

Nếu bạn muốn so sánh hai chuỗi và làm nổi bật sự giống nhau hoặc khác nhau giữa chúng. Mã VBA sau đây có thể giúp bạn.

1. nhấn Khác + F11 các phím đồng thời để mở Microsoft Visual Basic cho các ứng dụng cửa sổ.

2. bên trong Microsoft Visual Basic cho các ứng dụng cửa sổ, nhấp Chèn > Mô-đun. Sau đó sao chép và dán đoạn mã sau vào cửa sổ Mã.

Mã VBA: So sánh hai chuỗi cột để biết sự giống nhau hoặc đánh dấu sự khác biệt

Sub highlight()
    Dim xRg1 As Range
    Dim xRg2 As Range
    Dim xTxt As String
    Dim xCell1 As Range
    Dim xCell2 As Range
    Dim I As Long
    Dim J As Integer
    Dim xLen As Integer
    Dim xDiffs As Boolean
    On Error Resume Next
    If ActiveWindow.RangeSelection.Count > 1 Then
      xTxt = ActiveWindow.RangeSelection.AddressLocal
    Else
      xTxt = ActiveSheet.UsedRange.AddressLocal
    End If
lOne:
    Set xRg1 = Application.InputBox("Range A:", "Kutools for Excel", xTxt, , , , , 8)
    If xRg1 Is Nothing Then Exit Sub
    If xRg1.Columns.Count > 1 Or xRg1.Areas.Count > 1 Then
        MsgBox "Multiple ranges or columns have been selected ", vbInformation, "Kutools for Excel"
        GoTo lOne
    End If
lTwo:
    Set xRg2 = Application.InputBox("Range B:", "Kutools for Excel", "", , , , , 8)
    If xRg2 Is Nothing Then Exit Sub
    If xRg2.Columns.Count > 1 Or xRg2.Areas.Count > 1 Then
        MsgBox "Multiple ranges or columns have been selected ", vbInformation, "Kutools for Excel"
        GoTo lTwo
    End If
    If xRg1.CountLarge <> xRg2.CountLarge Then
       MsgBox "Two selected ranges must have the same numbers of cells ", vbInformation, "Kutools for Excel"
       GoTo lTwo
    End If
    xDiffs = (MsgBox("Click Yes to highlight similarities, click No to highlight differences ", vbYesNo + vbQuestion, "Kutools for Excel") = vbNo)
    Application.ScreenUpdating = False
    xRg2.Font.ColorIndex = xlAutomatic
    For I = 1 To xRg1.Count
        Set xCell1 = xRg1.Cells(I)
        Set xCell2 = xRg2.Cells(I)
        If xCell1.Value2 = xCell2.Value2 Then
            If Not xDiffs Then xCell2.Font.Color = vbRed
        Else
            xLen = Len(xCell1.Value2)
            For J = 1 To xLen
                If Not xCell1.Characters(J, 1).Text = xCell2.Characters(J, 1).Text Then Exit For
            Next J
            If Not xDiffs Then
                If J <= Len(xCell2.Value2) And J > 1 Then
                    xCell2.Characters(1, J - 1).Font.Color = vbRed
                End If
            Else
                If J <= Len(xCell2.Value2) Then
                    xCell2.Characters(J, Len(xCell2.Value2) - J + 1).Font.Color = vbRed
                End If
            End If
        End If
    Next
    Application.ScreenUpdating = True
End Sub

3. Nhấn nút F5 phím để chạy mã. Trước hết Kutools for Excel hộp thoại, chọn cột đầu tiên của chuỗi văn bản bạn cần so sánh, sau đó bấm vào OK .

Hàm so sánh chuỗi trong vba

4. Sau đó, thứ hai Kutools for Excel hộp thoại bật lên, vui lòng chọn chuỗi cột thứ hai và nhấp vào OK .

Hàm so sánh chuỗi trong vba

5. Cuối cùng Kutools for Excel hộp thoại, nếu bạn muốn so sánh các chuỗi để tìm sự giống nhau, hãy nhấp vào Có cái nút. Và để làm nổi bật sự khác biệt của các chuỗi được so sánh, hãy nhấp vào Không cái nút. Xem ảnh chụp màn hình: