Cách phân loại sản phẩm để ra mã sản phẩm

  • Thread starter Thread starter Alpha5
  • Ngày gửi Ngày gửi
Liên hệ QC

Alpha5

Thành viên mới
Tham gia
1/11/10
Bài viết
14
Được thích
4
Chào các bạn!

Mình đang muốn tạo 1 file excel để quản lý hàng hóa. Trong đó mình muốn tạo mã cho từng sản phẩm. Hiện giờ định quản lý mã theo công thức

Mã Sản phẩm = Mã Hãng sản xuất + Mã Loại sản phẩm + Số thứ tự sản phẩm

Ví dụ: Hãng 1, Loại 1 sẽ có sản phẩm đầu có mã là H1L101

Giúp mình tạo file mà ở đó có thể có nút lựa chọn Hãng và Loại (hiện theo tên chứ ko theo mã) để sau đó cho ra mã sản phẩm

Mình có đính kèm theo file mô tả.

Cám ơn các bạn.
 

File đính kèm

Chỉ đến 1000 sản fẩm mỗi loại thôi nha

Hơn nữa fải bổ sung sau
 

File đính kèm

Trước hết xin cám ơn bác SA_DQ.

Mình có vài thắc mắc do chưa biết dùng excel chi tiết:
1. Làm sao để tạo ra cái list (Hang..) mà đặt được tên list.
2. Làm sao khi lựa chọn thay vì ra "Hãng 1" thì kết quả lại H1 ở ô Mã SF
3. File mới kia chưa đáp ứng hết yêu cầu của mình vì nó ko có phần phụ thuộc điều kiện (ô STT của sản phẩm phải phụ thuộc vào Hãng, Loại SF, dựa vào danh sách cho trước)
4. Mình ko biết làm bước nào để cho ra Mã SF ở ô kia, mình muốn nó hiện ngay cùng dòng kia
5. Mục đích của mình là làm sao để ở mỗi dòng cho phép: Lựa chọn Hãng, Lựa chọn Loại SF từ đó lựa chọn sản phẩm rồi ra kết quả là mã sản phẩm. Yêu cầu là trên cùng một dòng (để mình có thể tạo các dòng mới tiếp theo khi cần nhập thêm)

Xin cám ơn.
 
(1) Bạn vô menu Edit-> Goto để đến 03 cái Names đã có trên trang tính;
Để hiểu cách làm việc của Validation tại [H8] ta bấm chọn ô này & vô menu Data để hiểu thêm

(2) Cái ni có thể có ít nhất là 2 cách để d9ạt mục đích; Trong file gởi lên là cách mà macro thực hiện;

(3), (5) Bạn xem kết quả nó cập nhật bên trang 'GPE' chưa đó? Bạn đã xem rồi, thì vấn đề cần sửa cho ưng í là gì vậy?

Bạn chọn lần lượt từ [H8] sang [i8] rồi [j8] thì bên trang 'GPE' sẽ nhập tiếp 1 mã bạn cần trên dòng mới

. . . .
 
Hi,
(1) OK. Đã biết. Insert -> Name ->Define
(2) Cách thứ 2 là gì vậy bạn
(3) Cái thiếu là cái này "Tạo một danh sách xác thực thay đổi theo sự lựa chọn từ một danh sách khác" . Cái phần lựa chọn thứ ba không phải là độc lập mà là phụ thuộc điều kiện.
(4) Hic, vấn đề là ko biết làm nên mới cần chứ. Yêu cầu là Mã SF sẽ ở cùng dòng, ở cột tiếp theo. Và ko phải lựa chọn theo lần lượt từ [H8] sang [i8] rồi [j8] mà có thể lựa chọn bất kỳ vẫn đúng.
 
Mình áp dụng theo bài trên để làm file danhsach.xls đính kèm. Tuy nhiên còn vài vướng mắc:
- Vẫn chưa ra được mã SF
- Chỗ cột STT chưa tự động điền được. Nguyên tắc là tự động tăng dần đối với mỗi Hãng và Loại.
- Sheet Danhsach cột Loại vẫn chưa hiện đúng. Không biết sai ở đâu.
- Thêm nữa là làm như thế này chỉ được 1 dòng. Làm sao để có thể copy dòng 2 trong sheet 'Danh sach' sang các dòng duới mà vẫn hoạt động bình thường.

Nhờ sửa giúp. Thanks.
 

File đính kèm

Lần chỉnh sửa cuối:
Cách bài thể hiện trên file chứng tỏ bạn còn lôi thôi lắm!

Ở trang 'Data' cột 'a' chỉ 3 dòng DL (dữ liệu), nhưng cột bên cạnh thì 14 DL;
Cột D & E còn tê hơn ở chổ có 2 mã loại 01: Điều này thì 1 CSDL không bao giờ chấp nhận.

