Dò mã sản phẩm theo tên hàng không đầy đủ chữ

Liên hệ QC

phamgiang90

Thành viên mới
Tham gia
10/4/22
Bài viết
25
Được thích
0
Em chào anh chị trong nhóm, Sheet1 em có 1 cột Tên sản phẩm và 1 cột mã sản phẩm , và sheet2 em có sẵn tên sản phẩm ,nhưng tên sản phẩm này chỉ có 1 phần chữ giống với tên sản phẩm sheet1 kia, bây giờ em muốn dò tìm tên này để lấy mã sản phẩm, anh chị trong nhóm có cách nào dò mã giúp em với ạ, Em cám ơn anh chị ạ
 

File đính kèm

  • Book2.xlsm
    13.5 KB · Đọc: 14
  • 1650559338092.png
    1650559338092.png
    41.9 KB · Đọc: 23
  • 1650559362564.png
    1650559362564.png
    21.2 KB · Đọc: 24
Em chào anh chị trong nhóm, Sheet1 em có 1 cột Tên sản phẩm và 1 cột mã sản phẩm , và sheet2 em có sẵn tên sản phẩm ,nhưng tên sản phẩm này chỉ có 1 phần chữ giống với tên sản phẩm sheet1 kia, bây giờ em muốn dò tìm tên này để lấy mã sản phẩm, anh chị trong nhóm có cách nào dò mã giúp em với ạ, Em cám ơn anh chị ạ
Hai ví dụ cuối của bạn bị sai, lần sau ví dụ cho chuẩn nhé.
 

File đính kèm

  • Book2.xlsm
    14 KB · Đọc: 14
Upvote 0
Vậy nếu trùng thì sẽ sai mã ngay, ý tưởng của bạn 99,99% là không khả thi.
do dữ liệu của em, 2 người nhập (1 người nhập gõ kiểu này, 1 người nhập kiểu khác), lên em thử lên đây hỏi xem anh chị trong nhóm có code VBA nào có thể dò tìm được không ạ
 
Upvote 0
do dữ liệu của em, 2 người nhập (1 người nhập gõ kiểu này, 1 người nhập kiểu khác), lên em thử lên đây hỏi xem anh chị trong nhóm có code VBA nào có thể dò tìm được không ạ
Dò thì chắc chắn thấy được và chắc chắn là trùng sẽ sai mã.
 
Upvote 0
do dữ liệu của em, 2 người nhập (1 người nhập gõ kiểu này, 1 người nhập kiểu khác), lên em thử lên đây hỏi xem anh chị trong nhóm có code VBA nào có thể dò tìm được không ạ
Phải triệt để từ trứng nước chứ dọn rác thế này có phải tự làm khổ bản thân không
 
Upvote 0
do dữ liệu của em, 2 người nhập (1 người nhập gõ kiểu này, 1 người nhập kiểu khác), lên em thử lên đây hỏi xem anh chị trong nhóm có code VBA nào có thể dò tìm được không ạ
Tóm lại trong công ty của bạn thằng đi làm thuê muốn làm thế nào cũng phải chấp nhận? Tôi mà là chủ thì tôi đẩy ngay ra đường. Còn nếu là nhân viên thì tôi báo cáo với sếp. Nếu sếp dung túng thì tôi cố chuyển việc. Ở lại chỉ là bất đắc dĩ thôi.
 
Upvote 0
Tóm lại trong công ty của bạn thằng đi làm thuê muốn làm thế nào cũng phải chấp nhận? Tôi mà là chủ thì tôi đẩy ngay ra đường. Còn nếu là nhân viên thì tôi báo cáo với sếp. Nếu sếp dung túng thì tôi cố chuyển việc. Ở lại chỉ là bất đắc dĩ thôi.
Vâng. Anh ạ .nhiều lúc bực mình lắm
Bài đã được tự động gộp:

Phải triệt để từ trứng nước chứ dọn rác thế này có phải tự làm khổ bản thân không
Vâng anh. Nhiều lúc khổ lắm anh ạ. Chỉ gõ thêm "-" là sai bét. Lại phải dò thủ công anh ạ
 
Upvote 0
Vâng. Anh ạ .nhiều lúc bực mình lắm

