Code tìm kiếm và so sánh dữ liệu

Liên hệ QC

bebeen

Thành viên thường trực
Tham gia
13/2/12
Bài viết
213
Được thích
24
Em muốn nhờ AC thiết lập cho em code tìm kiếm và so sánh dữ liệu. Câu hỏi cụ thể trong file đính kèm!
Cám ơn AC nhiều!
 

File đính kèm

  • Finding Data.rar
    13.6 KB · Đọc: 19
LA chắc là Lào . còn VL hổng biết . Venezuela chăng ....
 
Upvote 0
Nhớ vụ bữa topic kia. Teamview xử cho e ý. Nhưng .........trong khi làm thì phát hiện ra 1 điều rằng...........Office 2007 không thể CF so sánh dữ liệu giữa 2 worksheet khác nhau.........Hình như trong 1 sheet mới cho phép đặt điều kiện ý.
Cho nên chủ topic này chắc cũng là Office 2007 rồi...........
Thành thật........nên nâng cấp lên cả đi...............2010 hoặc cao hơn...........kakaka//**///**///**///**///**/
Đúng, em đang sài Office 2007. Ở khu vực này kiếm cái đĩa đó sao mà khó thế anh ạ!Về đến HN thì muộn không ai bán. Thui, chủ nhật này em phải lang thang thu đô mua thui...! Hi...
 
Upvote 0
Đúng, em đang sài Office 2007. Ở khu vực này kiếm cái đĩa đó sao mà khó thế anh ạ!Về đến HN thì muộn không ai bán. Thui, chủ nhật này em phải lang thang thu đô mua thui...! Hi...
Xài CF thì xài Countif là ra rồi. Muốn code thì cho bạn code này:
Mã:
Sub ToMau()
Dim I, J
  With Sheet2
     For I = 5 To .Range("A" & Rows.Count).End(3).Row
       For J = 1 To 3
          If Application.WorksheetFunction.CountIf(Sheet1.Range("A1:C250"), Sheet2.Range("A" & I).Offset(, J - 1)) = 0 Then
             .Range("A" & I).Offset(, J - 1).Font.Bold = True
             .Range("A" & I).Offset(, J - 1).Font.Color = -16776961
          End If
       Next J
     Next
  End With
End Sub
 
Upvote 0
Nhớ vụ bữa topic kia. Teamview xử cho e ý. Nhưng .........trong khi làm thì phát hiện ra 1 điều rằng...........Office 2007 không thể CF so sánh dữ liệu giữa 2 worksheet khác nhau.........Hình như trong 1 sheet mới cho phép đặt điều kiện ý.
Đúng là bất cập nằm ở đấy. Cho nên lý do không thấy được cũng do nguyên nhân này
 
Upvote 0
Xài CF thì xài Countif là ra rồi. Muốn code thì cho bạn code này:
Mã:
Sub ToMau()
Dim I, J
  With Sheet2
     For I = 5 To .Range("A" & Rows.Count).End(3).Row
       For J = 1 To 3
          If Application.WorksheetFunction.CountIf(Sheet1.Range("A1:C250"), Sheet2.Range("A" & I).Offset(, J - 1)) = 0 Then
             .Range("A" & I).Offset(, J - 1).Font.Bold = True
             .Range("A" & I).Offset(, J - 1).Font.Color = -16776961
          End If
       Next J
     Next
  End With
End Sub

có vẻ mạnh mẽ . hí hí
nhưng có cách nào không dùng vòng lặp không ta ? hi hi
 
Upvote 0
dạ em chưa hiểu lắm , anh có thể demo cái function đó dùm em được không anh . cám ơn
thay vì viết If Application.WorksheetFunction.CountIf(Sheet1.Range("A1:C250"), Sheet2.Range("A" & I).Offset(, J - 1)) = 0
thì viết ra riêng cho mình 1 cái Function đếm là ok
 
