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
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 à
Dạ. Nó ngược ngược Anh ạ. Do tên hàng hóa có phần giống nhau nên cũng khó.
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ã HH
Tên HHR_000
Rau ăn láR_001
Cải ngọtR_002
Dền xanhR_003
Bắp cảiC_000
Các loại củC_001
Su hàoC_002
Khoai tâyC_003
Cà rốtQ_000
Các loại quảQ_001
Bí đỏQ_002
Bí hồ lôQ_003
MướpTF000
Thịt heoTF001
Heo nạtBo000
Thịt bòBo001
Bắp bòCa000
Cá các loạiCa001
Cá chépCa002
Lươ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:
=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"))
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 ESub 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 Sub1610
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ácBà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ì và 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)
=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
www.giaiphapexcel.com/diendan/threads/t%C3%ACm-m%C3%A3-h%C3%A0ng-h%C3%B3a-t%E1%BB%AB-b%E1%BA%A3ng-1-g%C3%A1n-cho-b%E1%BA%A3ng-2-theo-t%C3%AAn-h%C3%A0ng-h%C3%B3a-g%E1%BA%A7n-gi%E1%BB%91ng.163788/
Xây dựng Lương 3P, KPI cho Doanh nghiệp
Làm thế nào để trả lương cho nhân viên chính xác nhất? Đây là một trong những câu hỏi khó trong quản trị nhân...
Xem khóa học