Vâng anh. Nhiều lúc khổ lắm anh ạ. Chỉ gõ thêm "-" là sai bét. Lại phải dò thủ công anh ạ
Nếu nhiệm vụ của bạn thì bạn nên có qui định và nhân viên phải làm theo. Mình thông cảm cho họ nhưng họ phải có kỷ luật.

Những chỗ nhập liệu cần chính xác thì bạn phải có code hiển thị vd. Form. Hiển thị tất cả các tên sản phẩm có trong cơ sở dữ liệu trong một danh sách. Mỗi khi người ta gõ một cụm từ nào đó vào ô tìm kiếm thì tìm trong csdl và chỉ hiện những dòng thỏa. Khi người ta chọn 1 trong những dòng thỏa thì lúc đó nhập vào sheet tên sản phẩm đầy đủ. Hoặc nếu csdl ngắn thì nhập vào vd. Data Validation.

Nếu người ta chọn từ csdl chuẩn thì không thể sai được, không thể có 10 người 11 ý được.
 
Upvote 0
Em chào anh chị trong nhóm, Sheet1 em có 1 cột Tên sản phẩm và 1 cột mã sản phẩm , và sheet2 em có sẵn tên sản phẩm ,nhưng tên sản phẩm này chỉ có 1 phần chữ giống với tên sản phẩm sheet1 kia, bây giờ em muốn dò tìm tên này để lấy mã sản phẩm, anh chị trong nhóm có cách nào dò mã giúp em với ạ, Em cám ơn anh chị ạ
Có những chuyện không như mơ, quản trị doanh nghiệp phải xử lý rừng dữ liệu từ nhiều nguồn khác nhau thường không đồng nhất, lúc thừa lúc thiếu là chuyện cơm bữa. Dữ liệu đến từ các đối tác kinh doanh không thể theo chuẩn chung, ngay cả trong nội bộ doanh nghiệp từng bộ phận thường có cách xử lý dữ liệu riêng và mối quan hệ giữa các cá nhân khá phức tạp nên dữ liệu thường khác nhau, muốn dữ liệu thống nhất phải bỏ ra chi phí và thời gian khá lớn để xây dựng hệ thống quản trị nguồn lực ERP
Tạm chữa cháy bằng cách cắt chuỗi và tìm gần đúng, nếu muốn xịn hơn tìm người dùng thuật toán trí tuệ nhân tạo để xử lý :p
Dữ liệu khá ít nên code có thể chưa xét hết các khả năng
Mã:
Sub XYZ()
  Dim aData(), aSP(), res(), arr(), S, aL, aU, sp$
  Dim srData&, srSP&, N&, D&, i&, j&, k&, r&
 
  aL = Array(0, 1, 0, 1, 0, 2, 3, 0, 2, 1, 4, 0, 3, 1, 2)
  aU = Array(0, 0, 1, 1, 2, 0, 0, 3, 1, 2, 0, 4, 1, 3, 2)
  N = UBound(aL)
  With Sheets("Sheet1")
    aData = .Range("A2", .Range("B" & Rows.Count).End(xlUp)).Value
  End With
  With Sheets("Sheet2")
    aSP = .Range("A2", .Range("A" & Rows.Count).End(xlUp)).Value
  End With
  srData = UBound(aData): srSP = UBound(aSP)
  ReDim res(1 To srSP, 1 To 2)
  For i = 1 To srData
    aData(i, 1) = Application.Trim(Replace(aData(i, 1), "!", "! "))
  Next i
  For i = 1 To srSP
    S = Split(Application.Trim(Replace(aSP(i, 1), "!", "! ")), " ")
    D = UBound(S)
    For j = 0 To N
      If D - aL(j) - aU(j) > 0 Then
        ReDim arr(aL(j) To D - aU(j))
        For k = aL(j) To D - aU(j)
          arr(k) = S(k)
        Next k
        sp = Join(arr, " ")
        For r = 1 To srData
          If InStr(1, aData(r, 1), sp, vbTextCompare) > 0 Then
            res(i, 1) = aData(r, 2)
            res(i, 2) = aData(r, 1)
            GoTo Tiep
          End If
        Next r
      End If
    Next j
Tiep:
  Next i
  Sheets("Sheet2").Range("B2").Resize(srSP, 2) = res
