Tìm mã hàng hóa từ bảng 1 gán cho bảng 2 theo tên hàng hóa gần giống

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

DOTEXCEL2010

Thành viên mới
Tham gia
17/4/15
Bài viết
25
Được thích
5
Em dở excel quá, mà em đang có nhu cầu tìm mã hàng của 2 bảng dữ liệu excel, 1 bảng thì có đầy đủ mã hàng, tên hàng. Còn 1 bảng thì chỉ có tên hàng mà không có mã hàng. mà đặt biệt tên hàng hóa nó na ná giống 1 số chữ so với bảng có đầy đủ mã và tên hàng. Giờ em muốn tìm mã để gán vào mà khó quá.
Nên em xin phép upfile excel có mô tả ở trong file excel lên diễn đàn để nhờ sự giúp đỡ của Anh/Chị xem qua giúp em giải quyết vấn đề với ạ. viết công thức cũng được hay VBA code cũng được ah. Miễn làm sao ra được kết quả là tốt rồi ạ
Cảm ơn Anh/chị rất nhiều.
 

File đính kèm

Em dở excel quá, mà em đang có nhu cầu tìm mã hàng của 2 bảng dữ liệu excel, 1 bảng thì có đầy đủ mã hàng, tên hàng. Còn 1 bảng thì chỉ có tên hàng mà không có mã hàng. mà đặt biệt tên hàng hóa nó na ná giống 1 số chữ so với bảng có đầy đủ mã và tên hàng. Giờ em muốn tìm mã để gán vào mà khó quá.
Nên em xin phép upfile excel có mô tả ở trong file excel lên diễn đàn để nhờ sự giúp đỡ của Anh/Chị xem qua giúp em giải quyết vấn đề với ạ. viết công thức cũng được hay VBA code cũng được ah. Miễn làm sao ra được kết quả là tốt rồi ạ
Cảm ơn Anh/chị rất nhiều.
Bạn sửa tiêu đề do vi phạm nội quy của diễn đàn.
Thấy cái của bạn làm ngược kiểu gì thế nhỉ?
Na ná là thế nào? Có chăng thì kết quả thế nào cũng có cái không đúng à
 
Em dở excel quá, mà em đang có nhu cầu tìm mã hàng của 2 bảng dữ liệu excel, 1 bảng thì có đầy đủ mã hàng, tên hàng. Còn 1 bảng thì chỉ có tên hàng mà không có mã hàng. mà đặt biệt tên hàng hóa nó na ná giống 1 số chữ so với bảng có đầy đủ mã và tên hàng. Giờ em muốn tìm mã để gán vào mà khó quá.
Nên em xin phép upfile excel có mô tả ở trong file excel lên diễn đàn để nhờ sự giúp đỡ của Anh/Chị xem qua giúp em giải quyết vấn đề với ạ. viết công thức cũng được hay VBA code cũng được ah. Miễn làm sao ra được kết quả là tốt rồi ạ
Cảm ơn Anh/chị rất nhiều.
Sử dụng dictionary tôi nghĩ ổn cho trường hợp này.
 
Ngược ngạo lạ thật, không biết làm gì, khả năng tè le nữa.
Nếu vuông bị tròn.
 

File đính kèm

  • 1672852851928.png
    1672852851928.png
    140.1 KB · Đọc: 22
Nguyên tắc tạo mã hàng hóa của chủ bài đăng là chưa hợp lý & đang xài 2ui trình ngược;
(1) Chưa hợp lý ở chỗ: Mã hàng luôn có 2 chữ cái trùng nhau; Điều này chả nói lên điều gì & chỉ gây lãng phí nguồn lực mà thôi.
Nên vứt bỏ 2 ký tự này ra khỏi bộ mã HH của bạn & thay bằng, ví dụ

Mã HHTên HH
R_000Rau ăn lá
R_001Cải ngọt
R_002Dền xanh
R_003Bắp cải
C_000Các loại củ
C_001Su hào
C_002Khoai tây
C_003Cà rốt
Q_000Các loại quả
Q_001Bí đỏ
Q_002Bí hồ lô
Q_003Mướp
TF000Thịt heo
TF001Heo nạt
Bo000Thịt bò
Bo001Bắp bò
Ca000Cá các loại
Ca001Cá chép
Ca002Lươn

