Nhờ các thầy giúp em về so sánh 2 bảng dữ liệu

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

tst12346

Thành viên mới
Tham gia
20/11/08
Bài viết
12
Được thích
4
em có 2 bảng dữ liệu như trong file. em muốn nhờ các thầy giúp cách mà khi em nhập dữ liệu ở bảng A thì bảng B sẽ nhận ra dữ liệu trùng lặp và xoá nó ở bảng B.
Sự so sánh này áp dụng với tất cả các ô trong bảng chứ không nguyên theo hàng hay cột.

ví dụ: bảng B em đang có 3 cột dữ liệu 1 2 3/1 2 3/1 2 3.
em nhập dữ liệu vào bảng A là 1 4 5
như vậy bảng B sẽ tự động xoá hết các ô có chứa giá trị 1 và còn lại là 2 3/ 2 3/ 2 3

E chân thành cảm ơn các thầy và chúc các thầy năm mới may mắn và thành công.
 

File đính kèm

  • Book1.xlsx
    8.9 KB · Đọc: 7
Bạn cho macro này chạy sau khi đã nhập xong dữ liệu vô bảng A (như file đính kèm của bạn)
PHP:
Sub XoaTrungBangDuLieu()
 Dim Rng As Range, Cls As Range, sRng As Range, dRng As Range, Rg0 As Range
 Dim WF As Object, Trng As Long
 Dim MyAdd As String
 
 Set Rng = [G2].CurrentRegion
 Set WF = Application.WorksheetFunction
 Set Rg0 = [B1].CurrentRegion
 For Each Cls In Rg0
    Trng = WF.CountIf(Rng, Cls.Value)
    If Trng Then
        Set sRng = Rng.Find(Cls.Value, , xlFormulas, xlWhole)
        If Not sRng Is Nothing Then
            MyAdd = sRng.Address
            Do
                If dRng Is Nothing Then
                    Set dRng = sRng
                Else
                    Set dRng = Union(dRng, sRng)
                End If
                Set sRng = Rng.FindNext(sRng)
            Loop While Not sRng Is Nothing And sRng.Address <> MyAdd
            If Not dRng Is Nothing Then
                dRng.Value = "":                Set dRng = Nothing
            End If
        End If
    Else
        MsgBox Cls.Value
    End If
 Next Cls
End Sub
 
Upvote 0
Bạn cho macro này chạy sau khi đã nhập xong dữ liệu vô bảng A (như file đính kèm của bạn)
PHP:
Sub XoaTrungBangDuLieu()
 Dim Rng As Range, Cls As Range, sRng As Range, dRng As Range, Rg0 As Range
 Dim WF As Object, Trng As Long
 Dim MyAdd As String
 
 Set Rng = [G2].CurrentRegion
 Set WF = Application.WorksheetFunction
 Set Rg0 = [B1].CurrentRegion
 For Each Cls In Rg0
    Trng = WF.CountIf(Rng, Cls.Value)
    If Trng Then
        Set sRng = Rng.Find(Cls.Value, , xlFormulas, xlWhole)
        If Not sRng Is Nothing Then
            MyAdd = sRng.Address
            Do
                If dRng Is Nothing Then
                    Set dRng = sRng
                Else
                    Set dRng = Union(dRng, sRng)
                End If
                Set sRng = Rng.FindNext(sRng)
            Loop While Not sRng Is Nothing And sRng.Address <> MyAdd
            If Not dRng Is Nothing Then
                dRng.Value = "":                Set dRng = Nothing
            End If
        End If
    Else
        MsgBox Cls.Value
    End If
 Next Cls
End Sub
Cảm ơn thầy để em thử
 
Upvote 0
Bạn cho macro này chạy sau khi đã nhập xong dữ liệu vô bảng A (như file đính kèm của bạn)
PHP:
Sub XoaTrungBangDuLieu()
 Dim Rng As Range, Cls As Range, sRng As Range, dRng As Range, Rg0 As Range
 Dim WF As Object, Trng As Long
 Dim MyAdd As String
 
 Set Rng = [G2].CurrentRegion
 Set WF = Application.WorksheetFunction
 Set Rg0 = [B1].CurrentRegion
 For Each Cls In Rg0
    Trng = WF.CountIf(Rng, Cls.Value)
    If Trng Then
        Set sRng = Rng.Find(Cls.Value, , xlFormulas, xlWhole)
        If Not sRng Is Nothing Then
            MyAdd = sRng.Address
            Do
                If dRng Is Nothing Then
                    Set dRng = sRng
                Else
                    Set dRng = Union(dRng, sRng)
                End If
                Set sRng = Rng.FindNext(sRng)
            Loop While Not sRng Is Nothing And sRng.Address <> MyAdd
            If Not dRng Is Nothing Then
                dRng.Value = "":                Set dRng = Nothing
            End If
        End If
    Else
        MsgBox Cls.Value
    End If
 Next Cls
