Chào các bạn, Minh tìm trên diễn đàn thấy có đoạn code viết cho việc dò tìm và tô màu ô khác nhau giữa 2 sheet. Mình có vấn đề gần giống như vậy nhưng phức tạp hơn nên mình muốn tự tìm hiểu để áp dụng.
Minh gửi file đính kèm hình như là của bạn tên Phụng, nhờ các bạn giải thích giúp.
Thân.
Dịch tự động sang tiếng việt thì nó thành thế này
Set Ws = Sheets("THONG TIN CHUAN")
Cho Ws là Sheets("THONG TIN CHUAN")
Set MaDo = Application.InputBox("Nhap vung du lieu", "bang luong", Type:=8):
Cho MaDo là vùng dữ liệu chọn thông qua InputBox có nội dung ghi trong bảng là "Nhap vung du lieu", cái thanh tiêu đề là "bang luong", Giá trị trả về dạng text
Set MaChuan = Ws.Range(Ws.[b4], Ws.[b10000].End(xlUp))
Cho Machuan là vùng của sheet Thong tin chuan, từ hàng B4 đến cuối nhất của cột B10000 tính từ dưới lên
MaDo.Resize(, 16).Interior.ColorIndex = xlNone: MaChuan.Resize(, 7).Interior.ColorIndex = xlNone
định dạng lại Màu của Mado mà Machuan Tức là sheet đầu và vùng chọn cảu sheet sau về không đổ màu gì cả(16 và 7 ở đây là số cột)
Set d = CreateObject("scripting.dictionary"): K = 2
Tạo 1 thư viện d và cho K từ 2
For I = 1 To MaChuan.Rows.Count
Bắt đầu cho chạy từ 1 đến hàng cuối cùng của Machuan ( sheet đầu)
If Not d.exists(MaChuan(I).Value) Then d.Add MaChuan(I).Value, I
Nếu d không có gì thì thên giá trị cho d ở MaChuan tương đương hàng I
(Đến đây là có dự liệu toàn bộ mã nv?)
Next I
For I = 1 To MaDo.Rows.Count
Lại chạy từ 1 đến hàng cuối của MaDo
M = d.Item(MaDo(I).Value)
Giờ lại gán thêm vào thư viên giá trị M theo hàng tương đương I
If MaChuan(M).Offset(, 2) <> MaDo(I).Offset(, 3) Then K = K + 1: MaChuan(M).Offset(, 2).Interior.ColorIndex = K: MaDo(I).Offset(, 3).Interior.ColorIndex = K
Nếu vị trí trong sheet Machuan tức là cột mã nv sang 2 cột nữa mà khác vị trí mã nv trong MaDo cộng thêm 3 cột nữa thì tăng K thêm 1 đơn vị. Cho màu của cột Machuan tại hàng M cộng thêm 2 bằng màu K. và màu của MaDo tại vị trí hàng I công thêm 3 là màu K
For J = 5 To 7
Lại chạy từ 5 đến 7 (để tìm cột mã số thuế đến cột tài khoản)
If MaChuan(M).Offset(, J) <> MaDo(I).Offset(, J + 9) Then
Nếu vị trí mã nhân viên hàng thứ M dịch sang phải 1 lượng J mà khác sheet MaDo có mã nv vị trí thứ I dịch sang phải 1 lượng J +9
K = K + 1
thì cho K tăng lên 1 đơn vị (mục đích cho màu mè thay đổi thôi)
MaChuan(M).Offset(, J).Interior.ColorIndex = K
Màu trong sheet Machuan tại hàng M cột tính từ cột mã nv sang 1 lượng J có màu K
MaDo(I).Offset(, J + 9).Interior.ColorIndex = K
Màu trong sheet MaDo tại hàng I cột tính từ cột mã nv sang 1 lượng J+9 có màu K
End If
Next J
Next I
Cứ làm thế cho đến khi nào I và M không còn cái nào trùng nhau thì thôi
Với kiểu làm này thì máy sẽ tự hiểu Nếu trong sheet 1 cso mã nhân viên là tp028 (vị trí hàng là M) thì kiểm tra xem vùng chọn bên "bang luong" có mã nhân viên nào không nếu có thì vị trí hàng của nó là I
Sau khi tìm được vị trí hàng rồi thì so đến MST, CMT và số tk. nếu có khác nhau thì cho đổ màu ở cả 3 sheet