So sánh sự khác biệt trong các cột của 2 file excel và tô màu (1 người xem)

Người dùng đang xem chủ đề này

uronmapu

Thành viên thường trực
Tham gia
9/6/10
Bài viết
364
Được thích
15
Xin chào cả nhà

Em có 1 vướng mắc xin cả nhà giúp đỡ

Em có 2 file excel đính kèm

Mình muốn các cell của từng hàng trong các cột của file 1 nếu trùng với cell của từng hàng trong file 2 sẽ tô màu

Khó giải thích quá, các bạn xem file đính kèm sẽ rõ
 

File đính kèm

Xin chào cả nhà

Em có 1 vướng mắc xin cả nhà giúp đỡ

Em có 2 file excel đính kèm

Mình muốn các cell của từng hàng trong các cột của file 1 nếu trùng với cell của từng hàng trong file 2 sẽ tô màu

Khó giải thích quá, các bạn xem file đính kèm sẽ rõ

Copy code này bỏ vào 1 module của file goc
File Sosanh.xls để chung thư mục với file Goc.xls

PHP:
Sub sosanh()
Dim goc, sosanh, item, tim
Set goc = Sheet1.UsedRange
Workbooks.Open ThisWorkbook.Path & "\Sosanh.xls"
Set sosanh = ActiveWorkbook.ActiveSheet.UsedRange
For Each item In goc
  Set tim = sosanh.Find(item)
  If Not tim Is Nothing Then
    item.Interior.ColorIndex = 6
    tim.Interior.ColorIndex = 6
  End If
Next
End Sub
 
Copy code này bỏ vào 1 module của file goc
File Sosanh.xls để chung thư mục với file Goc.xls

PHP:
Sub sosanh()
Dim goc, sosanh, item, tim
Set goc = Sheet1.UsedRange
Workbooks.Open ThisWorkbook.Path & "\Sosanh.xls"
Set sosanh = ActiveWorkbook.ActiveSheet.UsedRange
For Each item In goc
  Set tim = sosanh.Find(item)
  If Not tim Is Nothing Then
    item.Interior.ColorIndex = 6
    tim.Interior.ColorIndex = 6
  End If
Next
End Sub
Code này có khả năng bỏ sót một số ô nếu số ô trùng >1. Theo mình, dùng Find Next sẽ tốt hơn.
 
Code này có khả năng bỏ sót một số ô nếu số ô trùng >1. Theo mình, dùng Find Next sẽ tốt hơn.

Mình không rành về VBA nên thấy dữ liệu thế nào thì làm thế đó thôi. Nếu tác giả thấy đúng thì tốt, không đúng thì làm lại chả sao cả. Làm nhiều lần thì vui nhiều lần thôi. Còn Findnext thì mình hỏng biết dùng nên có muốn cũng không dùng được.
 
Mình chỉ muốn trao đổi để học tập thôi. Bọn mình đều là những người đang tìm hiểu, học về VBA nên không đặt vấn đề rành hay không rành ở đây. Ai viết code cũng mong giải quyết những trường hợp tổng quát. Không thể chỉ căn cứ vào dữ liệu đang có mà phải tính trước khả năng sẽ có. Về trường hợp trên, khả năng số trùng > 1 rất dễ xảy ra. Mình thấy thế nên góp ý chứ hoàn toàn không có suy nghĩ gì khác. Nếu những ý kiến của mình làm mích lòng bạn thì mình thành thật xin lỗi.
 
Đúng là nếu số trùng nhiều hơn 2 thì sai bác quanghai ạ

Bác xem file đính kèm: B4 và C5 ko được tô màu cho dù giống nhau

Xin bác nghiên cứu thêm trường hợp trong dữ liệu có nhiều cell có dữ liệu trùng nhau
 

File đính kèm

Đúng là nếu số trùng nhiều hơn 2 thì sai bác quanghai ạ

Bác xem file đính kèm: B4 và C5 ko được tô màu cho dù giống nhau

Xin bác nghiên cứu thêm trường hợp trong dữ liệu có nhiều cell có dữ liệu trùng nhau

Cho code này vào xem thế nào
Nhìn vàng hết màn hình thấy khiếp quá. Muốn đổi màu khác thì thay số 6 nhé.
PHP:
Sub sosanh()
Dim goc, sosanh, item, tim, first
Set goc = Sheet1.UsedRange
Workbooks.Open ThisWorkbook.Path & "\Sosanh.xls"
Set sosanh = ActiveWorkbook.ActiveSheet.UsedRange
For Each item In goc
  Set tim = sosanh.Find(item)
  If Not tim Is Nothing Then
    first = tim.Address
    Do
    Set tim = sosanh.FindNext(tim)
      item.Interior.ColorIndex = 6
      tim.Interior.ColorIndex = 6
    Loop Until first = tim.Address
  End If
Next
End Sub
 
Lần chỉnh sửa cuối:
Vẫn chưa đúng lắm ạ, e sửa lại code theo bác và chạy lại nhưng nó tô màu chưa chuẩn lắm