Bạn muốn nhận được sự giúp của người khác nhanh thì DL đưa lên fải rành mạch mới được; Bằng ngược lại sẽ tốn thời gian của bạn & của cộng đồng!

& tê hơn: Bạn chưa nghiêm túc với cộng đồng này.
 
Tôi thấy mình trả lời rất nhã nhặn rồi, nên rất ngạc nhiên khi thấy nhận xét như trên. Tuy nhiên mỗi người 1 ý, tự mình thấy được là được.

Còn về DL thì đó chỉ là lỗi nhỏ, hiểu được cái muốn nói là được chả đến mức xét nét làm gì nhất là với một người chưa làm việc với dàng CSDL trong excel bạn nhé.

Thanks.
 
Mình áp dụng theo bài trên để làm file danhsach.xls đính kèm. Tuy nhiên còn vài vướng mắc:
- Vẫn chưa ra được mã SF
- Chỗ cột STT chưa tự động điền được. Nguyên tắc là tự động tăng dần đối với mỗi Hãng và Loại.
- Sheet Danhsach cột Loại vẫn chưa hiện đúng. Không biết sai ở đâu.
- Thêm nữa là làm như thế này chỉ được 1 dòng. Làm sao để có thể copy dòng 2 trong sheet 'Danh sach' sang các dòng duới mà vẫn hoạt động bình thường.

Nhờ sửa giúp. Thanks.
Nhẹ nhàng thôi.
Bạn gởi lại 1 file gồm có
- Data có khoảng 10 dòng.
- Sh KetQua với những yêu cầu cụ thể hơn là mã hàng sẽ thế nào khi chọn tên hãng, loại, tên sp ... => MaHang=....Nếu có thể cho khoảng vài dòng và phù hợp với data nhé.
Nói trước cái vụ lấy soTT theo MaHang, MaLoai và MaP làm ct cũng phê lắm.
Từ từ bàn sau.
 
Mình upfile mô tả lên theo hướng dẫn. %#^#$
 

File đính kèm

Mình upfile mô tả lên theo hướng dẫn. %#^#$
Với yêu cầu này phải tạo validation 3 cấp và phải có ct trích duy nhất.
Chọn hãng => list loại SP hãng đó.
Chọn loại SP => Tên SP của loại đó và hãng đó.
Từ đó dùng vlookup lấy ra mã HH và lấy số TT của SP đó.
Lâu quá kg dùng ct nên thấy phức tạp quá. Các bạn giúp hộ bạn ấy với.
Cám ơn.
 
Bạn thử với file đính kèm & cho biết í kiến để còn bổ sung & sửa chữa.

Bạn chọn 1 trong 3 hộp Validation [D2:F2] của trang [Ma]

đến khi ưng í thì nhấn OK khi bị vặn vẹo, nha

--=0--=0 --=0 --=0--=0
 

File đính kèm

Mình đã thử file. Còn một số cái cần nữa là:

- Khi thêm mã SF thì tự động cũng thêm luôn tên hãng, tên loại vào cùng 1 dòng với mã SF
- Giới hạn của mình chỉ cần 2 lựa chọn khi tạo mã, phần lựa chọn tên SF vì ko phải là độc lập (phụ thuộc vào 2 cái kia) nên khi tạo mã sẽ điền bằng tay.
- Chỗ số thứ tự tự động thêm vào chỉ cần 2 chữ số.
- Nếu có thể thì tự động sắp xếp lại danh sách sao cho có thứ tự theo ID.

Như vậy sẽ hoàn thành phần tạo trước danh sách mã SF mà mình có.

Tiếp theo mình cần thêm sh Ketqua để nhập dữ liệu tính toán bán hàng. Ở đó sẽ là lựa chọn trong số các sản phẩm mình đã đặt mã SF ở trang MA. Có thể làm giống như sh Ma nhưng khi đó phần lựa chọn Tên SF sẽ dựa trên dữ liệu đã nhập mã SF chứ không phải là danh sách cho trước.
 

File đính kèm

Lần chỉnh sửa cuối:
Thật ra mình chưa hiểu hết ý của bạn

Bạn thử chép macro này đè lên toàn bộ cái cũ & chạy tiếp thử, nha:

PHP:
Option Explicit
 Dim Sh, Rng As Range, sRng As Range
 Dim MyAdd As String, MyStr As String:       Dim Num As Integer

Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Intersect(Target, [d2].Resize(, 2)) Is Nothing Then            '<=|'
   Dim MyColor As Long, MyAdd As String, GPE As String
   
   MyColor = [b2].Interior.ColorIndex
   If MyColor < 34 Or MyColor > 42 Then MyColor = 34 Else MyColor = MyColor + 1
   [b2].Interior.ColorIndex = MyColor
   Set Sh = Sheets("Data"):                        Set Rng = Sh.Range("Hang")
   [b2].Value = Rng.Find([d2].Value, , xlFormulas, xlWhole).Offset(, 1).Value
   Set Rng = Sh.Range("LoaiSF")
   [b2].Value = [b2].Value & Rng.Find([e2].Value).Offset(, 1).Value
'   Set Rng = Sh.Range("TenSF")'
'   [b2].Value = [b2].Value & Rng.Find([f2].Value).Offset(, 1).Value'
   Set Rng = Range([B4], [B65500].End(xlUp))
   Set sRng = Rng.Find([b2].Value, , xlFormulas, xlPart)
   If sRng Is Nothing Then
      [b2].Value = [b2].Value & "00"               '<=|'
   Else
      MyAdd = sRng.Address
      Do
         If Right(sRng.Value, 3) > GPE Then GPE = Right(sRng.Value, 2)    '<=|'
         Set sRng = Rng.FindNext(sRng)
      Loop While Not sRng Is Nothing And sRng.Address <> MyAdd
      GPE = Right("0" & CStr(CInt(GPE) + 1), 2)    '<=|'
      [b2].Value = [b2].Value & GPE
   End If
   GPE = "GPE Xin Hoi Ban: " & [b2].Value
   MyColor = MsgBox("Ban Dòng Ý Nhap Ma Này?", vbQuestion + vbYesNo, GPE)
   If MyColor = 6 Then
      [B65500].End(xlUp).Offset(1).Value = [b2].Value
      GoTo GPE_
   Else
      [b2].Value = "Hen Gap!":                     GoTo GPE_
   End If
GPE_:                                              '<=|'
   Range([B4], [B65500].End(xlUp)).Sort Key1:=[B5], Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
 
 End If
End Sub
 
Đoạn mã trên mình thay thì thấy giải quyết được gần hết vấn đề tạo mã SF trong sh Ma, chỉ còn thiếu
- Khi thêm mã SF thì tự động cũng thêm luôn tên hãng, tên loại vào cùng 1 dòng với mã SF

Nghĩa là khi thêm Mã SF thì 2 cột bên cạnh cũng thêm luôn Tên hãng, tên Loại.
 
Bạn tạo thêm tiêu đề cho 2 cột mới này & chạy code sau

Đoạn mã trên mình thay thì thấy giải quyết được gần hết vấn đề tạo mã SF trong sh Ma, chỉ còn thiếu
Nghĩa là khi thêm Mã SF thì 2 cột bên cạnh cũng thêm luôn Tên hãng, tên Loại.
PHP:
Option Explicit
 Dim Sh, Rng As Range, sRng As Range
 Dim MyAdd As String, MyStr As String:       Dim Num As Integer

Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Intersect(Target, [D2].Resize(, 2)) Is Nothing Then
   Dim MyColor As Long, MyAdd As String, GPE As String
   
   MyColor = [b2].Interior.ColorIndex
   If MyColor < 34 Or MyColor > 42 Then MyColor = 34 Else MyColor = MyColor + 1
   [b2].Interior.ColorIndex = MyColor
   Set Sh = Sheets("Data"):                        Set Rng = Sh.Range("Hang")
   [b2].Value = Rng.Find([D2].Value, , xlFormulas, xlWhole).Offset(, 1).Value
   Set Rng = Sh.Range("LoaiSF")
   [b2].Value = [b2].Value & Rng.Find([e2].Value).Offset(, 1).Value
   Set Rng = Range([B4], [B65500].End(xlUp))
   Set sRng = Rng.Find([b2].Value, , xlFormulas, xlPart)
   If sRng Is Nothing Then
      [b2].Value = [b2].Value & "00"
   Else
      MyAdd = sRng.Address
      Do
         If Right(sRng.Value, 3) > GPE Then GPE = Right(sRng.Value, 2)
         Set sRng = Rng.FindNext(sRng)
      Loop While Not sRng Is Nothing And sRng.Address <> MyAdd
      GPE = Right("0" & CStr(CInt(GPE) + 1), 2)
      [b2].Value = [b2].Value & GPE
   End If
   GPE = "GPE Xin Hoi Ban: " & [b2].Value
   MyColor = MsgBox("Ban Dòng Ý Nhap Ma Này?", vbQuestion + vbYesNo, GPE)
   If MyColor = 6 Then
      With [B65500].End(xlUp).Offset(1)         '<=|'
            .Value = [b2].Value
            .Offset(, 1).Resize(, 2).Value = [D2].Resize(, 2).Value
      End With                                  '<=|'
      GoTo GPE_
   Else
      [b2].Value = "Hen Gap!":
      GoTo GPE_
   End If
GPE_:                                              '|=>'
   Range([B4], [B65500].End(xlUp)).Resize(, 3).Sort Key1:=[B5], Order1:=xlAscending, _
      Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
 End If
