Hỏi cách so sánh 2 range bất kỳ trong VBA

Chia sẻ bởi:hands
★★★★★
Quảng cáo

Xin chào mọi người.
Mình mới học thêm VBA do tính chất công việc. Nhờ mọi người chỉ bảo thêm
Bài toán của mình là làm thế nào để so sánh data ở 2 ô bất kỳ trong excel & Highlight các giá trị khác biệt đó
Code so sánh ở 2 cell cụ thể thì mình có làm được như thế này rồi.
Cảm ơn mọi người đã góp ý

Sub Highlight_Different_Character()
Dim i As Integer
For i = 1 To Len(Range("B3"))
    If Mid(Range("B3"), i, 1) <> Mid(Range("C3"), i, 1) Then
        Range("B3").Select
        With ActiveCell.Characters(Start:=i, Length:=1).Font
        .Color = -16776961
        End With
         Range("C3").Select
        With ActiveCell.Characters(Start:=i, Length:=1).Font
        .Color = -16776961
        End With
    End If
Next i
End Sub

213

Nếu mình hiểu đúng ý đồ của bạn, thì bạn nên trãi qua các bước như sau:

B01: Sửa đứa con tinh thần của bạn thành vầy:

Sub Highlight_Different_Character(Rng1 As Range, Rng2 As Range)
Dim I As Integer

For I = 1 To Len(Rng1.Value)
If Mid(Rng1.Value, I, 1) <> Mid(Rng2.Value, I, 1) Then
Rng1.Select
With ActiveCell.Characters(Start:=I, Length:=1).Font
.Color = -16776961
End With
Rng2.Select
With ActiveCell.Characters(Start:=I, Length:=1).Font
.Color = -16776961
End With
End If
Next I
End Sub

B02: Viết tiếp 1 macro (cha) gọi macro con trên như sau:

Sub Cha1()
 Highlight_Different_Character Range("B3"), Range("C3")
End Sub

Nếu kết quả sau khi chạy macro cha vẫn đạt iêu cầu của bạn thì ta chuyển sang bước kế tiếp

B03: Sửa macro Cha1 thành macro Cha2 để nó có khả năng duyệt các ô của 2 vùng
Thí dụ Rng1 là vùng từ ô B3 đến ô B9, tương ứng vùng 2 là ô c3 đến ô C9
Bạn thử sức đi, đến sau 6 giờ chiều nay!
& chúc thành công!

Cảm ơn bạn đã rep, cách của bạn vẫn đang là so sánh data giữa 2 cell B3 & C3 ạ.
Mình muốn là 2 cell ấy nằm ở ngẫu nhiên 2 vị trí bất kỳ đều có thể so sánh đc.
Mình đang nghiên cứu thêm userform nhưng chưa biết sai ở đâu.

Muốn ngẫu nhiên 2 ô thì trước tiên ta ngẫu nhiên 001 ô & ô thứ 2 đem so sánh là ô bên phải liền kề với ô ta đã chọn
ví dụ:

Sub ThuNghiemSoSanh2OBatKy()
Dim Rng1 As Range, Rng0 As Range

Set Rng1 = Selection
Set Rng0 = Rng1.Offset(, 1)
HighlightDifferentCharacter Rng1, Rng0
End Sub

Đúng rồi bác, code trên là em viết cho text cố định ở B3 & C3.
Em đang muốn text nằm ở 2 ô bất kỳ mình chọn vào 2 ô đó thì sẽ tiến hành so sánh ấy ạ (mình sẽ chỉ định bằng cách chọn 2 ô cần so sánh).

Kiểm tra lại . . .

Sub Highlight_Different_Character()
  Dim rng As Range, rng2 As Range, txt$, txt2$, L&, L2&, i&

Application.DisplayAlerts = False
  On Error Resume Next
ChonLai:
  Set rng = Application.InputBox(prompt:="Chon Cell Thu Nhat", Type:=8)
  If rng Is Nothing Then GoTo ChonLai
ChonLai2:
  Set rng2 = Application.InputBox(prompt:="Chon Cell Thu Hai", Type:=8)
  If rng2 Is Nothing Then GoTo ChonLai2
  rng.Font.ColorIndex = xlAutomatic
  rng2.Font.ColorIndex = xlAutomatic
  txt = rng(1, 1).Value: txt2 = rng2(1, 1).Value
  L = Len(txt): L2 = Len(txt2)

For i = 1 To L
    If i <= L2 Then
      If Mid(txt, i, 1) <> Mid(txt2, i, 1) Then
        rng.Characters(Start:=i, Length:=1).Font.Color = -16776961
        rng2.Characters(Start:=i, Length:=1).Font.Color = -16776961
      End If
    Else
      rng.Characters(Start:=i, Length:=L - L2).Font.Color = -16776961
      Exit For
    End If
  Next i
  If L2 > L Then
    rng2.Characters(Start:=L + 1, Length:=L2 - L).Font.Color = -16776961
  End If
  Application.DisplayAlerts = True
End Sub

www.giaiphapexcel.com/diendan/threads/h%E1%BB%8Fi-c%C3%A1ch-so-s%C3%A1nh-2-range-b%E1%BA%A5t-k%E1%BB%B3-trong-vba.162145/#post-1082838

Khóa học Power PI – Ứng dung trong Nhân sự
Khóa học SprinGO phù hợp

Khóa học Power PI – Ứng dung trong Nhân sự

TỔNG QUAN KHÓA HỌC: POWER BI CHO NGÀNH NHÂN SỰ Khóa học Power BI cho Nhân sự được thiết kế dành riêng cho các...

Xem khóa học
★★★★★ 5 ★ 1 👤 0 ▥ 0
Quảng cáo

Bạn nên đọc

Bình luận

Quảng cáo

Cũ vẫn chất

Xem thêm