(2) Một khi đã có bộ mã qui ước thì:
Hàng nào mới về đều được gán mã
& quan trọng nhất là xài chủ yếu là mã, tên hàng hóa lúc này giống như chú thích cho mã HH mà thôi.
Thứ nữa là ta sẽ không bao giờ sai chính tả ngớ ngẩn khi nhập liệu
 
Thử cái này tại F3 rồi kéo xuống:
Mã:
=IFERROR(LOOKUP(2,1/SEARCH(TRIM($B$3:$B$4),TRIM(G3)),$A$3:$A$4),"HH"&TEXT(AGGREGATE(14,6,RIGHT($A$3:$A$4,3)+0,1)+1,"000"))
 
Thử cái này tại F3 rồi kéo xuống:
Mã:
=IFERROR(LOOKUP(2,1/SEARCH(TRIM($B$3:$B$4),TRIM(G3)),$A$3:$A$4),"HH"&TEXT(AGGREGATE(14,6,RIGHT($A$3:$A$4,3)+0,1)+1,"000"))
Cảm ơn bebo021999 nhiều nhen. mà mình thêm tên và kéo nó bị lỗi #NUM! nên chưa biết như thế nào? Mà cũng cảm ơn đã cho mình công thức.
Bài đã được tự động gộp:

Ngược ngạo lạ thật, không biết làm gì, khả năng tè le nữa.
Nếu vuông bị tròn.
hi hi dạ nó ngược đời. chắn bỏ qua luôn quá :D
Bài đã được tự động gộp:

Nguyên tắc tạo mã hàng hóa của chủ bài đăng là chưa hợp lý & đang xài 2ui trình ngược;
(1) Chưa hợp lý ở chỗ: Mã hàng luôn có 2 chữ cái trùng nhau; Điều này chả nói lên điều gì & chỉ gây lãng phí nguồn lực mà thôi.
Nên vứt bỏ 2 ký tự này ra khỏi bộ mã HH của bạn & thay bằng, ví dụ

Mã HHTên HH
R_000Rau ăn lá
R_001Cải ngọt
R_002Dền xanh
R_003Bắp cải
C_000Các loại củ
C_001Su hào
C_002Khoai tây
C_003Cà rốt
Q_000Các loại quả
Q_001Bí đỏ
Q_002Bí hồ lô
Q_003Mướp
TF000Thịt heo
TF001Heo nạt
Bo000Thịt bò
Bo001Bắp bò
Ca000Cá các loại
Ca001Cá chép
Ca002Lươn

(2) Một khi đã có bộ mã qui ước thì:
Hàng nào mới về đều được gán mã
& quan trọng nhất là xài chủ yếu là mã, tên hàng hóa lúc này giống như chú thích cho mã HH mà thôi.
Thứ nữa là ta sẽ không bao giờ sai chính tả ngớ ngẩn khi nhập liệu
Dạ Cảm ơn anh :)
 
Dạ, Nếu được nhờ Anh chỉ giúp em với. em bí quá rồi?
Bạn chạy code dưới và kiểm tra kết quả lại nha!
Chú ý: kết quả đang trả về ở cột E
PHP:
Sub GPE()
    Dim Dic As Object, Key$, i&, j&, k&, Arr()
    Dim Lr&, a&, Th$, Kt$, Res(1 To 100, 1 To 1)
    Set Dic = CreateObject("Scripting.Dictionary")
    On Error Resume Next
    With Sheets("Sheet1")
        .Range("E:E").ClearContents
        Lr = .Range("G" & Rows.Count).End(xlUp).Row
        With Sheets("Sheet1").Range("F2:H" & Lr)
            .Sort .Cells(2, 2), 1, Header:=xlGuess
        End With
        Arr = .Range("G3:G" & Lr).Value
        For i = 1 To UBound(Arr)
            If Arr(i, 1) <> "" Then
                For a = 1 To Len(Arr(i, 1))
                    Kt = Mid(Arr(i, 1), a, 1)
                    If Kt <> " " Then
                        Th = Th & Kt
                    End If
                Next a
            End If
            Key = Th
            If Not Dic.exists(Key) Then
                k = k + 1
                Dic.Add (Key), k
                Res(i, 1) = "HH" & Format(k, "000")
            Else
                Res(i, 1) = "HH" & Format(k, "000")
            End If
            Th = ""
        Next i
        .Range("E3").Resize(i, 1).Value = Res
    End With
    Set Dic = Nothing
    MsgBox "Done"
