Hỏi cách so sánh 2 range bất kỳ trong VBA
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 Sub213
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 IntegerFor 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 SubB02: 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 SubNế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ự
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
Bình luận