End Sub
Thầy ơi dữ liệu ở bảng A cũng bị xoá luôn rồi. em muốn giữ lại dữ liệu ở bảng A chỉ xoá bảng B thôi. Mà xoá cũng hết sạch luôn. e thử cho dữ liệu bảng B chừa lại mấy số khác bảng A mà chạy xoá sạch luôn. Mà em muốn thực hiện ở từng cặp bảng A vs B , C vs D có dc ko?
 

File đính kèm

  • Book1.xlsx
    8.9 KB · Đọc: 1
Lần chỉnh sửa cuối:
Upvote 0
(1) . . . . ơi dữ liệu (DL) ở bảng A cũng bị xoá luôn rồi. em muốn giữ lại dữ liệu ở bảng A chỉ xoá bảng B thôi. Mà xoá cũng hết sạch luôn. e thử cho dữ liệu bảng B chừa lại mấy số khác bảng A mà chạy xoá sạch luôn. (2) Mà em muốn thực hiện ở từng cặp bảng A vs B , C vs D có dc ko?
(1) DL bảng A bị xóa theo vì có thể DL 2 bảng 'dính nhau', có nghĩa là DL 2 bảng không cách nhau chí ít 1 hàng hay 1 cột (rỗn) như trong ví dụ của #1!
(2) Cũng sẼ OK, cụ thể có DL giả lập thì sẽ mần tiếp

(3) CHÚC MỌI NGƯỜI ĐÃ & ĐANG ĐỌC BÀI BƯỚC SANG NĂM MỚI NHIỀU HẠNH PHÚC & THÀNH CÔNG!
 
Upvote 0
Liên kết: https://youtu.be/phBlvIp1c_8

Bài đã được tự động gộp:

(1) DL bảng A bị xóa theo vì có thể DL 2 bảng 'dính nhau', có nghĩa là DL 2 bảng không cách nhau chí ít 1 hàng hay 1 cột (rỗn) như trong ví dụ của #1!
(2) Cũng sẼ OK, cụ thể có DL giả lập thì sẽ mần tiếp

(3) CHÚC MỌI NGƯỜI ĐÃ & ĐANG ĐỌC BÀI BƯỚC SANG NĂM MỚI NHIỀU HẠNH PHÚC & THÀNH CÔNG!
 
Upvote 0
(1) DL bảng A bị xóa theo vì có thể DL 2 bảng 'dính nhau', có nghĩa là DL 2 bảng không cách nhau chí ít 1 hàng hay 1 cột (rỗn) như trong ví dụ của #1!
(2) Cũng sẼ OK, cụ thể có DL giả lập thì sẽ mần tiếp

(3) CHÚC MỌI NGƯỜI ĐÃ & ĐANG ĐỌC BÀI BƯỚC SANG NĂM MỚI NHIỀU HẠNH PHÚC & THÀNH CÔNG!
Thớt chỉ đòi hỏi thôi chứ chưa có kinh nghiệm, và chưa biết thế nào là "xóa tự động". Có file giả lập cũng như không - có hiểu đâu mà giả lập.
Bạn phải hỏi thẳng cái file làm việc trước khi bị xóa.

(mà phải phục bạn kiên nhẫn, chịu khó đoán mấy từ viết tắt :p )
 
Upvote 0
Thớt chỉ đòi hỏi thôi chứ chưa có kinh nghiệm, và chưa biết thế nào là "xóa tự động". Có file giả lập cũng như không - có hiểu đâu mà giả lập.
Bạn phải hỏi thẳng cái file làm việc trước khi bị xóa.

(mà phải phục bạn kiên nhẫn, chịu khó đoán mấy từ viết tắt :p )
Ko phải là đòi hỏi. Thực sự thì em ko biết mấy cái excel này. Ko dấu dốt nên e hỏi và có những từ ngữ nó ko chuyên môn lắm chứ e chỉ là nói làm sao cho rõ nhất cái mà e muốn các thầy hỗ trợ thôi. Mong các thầy đừng để ý.
 