End Sub
 
Lần chỉnh sửa cuối:
Bạn chạy code dưới và kiểm tra kết quả lại nha!
Chú ý: kết quả đang trả về ở cột E
PHP:
Sub GPE()
    Dim Dic As Object, Key$, i&, j&, k&, Arr()
    Dim Lr&, a&, Th$, Kt$, Res(1 To 100, 1 To 1)
    Set Dic = CreateObject("Scripting.Dictionary")
    On Error Resume Next
    With Sheets("Sheet1")
        .Range("E:E").ClearContents
        Lr = .Range("G" & Rows.Count).End(xlUp).Row
        With Sheets("Sheet1").Range("F2:H" & Lr)
            .Sort .Cells(2, 2), 1, Header:=xlGuess
        End With
        Arr = .Range("G3:G" & Lr).Value
        For i = 1 To UBound(Arr)
            If Arr(i, 1) <> "" Then
                For a = 1 To Len(Arr(i, 1))
                    Kt = Mid(Arr(i, 1), a, 1)
                    If Kt <> " " Then
                        Th = Th & Kt
                    End If
                Next a
            End If
            Key = Th
            If Not Dic.exists(Key) Then
                k = k + 1
                Dic.Add (Key), k
                Res(i, 1) = "HH" & Format(k, "000")
            Else
                Res(i, 1) = "HH" & Format(k, "000")
            End If
            Th = ""
        Next i
        .Range("E3").Resize(i, 1).Value = Res
    End With
    Set Dic = Nothing
    MsgBox "Done"
End Sub
Ronaldinho7.png
E có chạy thử thì có tạo mã HH001 - HH004 hà Bác. không như kết quả ở cột F ạ.
Code của Bác là sắp xếp lại theo kiểu A B C ở cột G luôn á. Bác xem lại giúp em với ạ. Cảm ơn bác
 
View attachment 285417
E có chạy thử thì có tạo mã HH001 - HH004 hà Bác. không như kết quả ở cột F ạ.
Code của Bác là sắp xếp lại theo kiểu A B C ở cột G luôn á. Bác xem lại giúp em với ạ. Cảm ơn bác
Bài 1 bạn có giải thích sự khác nhau "tương đối" giữa tên hàng ở đây là có/không có dấu cách thôi mà.
Theo hình trên thì [Rau xanh] và [Rau xanh 2kg] code hiểu là 2 tên hàng khác nhau.
Do code nối các ký tự trong tên hàng để so sánh (không xét có/không có dấu cách)
 
Bài 1 bạn có giải thích sự khác nhau "tương đối" giữa tên hàng ở đây là có/không có dấu cách thôi mà.
Theo hình trên thì [Rau xanh] và [Rau xanh 2kg] code hiểu là 2 tên hàng khác nhau.
Do code nối các ký tự trong tên hàng để so sánh (không xét có/không có dấu cách)
Dạ. Khó quá chắc bỏ qua quá bác. cho nhập lại từ đầu rồi gán mã thôi. Cảm ơn bác nhiều nhen.
 
Dạ. Khó quá chắc bỏ qua quá bác. cho nhập lại từ đầu rồi gán mã thôi. Cảm ơn bác nhiều nhen.
Có chấp nhận được cột G tạm cho tên hàng giống nhau (nhiều lần, VD "te le"), thì số thứ tự vẫn cứ tăng dần không? Nếu bảng 1 cập nhật thì STT sẽ không tăng?
 
Mã:
=IFERROR(INDEX($A$1:$C$7;MATCH(1;(SEARCH($B$3:$B$7;G3)))+2;0);"HH"&TEXT(SUM(1/COUNTIF($F$1:F2;$F$1:F2))-1;"000"))
Ctrl + Shift + Enter
 

File đính kèm

  • 1672913258256.png
    1672913258256.png
    185.6 KB · Đọc: 13
Web KT

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

Back
Top Bottom