Upvote 0
thay vì viết If Application.WorksheetFunction.CountIf(Sheet1.Range("A1:C250"), Sheet2.Range("A" & I).Offset(, J - 1)) = 0
thì viết ra riêng cho mình 1 cái Function đếm là ok
ủa vậy là anh hiểu nhầm ý em thì phải . em hỏi là ở trên có 2 cái vòng lặp lồng nhau
có cách nào bỏ hết không còn cái vòng nào không ấy ....
 
Upvote 0
Xài CF thì xài Countif là ra rồi. Muốn code thì cho bạn code này:
Mã:
Sub ToMau()
Dim I, J
  With Sheet2
     For I = 5 To .Range("A" & Rows.Count).End(3).Row
       For J = 1 To 3
          If Application.WorksheetFunction.CountIf(Sheet1.Range("A1:C250"), Sheet2.Range("A" & I).Offset(, J - 1)) = 0 Then
             .Range("A" & I).Offset(, J - 1).Font.Bold = True
             .Range("A" & I).Offset(, J - 1).Font.Color = -16776961
          End If
       Next J
     Next
  End With
End Sub

Nếu dùng cái này, khi chạy code rồi nó cho kết quả đúng ý em. Nhưng em muốn chưa thấy thỏa mãn vì: Nếu Chạy code nó sẽ tìm ra mã sai và tô màu. Khi mình sửa mã đó cho đúng và chạy lại code thì nó vẫn giữ màu đã tô mà không trở về trạng thái bình thường như khi nó là đúng? Vậy code này phải sửa lại như thế nào ạ?
 
Upvote 0
Nếu dùng cái này, khi chạy code rồi nó cho kết quả đúng ý em. Nhưng em muốn chưa thấy thỏa mãn vì: Nếu Chạy code nó sẽ tìm ra mã sai và tô màu. Khi mình sửa mã đó cho đúng và chạy lại code thì nó vẫn giữ màu đã tô mà không trở về trạng thái bình thường như khi nó là đúng? Vậy code này phải sửa lại như thế nào ạ?
Sửa lại như thế này nhé:
Mã:
Sub ToMau()
Dim I, J
With Sheet2
   For I = 5 To .Range("A" & Rows.Count).End(3).Row
    For J = 1 To 3
      If Application.WorksheetFunction.CountIf(Sheet1.Range("A1:C250"), Sheet2.Range("A" & I).Offset(, J - 1)) = 0 Then
       .Range("A" & I).Offset(, J - 1).Font.Bold = True
       .Range("A" & I).Offset(, J - 1).Font.Color = -16776961
      Else
       .Range("A" & I).Offset(, J - 1).Font.Bold = False
       .Range("A" & I).Offset(, J - 1).Font.ThemeColor = xlThemeColorLight1
      End If
    Next J
   Next I
 End With
End Sub
P/s: Sao không ai làm cách mà "chim hồng" đang muốn nhỉ. Cách đó cũng rất hay và gọn.
 
Lần chỉnh sửa cuối:
Upvote 0
Đoạn này
Mã:
For I = 5 To .Range("A" & Rows.Count).End(3).Row

Nếu dòng cuối của cột A mà nhỏ hơn cột B, hoặc C thì tèo téo teo.............
Vấn đề này để chủ topic tự tùy biến. Dữ liệu của người khác thay đổi như thế nào sao mình biết được mà lần.
 
Upvote 0
Vấn đề này để chủ topic tự tùy biến. Dữ liệu của người khác thay đổi như thế nào sao mình biết được mà lần.
Số liệu ở sheet DATA thực tế không phải là số liệu như vậy. Nó sẽ không tăng đều và đủ 7 ký tự mỗi ô ạ! Vậy nó có ảnh hưởng gì không?
 
Upvote 0
Góp thêm cách không vòng lặp dữ liệu sheet DATA chuyển qua 3 cột O, P, Q sheet FIND
Mã:
Sub ToMau()
    With Sheet2
      .[A5].Select
      .Range("A5:C14").FormatConditions.Delete
           With Range("A5:C14").FormatConditions.Add( _
                Type:=xlExpression, _
                Formula1:="=Countif($O$1:$Q$250,A5)=0")
               .Font.Color = -16776961
           End With
    End With
End Sub
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom