Em cần giúp về việc chuyển tên hàng thành mã hàng (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

kisikhongdau2007

Thành viên mới
Tham gia
13/6/11
Bài viết
6
Được thích
0
Bên e bình thường đặt tên hàng là 1 dãy kí tự chỉ nhóm hàng,người cung cấp,mã sản phẩm và size.Hiện nay chuyển sang dùng phần mềm quản lí bán hàng,để in được mã vach thì mã hàng phải có 12 chữ số.Nên e qui ước các yếu tố trên thành các dãy số.

-Nhóm hàng:2 số
-Người cung cấp:3 số
-Mã sản phẩm:4 số
-Màu sắc:1 số
-Size:2 số

VD như 1 mặt hàng có tên sau:GFB DP 0047N 38 e cần chuyển thành đoạn số.030030047438.Tên nhóm hàng thì có 5 nhóm 3 kí tự,5 nhóm 2 kí tự.Màu sắc thì có 1 số màu có 2 kí tự,1 số lại 1 kí tự.ACE nào chỉ giúp e cách truy từ tên hàng ra mã hàng 1 cách nhanh nhất.

Em xin cám ơn!
 

File đính kèm

Bên e bình thường đặt tên hàng là 1 dãy kí tự chỉ nhóm hàng,người cung cấp,mã sản phẩm và size.Hiện nay chuyển sang dùng phần mềm quản lí bán hàng,để in được mã vach thì mã hàng phải có 12 chữ số.Nên e qui ước các yếu tố trên thành các dãy số.

-Nhóm hàng:2 số
-Người cung cấp:3 số
-Mã sản phẩm:4 số
-Màu sắc:1 số
-Size:2 số

VD như 1 mặt hàng có tên sau:GFB DP 0047N 38 e cần chuyển thành đoạn số.030030047438.Tên nhóm hàng thì có 5 nhóm 3 kí tự,5 nhóm 2 kí tự.Màu sắc thì có 1 số màu có 2 kí tự,1 số lại 1 kí tự.ACE nào chỉ giúp e cách truy từ tên hàng ra mã hàng 1 cách nhanh nhất.

Em xin cám ơn!
Tại C2:
Mã:
=VLOOKUP(LEFT($A2,3),'Ki hieu'!$A$3:$B$12,2,0)&VLOOKUP(MID($A2,5,2),'Ki hieu'!$E$3:$G$17,3,0)&MID($A2,8,4)&VLOOKUP(MID($A2,12,1),'Ki hieu'!$A$16:$C$24,3,0)&RIGHT($A2,2)
 
Bạn chép hàm tự tạo sau vô ngăn module (E2003)

PHP:
Option Explicit
Function ChuyenMa(TenHang As String)
 ReDim VT(1 To 3) As Byte:          Const KT As String = " "
 Dim WF As Object, Temp As String, MyName As String, Sh As Worksheet, Jj As Byte
 
 Temp = Trim(TenHang):              Set WF = Application.WorksheetFunction
 Set Sh = ThisWorkbook.Worksheets("KyHieu")
 For Jj = 1 To 2
   MyName = Choose(Jj, "Nhom", "NCC", "GPE.COM")
   VT(Jj) = InStr(Temp, KT)
   ChuyenMa = ChuyenMa & WF.VLookup(Left(Temp, VT(Jj) - 1), Sh.Range(MyName), 2, False)
   Temp = Mid(Temp, VT(Jj) + 1, 19)
 Next Jj
 Jj = InStr(Temp, KT)
 ChuyenMa = ChuyenMa & Left(Temp, 4) & WF.VLookup(Mid(Temp, 5, 1), Sh.Range("Mau"), 2, False)
 ChuyenMa = ChuyenMa & Mid(Temp, Jj + 1, 3)
End Function


Cú fáp sử dụng tại [C2] như sau: =ChuyenMa(A2)

/-(àm chỉ mới đúng với các tên theo qui chuẩn;
Đó là {Nhóm hàng} {Nhà Cung Cấp} {Mã SF}{Màu} {Size}

(òn các tên hàng bên dưới:= Chờ tin bạn!
 

File đính kèm

PHP:
Option Explicit
Function ChuyenMa(TenHang As String)
 ReDim VT(1 To 3) As Byte:          Const KT As String = " "
 Dim WF As Object, Temp As String, MyName As String, Sh As Worksheet, Jj As Byte
 
 Temp = Trim(TenHang):              Set WF = Application.WorksheetFunction
 Set Sh = ThisWorkbook.Worksheets("KyHieu")
 For Jj = 1 To 2
   MyName = Choose(Jj, "Nhom", "NCC", "GPE.COM")
   VT(Jj) = InStr(Temp, KT)
   ChuyenMa = ChuyenMa & WF.VLookup(Left(Temp, VT(Jj) - 1), Sh.Range(MyName), 2, False)
   Temp = Mid(Temp, VT(Jj) + 1, 19)
 Next Jj
 Jj = InStr(Temp, KT)
 ChuyenMa = ChuyenMa & Left(Temp, 4) & WF.VLookup(Mid(Temp, 5, 1), Sh.Range("Mau"), 2, False)
 ChuyenMa = ChuyenMa & Mid(Temp, Jj + 1, 3)
End Function


Cú fáp sử dụng tại [C2] như sau: =ChuyenMa(A2)

/-(àm chỉ mới đúng với các tên theo qui chuẩn;
Đó là {Nhóm hàng} {Nhà Cung Cấp} {Mã SF}{Màu} {Size}

(òn các tên hàng bên dưới:= Chờ tin bạn!

Rất cám ơn bạn,mình đã làm được.Nhưng mình muốn hỏi thế này.Một số mã chẳng hạn như bạn xem trong file là DTC 0001,không có nhà sản xuất,mình qui ước mã cho nó là 000,những mã ko có kí tự chỉ màu mình cũng qui ước là 0.Khi mình dùng hàm bạn viết thì không ra được.

Vấn đề nữa là các bảng kí hiệu,sau này có thể mở rộng ra.Thêm nhiều nhà sản xuất nữa chẳng hạn,vậy bạn chỉ mình cách để sau này khi bảng kí hiệu dài ra thì vẫn hoạt động được ah.Chân thành cám ơn bạn!
 
. . . Mình đã làm được.Nhưng mình muốn hỏi thế này:
(2) Một số mã chẳng hạn như bạn xem trong file là DTC 0001,không có nhà sản xuất,mình qui ước mã cho nó là 000,những mã ko có kí tự chỉ màu mình cũng qui ước là 0.Khi mình dùng hàm bạn viết thì không ra được.

(1) Vấn đề nữa là các bảng kí hiệu,sau này có thể mở rộng ra.Thêm nhiều nhà sản xuất nữa chẳng hạn,vậy bạn chỉ mình cách để sau này khi bảng kí hiệu dài ra thì vẫn hoạt động được ah.Chân thành cám ơn bạn!

(1) Bạn xem 3 Name đã gán đã gán cho 3 vùng bảng tra khác nhau trên trang tính 'KyHieu' & nới rọng chiều cao của cột dữ liệu thêm;
(Mình tin là bạn tự làm được & hãy thử sức trước đi;)

Thực ra sau 1 hồi suy ngẫm, mình thấy cần thêm thắc vô các bảng tra này để tiện trong việc sử dụng;

Một trong những sửa đổi cần thiết mà ta nên làm ngay, đó là cách cần triệt tiêu các số không có ở đầu mỗi mã hàng; Cần fải triệt tiêu chúng vì chúng sẽ là nguy cơ tìm ẩn gây khốn khổ cho bạn & tôi sau này!

Cách triệt tiêu đó mình đề nghị như sau: Chúng ta không bắt đầu là 00 hay 01, mà là 10; & chỉ sử dung 90 ký số thôi;, nếu còn fát sinh thêm mã hàng khác thì ta sau đó fải xài đến ký tự vô chổ ký số. Như lúc đó ta lại xài 0A, 0B. . . cũng không sao.

(2) Mình đã thực hiện gần xong hàm chuyển đổi cho mọi fương án có thể có trong thực tiển; nhưng gặp các anh này thì xin í kiến bạn sao đây:

Tên Hàng | Mã mới | Des_
GMB AS CA08 29|13007CA08029|OK
GMB AS DW035 38|???| ?
GMB AS DME52 6|???| ?

Chờ bạn giải mã tên này sang tiếng Việt có dấu dùm cái nhen!

Thân ái!
 
(1) Bạn xem 3 Name đã gán đã gán cho 3 vùng bảng tra khác nhau trên trang tính 'KyHieu' & nới rọng chiều cao của cột dữ liệu thêm;
(Mình tin là bạn tự làm được & hãy thử sức trước đi;)

Thực ra sau 1 hồi suy ngẫm, mình thấy cần thêm thắc vô các bảng tra này để tiện trong việc sử dụng;

Một trong những sửa đổi cần thiết mà ta nên làm ngay, đó là cách cần triệt tiêu các số không có ở đầu mỗi mã hàng; Cần fải triệt tiêu chúng vì chúng sẽ là nguy cơ tìm ẩn gây khốn khổ cho bạn & tôi sau này!

Cách triệt tiêu đó mình đề nghị như sau: Chúng ta không bắt đầu là 00 hay 01, mà là 10; & chỉ sử dung 90 ký số thôi;, nếu còn fát sinh thêm mã hàng khác thì ta sau đó fải xài đến ký tự vô chổ ký số. Như lúc đó ta lại xài 0A, 0B. . . cũng không sao.

(2) Mình đã thực hiện gần xong hàm chuyển đổi cho mọi fương án có thể có trong thực tiển; nhưng gặp các anh này thì xin í kiến bạn sao đây:

Tên Hàng | Mã mới | Des_
GMB AS CA08 29|13007CA08029|OK
GMB AS DW035 38|???| ?
GMB AS DME52 6|???| ?

Chờ bạn giải mã tên này sang tiếng Việt có dấu dùm cái nhen!

Thân ái!

Dạ vâng,cám ơn bạn nhiều.Ý ở trên mình hỏi mình đã làm được.Nhưng hiện nó có các vấn đề mới sau.

1.Khi mình đặt mã màu 2 chữ số.VD như D là đen,DO là đỏ thì D hay DO nó cũng nhận là đen.

2.Lí do mình dịch từ mã chữ sang mã số vì để nhập vào phần mềm bán hàng làm mã vạch.Mã vạch EAN 13 thì phải có 12 số,vấn đề nhức đầu ở chỗ 1 số mã như cái mã ở trên của bạn GMB AS CA08 29.Phần mã của nhà sản xuất lại gồm 2 chữ,2 số.Hiện thời cái mã này mình chỉ lấy 08 và để mã là 0008.Cái này chỉ là tạm thời,vì mình sợ sau này nó sẽ bị trùng mã.Vì nhà sản xuất này có thể đặt CA08 rồi DW08.

3.Đại chung toàn bộ cái ý của mình khi dịch từ tên hàng sang mã là để tạo ra 1 dãy số gồm 12 số,và đảm bảo là nó ko bao giờ trùng nhau để làm mã vạch.Cách đặt này của mình có 1 số lỗ hổng như đã trình bày ở mục 2.Bạn có giải pháp nào khác thì bày mình với.

4.Mình cũng xin hỏi thêm là vì sao mình lại ko nên đặt là 01 02 mà nên bắt đầu từ 1x

Cám ơn bạn đã xem nhé :D
 
Bạn xem & kiểm tra lại các trường hợp

Còn các tên hàng trên file của bạn mà bạn chưa trả lời hay diễn dịch tiếng Việt.

Trả lời các í của bạn:

(4) Xài 1X trở đi để đảm bảo fần mềm nào hiểu rằng mã hàng chúng ta luôn có độ dài 12;

(3) Cần hỏi lại bạn là luôn lúc nào cũng là ký số không hay sao? Bảng thân trong tên hàng mà bạn đưa lên có ký tự mà, như GMB AS DW035 37, . .
Mình nghĩ, nếu dùng cả ký tự, thì mã của bạn sẽ được mang nhiều thông tin hơn khi nó chỉ toàn là các ký số khô khốc!
(Nếu buộc chỉ dùng ký số thì miễn bàn tiếp chuyện này)
 

File đính kèm

Web KT

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

Back
Top Bottom