End Sub
 
Upvote 0
Chuyện dữ liệu lôm côm có ở tất cả các đơn vị mà tôi đã làm qua. Bộ phận này yêu cầu bộ phận kia làm cho đúng cũng không được. Cấp cao hơn không (hoặc thiếu) quan tâm, cứ cơm áo gạo tiền đã, mấy chuyện đó tụi mày tự xử lý. Thế là ai nấy tự bơi thôi.

Do đó tôi rất thông cảm với những trường hợp như của chủ thớt.
 
Upvote 0
. . . . ,nhưng tên sản phẩm này chỉ có 1 phần chữ giống với tên sản phẩm sheet1 kia, bây giờ em muốn dò tìm tên này để lấy mã sản phẩm, anh chị trong nhóm có cách nào dò mã giúp em với ạ, . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
$$$$@
 

File đính kèm

  • Form.rar
    24 KB · Đọc: 12
Upvote 0
Nếu có >=2 sản phẩm cùng số lượng chữ giống nhau thì chọn thế nào?
Dạ . Chắc không có đâu. Nếu có em lấy chữ chữ đầu tiên ạ
Bài đã được tự động gộp:

Có những chuyện không như mơ, quản trị doanh nghiệp phải xử lý rừng dữ liệu từ nhiều nguồn khác nhau thường không đồng nhất, lúc thừa lúc thiếu là chuyện cơm bữa. Dữ liệu đến từ các đối tác kinh doanh không thể theo chuẩn chung, ngay cả trong nội bộ doanh nghiệp từng bộ phận thường có cách xử lý dữ liệu riêng và mối quan hệ giữa các cá nhân khá phức tạp nên dữ liệu thường khác nhau, muốn dữ liệu thống nhất phải bỏ ra chi phí và thời gian khá lớn để xây dựng hệ thống quản trị nguồn lực ERP
Tạm chữa cháy bằng cách cắt chuỗi và tìm gần đúng, nếu muốn xịn hơn tìm người dùng thuật toán trí tuệ nhân tạo để xử lý :p
Dữ liệu khá ít nên code có thể chưa xét hết các khả năng
Mã:
Sub XYZ()
  Dim aData(), aSP(), res(), arr(), S, aL, aU, sp$
  Dim srData&, srSP&, N&, D&, i&, j&, k&, r&
 
  aL = Array(0, 1, 0, 1, 0, 2, 3, 0, 2, 1, 4, 0, 3, 1, 2)
  aU = Array(0, 0, 1, 1, 2, 0, 0, 3, 1, 2, 0, 4, 1, 3, 2)
  N = UBound(aL)
  With Sheets("Sheet1")
    aData = .Range("A2", .Range("B" & Rows.Count).End(xlUp)).Value
  End With
  With Sheets("Sheet2")
    aSP = .Range("A2", .Range("A" & Rows.Count).End(xlUp)).Value
  End With
  srData = UBound(aData): srSP = UBound(aSP)
  ReDim res(1 To srSP, 1 To 2)
  For i = 1 To srData
    aData(i, 1) = Application.Trim(Replace(aData(i, 1), "!", "! "))
  Next i
  For i = 1 To srSP
    S = Split(Application.Trim(Replace(aSP(i, 1), "!", "! ")), " ")
    D = UBound(S)
    For j = 0 To N
      If D - aL(j) - aU(j) > 0 Then
        ReDim arr(aL(j) To D - aU(j))
        For k = aL(j) To D - aU(j)
          arr(k) = S(k)
        Next k
        sp = Join(arr, " ")
        For r = 1 To srData
          If InStr(1, aData(r, 1), sp, vbTextCompare) > 0 Then
            res(i, 1) = aData(r, 2)
            res(i, 2) = aData(r, 1)
            GoTo Tiep
          End If
        Next r
      End If
    Next j
Tiep:
  Next i
  Sheets("Sheet2").Range("B2").Resize(srSP, 2) = res
End Sub
Dạ em cám ơn anh ạ
Bài đã được tự động gộp:

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
$$$$@
Dạ. Em cám ơn anh ạ. Để em thử xem
 
Upvote 0
Web KT

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

Back
Top Bottom