End Sub
 
Trước hết cám ơn HYen17 và ChanhTQ đã giúp đỡ.

Code cuối mình thấy đã ổn đúng yêu cầu rồi. Còn một chút nữa là đặt ô khi ghi Hãng và Loại thì để vào đúng ô phía dưới của ô nhập tương ứng: Hãng -> Cột D; Loại -> cột E. Ở cột C bạn cho thêm cái số thứ tự của SF vào đấy nữa.

À mà bỏ phần hỏi thêm mã khi chọn hãng, chỉ cần hỏi khi chọn Loại thôi. Thanks.

Còn ở phần sh Ketqua các bạn làm giúp mình nốt nhé %#^#$
 

File đính kèm

Lần chỉnh sửa cuối:
(1)
PHP:
Option Explicit
 Dim Sh, Rng As Range, sRng As Range
 Dim MyAdd As String, MyStr As String:       Dim Num As Integer

Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Intersect(Target, [d2].Resize(, 2)) Is Nothing Then
   Dim MyColor As Long, MyAdd As String, GPE As String
   
   MyColor = [b2].Interior.ColorIndex
   If MyColor < 34 Or MyColor > 42 Then MyColor = 34 Else MyColor = MyColor + 1
   [b2].Interior.ColorIndex = MyColor
   Set Sh = Sheets("Data"):                        Set Rng = Sh.Range("Hang")
   [b2].Value = Rng.Find([d2].Value, , xlFormulas, xlWhole).Offset(, 1).Value
   Set Rng = Sh.Range("LoaiSF")
   [b2].Value = [b2].Value & Rng.Find([e2].Value).Offset(, 1).Value
   Set Rng = Range([B4], [B65500].End(xlUp))
   Set sRng = Rng.Find([b2].Value, , xlFormulas, xlPart)
   If sRng Is Nothing Then
      [b2].Value = [b2].Value & "00"
   Else
      MyAdd = sRng.Address
      Do
         If Right(sRng.Value, 3) > GPE Then GPE = Right(sRng.Value, 2)
         Set sRng = Rng.FindNext(sRng)
      Loop While Not sRng Is Nothing And sRng.Address <> MyAdd
      GPE = Right("0" & CStr(CInt(GPE) + 1), 2)
      [b2].Value = [b2].Value & GPE
   End If
   If Target.Address = [d2].Address Then Exit Sub              '<=|'
   GPE = "GPE Xin Hoi Ban: " & [b2].Value
   MyColor = MsgBox("Ban Dòng Ý Nhap Ma Này?", vbQuestion + vbYesNo, GPE)
   If MyColor = 6 Then
      With [B65500].End(xlUp).Offset(1)
            .Value = [b2].Value
            .Offset(, 1).Value = "'" & Right([b2].Value, 2)          '<=|'
            .Offset(, 2).Resize(, 2).Value = [d2].Resize(, 2).Value
      End With
      GoTo GPE_
   Else
      [b2].Value = "Hen Gap!":
      GoTo GPE_
   End If
GPE_:                                                          '|=>'
   Range([B4], [B65500].End(xlUp)).Resize(, 4).Sort Key1:=[B5], Order1:=xlAscending, _
      Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
 End If
End Sub

(2)

Với iêu cầu này, bạn cần bổ sung mã hãng của loại SF đó vô cột 'C' hay 'F' của trang 'Data';
Vì tất nhiên không fải các hãng có cùng nhau các loại SF.

(Nếu mình chưa hiểu đúng thì cần diễn dịch lại giúp nha!)
 
Phần code của bác SA_DQ chỉ còn thiếu là khi sắp xếp thì cũng sắp xếp cả các cột khác tiếp sau nữa vì nó còn cột tên SF nữa để đồng bộ. Mà mình cũng muốn đổi ý một chút là đưa cột STT sang cột F, Tên SF sang cột G cho nó trực quan.

Ở sh Ketqua thì nó thực tế chỉ là lựa chọn trong danh sách mã SF mà đã tạo ở sh Ma. Để trực quan thì thay vì lựa chọn trực tiếp mã SF thì ta cho lựa chọn lần lượt từ Hãng -> Loại -> Tên SF (thay cho số thứ tự).

Data thì đã đủ dữ liệu rồi. Coi như các hãng có cùng loại SF, chúng chỉ khác nhau ở sản phẩm. Vả lại khi làm việc ta chỉ làm việc với các sản phẩm đã được tạo mã ở sheet Ma mà thôi.
 

File đính kèm

Lần chỉnh sửa cuối:
Vẫn chưa thể hiểu nổi bạn muốn làm gì ở 'KetQua' & bắt đầu từ đâu?
 

File đính kèm

Web KT

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

Back
Top Bottom