Như file của e: ổ A2 file 1 và ô A2 file 2 dữ liệu khác nhau, nhưng A2 file 1 lại tô vàng, còn A2 file 2 thì ko tô, đáng nhe chúng phải đều là ko tô màu
 

File đính kèm

Ô A2 của file sosanh có dữ liệu là chuỗi "a5' mã chuỗi này không có ở file goc thì làm sao tô màu?? Có lẽ yêu cầu của bạn và điều mình hiểu không giống nhau rồi. Chỉ là dữ liệu DEMO thì hay xảy ra tình trạng này
 
Đúng rồi, vậy thì nó sẽ ko tô màu ở cả A2 của file so sánh và cả A2 gốc chứ ạ

Đằng này chỉ có 1 cái

Ý e là muốn dữ liệu của cell nào đó trong file cần so sánh và file gốc ko trùng nhau thì sẽ ko tô màu (cell tương ứng nhau theo hàng, cột, A2.Sosanh và A2.Goc nếu giá trị khác nhau sẽ ko tô màu, nếu trùng nhau sẽ tô màu)
 
Đúng rồi, vậy thì nó sẽ ko tô màu ở cả A2 của file so sánh và cả A2 gốc chứ ạ

Đằng này chỉ có 1 cái

Ý e là muốn dữ liệu của cell nào đó trong file cần so sánh và file gốc ko trùng nhau thì sẽ ko tô màu (cell tương ứng nhau theo hàng, cột, A2.Sosanh và A2.Goc nếu giá trị khác nhau sẽ ko tô màu, nếu trùng nhau sẽ tô màu)

Thử phát này nữa xem sao. Xem ra code đầu và code này khác nhau xa quá. Hic

PHP:
Sub sosanh()
Application.ScreenUpdating = False
Dim goc, sosanh, i, j
Set goc = Sheet1.UsedRange
Workbooks.Open ThisWorkbook.Path & "\Sosanh.xls"
Set sosanh = ActiveWorkbook.ActiveSheet.UsedRange
For i = 1 To goc.Rows.Count
  For j = 1 To goc.Columns.Count
    If goc(i, j) <> "" Then
      If goc(i, j) = sosanh(i, j) Then
        goc(i, j).Interior.ColorIndex = 6
        sosanh(i, j).Interior.ColorIndex = 6
      End If
    End If
  Next
Next
Application.ScreenUpdating = True
End Sub
 
Cảm ơn bác, có vẻ chuẩn hơn rồi ạ

Nhưng bác có thể tô màu luôn cho e ô ko có dữ liệu được luôn ko?
 
Cảm ơn bác, có vẻ chuẩn hơn rồi ạ

Nhưng bác có thể tô màu luôn cho e ô ko có dữ liệu được luôn ko?

Muốn thế thì thêm cho bạn 2 cái dấu '

PHP:
Sub sosanh()
Application.ScreenUpdating = False
Dim goc, sosanh, i, j
Set goc = Sheet1.UsedRange
Workbooks.Open ThisWorkbook.Path & "\Sosanh.xls"
Set sosanh = ActiveWorkbook.ActiveSheet.UsedRange
For i = 1 To goc.Rows.Count
  For j = 1 To goc.Columns.Count
    'If goc(i, j) <> "" Then
      If goc(i, j) = sosanh(i, j) Then
        goc(i, j).Interior.ColorIndex = 6
        sosanh(i, j).Interior.ColorIndex = 6
      End If
    'End If
  Next
Next
Application.ScreenUpdating = True
End Sub
 
Vâng, chuẩn rồi ạ
Em hỏi thêm chút xíu nữa ạ
Vì e thấy dữ liệu thay đổi rất ít, nếu mà như này thì vùng tô màu nhiều quá
Em muốn chỉ cell nào thay đổi mới tô màu, còn ko thay đổi thì ko tô màu (nghĩa là ngược lại kết quả vừa làm của bác)

Xin bác chỉ giúp thêm

Có phải là thay dấu = thành dấu <> ko bác
 
Lần chỉnh sửa cuối:
Vâng, chuẩn rồi ạ
Em hỏi thêm chút xíu nữa ạ
Vì e thấy dữ liệu thay đổi rất ít, nếu mà như này thì vùng tô màu nhiều quá
Em muốn chỉ cell nào thay đổi mới tô màu, còn ko thay đổi thì ko tô màu (nghĩa là ngược lại kết quả vừa làm của bác)

Xin bác chỉ giúp thêm

Có phải là thay dấu = thành dấu <> ko bác

Đúng rồi đấy, cứ thử đi, chưa thỏa mản thì làm tiếp. Vui là chính mà.
 
Kè kè, bác thật là 1 đại cao thủ
Em đội ơn bác
Khi nào ra Hà Nội, bác pm e, e mời bác cafe nhé
Email: uronmapu@gmail.com
Nick yahoo của bác là quanghaibinhduongvietnam ạ??
Bác có hay onl ko e add lúc nào xin bác giúp đỡ cho tiện ạ
 

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

Back
Top Bottom