Giúp viết code 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

le thi thuy 3013

Thành viên mới
Tham gia
16/10/18
Bài viết
19
Được thích
1
Hi các anh/chị.
Mình có 2 dữ liệu lấy từ 2 nguồn khác nhau nên khác định dạng, giờ cần kiểm tra trong sheet 1 cột A xem tên công ty có xuất hiện trong sheet 2 chưa, nếu đã có thì thêm vào sheet 1 cột C và D tên khách và tên người chăm sóc trong sheet 2, chưa có thì bỏ trắng.
Nhờ mọi người xem và hướng dẫn em với ạ.
 

File đính kèm

  • Follow data.xlsx
    14.1 KB · Đọc: 9
Hi các anh/chị.
Mình có 2 dữ liệu lấy từ 2 nguồn khác nhau nên khác định dạng, giờ cần kiểm tra trong sheet 1 cột A xem tên công ty có xuất hiện trong sheet 2 chưa, nếu đã có thì thêm vào sheet 1 cột C và D tên khách và tên người chăm sóc trong sheet 2, chưa có thì bỏ trắng.
Nhờ mọi người xem và hướng dẫn em với ạ.
Cơ sở dữ liệu của bạn thiết kế bị thiếu phần quan trọng nhất đó là mã khách hàng.
Nên khi làm việc với dữ liệu dạng này thì không khoa học lắm, ví như 1 vài công ty có tên trùng hay na ná nhau thì code dễ sai.
Xưa mình tí lấy phải cô chị chỉ vì tên 2 chị em cô ấy rất giống nhau nhá.
Chỉ khi xem số CMND mới biết vợ mình là ai đó.
:clap:
 
Cơ sở dữ liệu của bạn thiết kế bị thiếu phần quan trọng nhất đó là mã khách hàng.
Nên khi làm việc với dữ liệu dạng này thì không khoa học lắm, ví như 1 vài công ty có tên trùng hay na ná nhau thì code dễ sai.
Xưa mình tí lấy phải cô chị chỉ vì tên 2 chị em cô ấy rất giống nhau nhá.
Chỉ khi xem số CMND mới biết vợ mình là ai đó.
:clap:
Cảm ơn góp ý của bạn, do k set dữ liệu từ đầu nên mình đang đau đầu vụ này đây, bạn có giải pháp thì đưa giúp mình để tham khảo nhé.
 
Hi các anh/chị.
Mình có 2 dữ liệu lấy từ 2 nguồn khác nhau nên khác định dạng, giờ cần kiểm tra trong sheet 1 cột A xem tên công ty có xuất hiện trong sheet 2 chưa, nếu đã có thì thêm vào sheet 1 cột C và D tên khách và tên người chăm sóc trong sheet 2, chưa có thì bỏ trắng.
Nhờ mọi người xem và hướng dẫn em với ạ.
Tạo sheet ChuyenDoi và nhập tay các từ viết theo các dạng khác nhau về cùng 1 dạng, bạn tự nhập thêm các từ mới vào phía dưới, không được để ô trống chen giữa
Hy vong code xử lý được hơn 95 % trường hợp
Mã:
Option Explicit
Option Compare Text
Sub XYZ()
  Dim arr(), aSale(), aVolume(), dic As Object
  Dim sRow&, sr&, i&, r&, ik&, tmp$
 

  Set dic = CreateObject("scripting.dictionary")
  dic.CompareMode = 1
  With Sheets("Chuyendoi")
    arr = .Range("B2:C" & .Range("B" & Rows.Count).End(xlUp).Row).Value
  End With
  sRow = UBound(arr)

  With Sheets("Sale")
    aSale = .Range("A2", .Range("B" & Rows.Count).End(xlUp)).Value
  End With
  For i = 1 To UBound(aSale)
    tmp = aSale(i, 1)
    For r = 1 To sRow
      If InStr(1, tmp, arr(r, 1)) > 0 Then
        tmp = Replace(tmp, arr(r, 1), arr(r, 2))
      End If
    Next r
    dic(tmp) = i
  Next i
  With Sheets("Volume")
    aVolume = .Range("A2", .Range("A" & Rows.Count).End(xlUp)).Value
  End With
  sr = UBound(aVolume)
  ReDim res(1 To sr, 1 To 2)
  For i = 1 To sr
    tmp = aVolume(i, 1)
    If dic.exists(tmp) Then
      ik = dic(tmp)
      res(i, 1) = aSale(ik, 1)
      res(i, 2) = aSale(ik, 2)
    Else
      For r = 1 To sRow
        If InStr(1, tmp, arr(r, 1)) > 0 Then
          tmp = Replace(tmp, arr(r, 1), arr(r, 2))
        End If
      Next r
      If dic.exists(tmp) Then
        ik = dic(tmp)
        res(i, 1) = aSale(ik, 1)
        res(i, 2) = aSale(ik, 2)
      End If
    End If
  Next i
  Sheets("Volume").Range("C2").Resize(sr, 2) = res
End Sub
 

File đính kèm

  • Follow data.xlsm
    24.2 KB · Đọc: 12
Web KT
Back
Top Bottom