Upvote 0
Thầy ơi dữ liệu ở bảng A cũng bị xoá luôn rồi. em muốn giữ lại dữ liệu ở bảng A chỉ xoá bảng B thôi. Mà xoá cũng hết sạch luôn. e thử cho dữ liệu bảng B chừa lại mấy số khác bảng A mà chạy xoá sạch luôn. Mà em muốn thực hiện ở từng cặp bảng A vs B , C vs D có dc ko?
Chúc mừng năm mới. _)(#;
Lâu rồi không nhậu thả giàn ! ! !

Kiểm tra lại.
Mã:
Sub ABC()
  Dim a(), b(), dic As Object
  Dim sRow&, fR&, eR&, i&, r&, j&
 
  Set dic = CreateObject("scripting.dictionary")
  sRow = Range("A" & Rows.Count).End(xlUp).Row
  a = Range("A1:D" & sRow).Value
  b = Range("F1:K" & sRow).Value
  fR = 1
  For i = 1 To sRow
    If a(i, 2) = Empty Then
      eR = i - 1
      For r = fR To eR
        For j = 1 To UBound(b, 2)
          If dic.exists(b(r, j)) Then b(r, j) = Empty
        Next j
      Next r
      fR = r + 1
      dic.RemoveAll
    Else
      For j = 1 To UBound(a, 2)
        dic(a(i, j)) = ""
      Next j
    End If
  Next i
  Range("F1").Resize(sRow, UBound(b, 2)) = b
End Sub
 
Upvote 0
Ko phải là đòi hỏi. Thực sự thì em ko biết mấy cái excel này. Ko dấu dốt nên e hỏi và có những từ ngữ nó ko chuyên môn lắm chứ e chỉ là nói làm sao cho rõ nhất cái mà e muốn các thầy hỗ trợ thôi. Mong các thầy đừng để ý.
Tôi nói tiếng Việt chứ đâu có "chuyên môn" chỗ nào.
Theo tiếng Việt thì ko, e, dc là gì?
 
Upvote 0
Chúc mừng năm mới. _)(#;
Lâu rồi không nhậu thả giàn ! ! !

Kiểm tra lại.
Mã:
Sub ABC()
  Dim a(), b(), dic As Object
  Dim sRow&, fR&, eR&, i&, r&, j&
 
  Set dic = CreateObject("scripting.dictionary")
  sRow = Range("A" & Rows.Count).End(xlUp).Row
  a = Range("A1:D" & sRow).Value
  b = Range("F1:K" & sRow).Value
  fR = 1
  For i = 1 To sRow
    If a(i, 2) = Empty Then
      eR = i - 1
      For r = fR To eR
        For j = 1 To UBound(b, 2)
          If dic.exists(b(r, j)) Then b(r, j) = Empty
        Next j
      Next r
      fR = r + 1
      dic.RemoveAll
    Else
      For j = 1 To UBound(a, 2)
        dic(a(i, j)) = ""
      Next j
    End If
  Next i
  Range("F1").Resize(sRow, UBound(b, 2)) = b
End Sub
Năm mới em chúc Anh cả ăn tết vui vẻ. Năm mới phát tài. Gia đình an khang thịnh vượng!
 
Upvote 0
Tôi nói tiếng Việt chứ đâu có "chuyên môn" chỗ nào.
Theo tiếng Việt thì ko, e, dc là gì?
À à em quên. Lâu không nhắn tin nên viết nó hơi líu.
Bài đã được tự động gộp:

Chúc mừng năm mới. _)(#;
Lâu rồi không nhậu thả giàn ! ! !

Kiểm tra lại.
Mã:
Sub ABC()
  Dim a(), b(), dic As Object
  Dim sRow&, fR&, eR&, i&, r&, j&
 
  Set dic = CreateObject("scripting.dictionary")
  sRow = Range("A" & Rows.Count).End(xlUp).Row
  a = Range("A1:D" & sRow).Value
  b = Range("F1:K" & sRow).Value
  fR = 1
  For i = 1 To sRow
    If a(i, 2) = Empty Then
      eR = i - 1
      For r = fR To eR
        For j = 1 To UBound(b, 2)
          If dic.exists(b(r, j)) Then b(r, j) = Empty
        Next j
      Next r
      fR = r + 1
      dic.RemoveAll
    Else
      For j = 1 To UBound(a, 2)
        dic(a(i, j)) = ""
      Next j
    End If
  Next i
  Range("F1").Resize(sRow, UBound(b, 2)) = b
End Sub
Cảm ơn thầy. Chúc thầy năm mới may mắn và thành công.
 
Upvote 0
Chúc mừng năm mới. _)(#;
Lâu rồi không nhậu thả giàn ! ! !

Kiểm tra lại.
Mã:
Sub ABC()
  Dim a(), b(), dic As Object
  Dim sRow&, fR&, eR&, i&, r&, j&
 
  Set dic = CreateObject("scripting.dictionary")
  sRow = Range("A" & Rows.Count).End(xlUp).Row
  a = Range("A1:D" & sRow).Value
  b = Range("F1:K" & sRow).Value
  fR = 1
  For i = 1 To sRow
    If a(i, 2) = Empty Then
      eR = i - 1
      For r = fR To eR
        For j = 1 To UBound(b, 2)
          If dic.exists(b(r, j)) Then b(r, j) = Empty
        Next j
      Next r
      fR = r + 1
      dic.RemoveAll
    Else
      For j = 1 To UBound(a, 2)
        dic(a(i, j)) = ""
      Next j
    End If
  Next i
  Range("F1").Resize(sRow, UBound(b, 2)) = b
End Sub
Thầy ơi bài kia em làm được rồi nhờ code của thầy em tiết kiệm được rất nhiều thời gian. Em muốn nhờ thầy thêm một bài nữa thầy giúp em nhé. Bài này là đếm các số 0 trong 1 hàng. Chi tiết em để trong file đính kèm. Em cảm ơn.
 

File đính kèm

  • Book1.xlsx
    9 KB · Đọc: 6
Upvote 0
Thầy ơi bài kia em làm được rồi nhờ code của thầy em tiết kiệm được rất nhiều thời gian. Em muốn nhờ thầy thêm một bài nữa thầy giúp em nhé. Bài này là đếm các số 0 trong 1 hàng. Chi tiết em để trong file đính kèm. Em cảm ơn.
Sao không tự thử làm trước đi xem sao nhỉ, nếu kết quả sai lệch gì đó thì đưa lên nhờ sửa chứ không làm chút nào mà nhờ cả thế này thì bao giờ mới tự làm được.
 
Upvote 0
Sao không tự thử làm trước đi xem sao nhỉ, nếu kết quả sai lệch gì đó thì đưa lên nhờ sửa chứ không làm chút nào mà nhờ cả thế này thì bao giờ mới tự làm được.
Bạn này có nói trước là mình không biết về Excel.
Chắc là nói láo với sếp để nhận việc. Sau đó công việc cứ giao cho các nhà hảo tâm GPE. Hết cái này sẽ thấy cái kế tiếp.
 
Upvote 0
Sao không tự thử làm trước đi xem sao nhỉ, nếu kết quả sai lệch gì đó thì đưa lên nhờ sửa chứ không làm chút nào mà nhờ cả thế này thì bao giờ mới tự làm được.
Bạn này có nói trước là mình không biết về Excel.
Chắc là nói láo với sếp để nhận việc. Sau đó công việc cứ giao cho các nhà hảo tâm GPE. Hết cái này sẽ thấy cái kế tiếp.
2 thầy ơi đúng là em có việc của em nhưng là việc cá nhân của em thôi chứ không phải là làm ăn kinh doanh hay đi xin việc hay giao việc gì cả. Em không am hiểu thật nên mới nhờ để rút ngắn thời gian làm thủ công thôi. Chứ nếu để làm ăn kiếm tiền thì em đã đi học hành đàng hoàng chứ nhờ vả mãi thế nào được, cái kim trong bọc mãi rồi cũng có ngày lòi ra. Các thầy cứ để ý em quá. Em làm ăn kinh doanh tự do ở ngoài thôi. Em là sếp của chính mình. Hì. Nói thật là trước em có thuê người làm những việc thống kê sổ sách nhưng năm nay khó khăn quá em để họ nghỉ rồi mình tự làm nên muốn chỉnh 1 số cái theo ý của mình. Quan điểm làm việc của em là ai giỏi hơn mình giúp đỡ mình em đều gọi là thầy chứ không phải sinh viên mới ra trường gì đâu ạ.
 
Lần chỉnh sửa cuối:
Upvote 0
Bởi vậy mới có nhiều chuyện tùm lum.
Người chịu khó học thì có khả năng biết rằng 10 công việc mình đang làm có thể chỉ túm lại còn 1, 2.

Bạn tự nghĩ ra mình muốn làm gì rồi cho vào Excel, sau đó nhờ người ta làm giùm mình. Chuyện lô gic để mặc cho bên giúp họ tìm hộ.

Người chịu khó học hỏi thì biết mình có thể làm được gì nếu thiết kế bảng tính theo chiều hướng lô gic.
 
Upvote 0
Web KT
Back
Top Bottom