Đánh số code tự động cho mã hàng

Liên hệ QC

Hồn Quê

Thành viên hoạt động
Tham gia
4/4/18
Bài viết
105
Được thích
8
Giới tính
Nữ
Em đang đặt mã code cho vật tư như sau:
Loại hàng Code
ROD6 01
ROD10 02
ROD16 03
giờ có 1 vấn đề phát sinh: giả sử nó xuất hiện 1 loại hàng ROD8 thì đúng ra mã code của nó phải là 02, nói chung khi xuất hiện mã hàng nào có quy cách lớn hơn mã hàng đứng trước khi mình chèn vô thì mã code nó tự động nhảy và các mã hàng bên dưới tự động nhảy số theo tương ứng. Nhờ anh em diễn đàn giúp em công thức với, em cảm ơn ạ.
 

File đính kèm

  • code.xlsx
    11 KB · Đọc: 9
Code mà thay đổi liền liền thì dùng làm chi vậy?
 
Mình có ý tưởng thế này bạn làm thử.
Sub()
--' Nhập tên loại hàng
--' Sắp Sếp tên mã hàng theo thứ tự
-- chọn cột kế bên. nhập số 1
-- autofill tới cột cuối cùng.
Bạn có thể dùng Macro record lại để đc Code VBA.
nếu yêu cầu đòi hỏi phải có số 0 đằng trước thì bạn thử dùng thêm 1 cột nữa cho cái hàm nối chuỗi rồi cũng auto Fill sau đó xóa cột thừa đi...
Chút ý tưởng hi vọng có thể giúp đc bạn.
 
Mình có ý tưởng thế này bạn làm thử.
Sub()
--' Nhập tên loại hàng
--' Sắp Sếp tên mã hàng theo thứ tự
-- chọn cột kế bên. nhập số 1
-- autofill tới cột cuối cùng.
Bạn có thể dùng Macro record lại để đc Code VBA.
nếu yêu cầu đòi hỏi phải có số 0 đằng trước thì bạn thử dùng thêm 1 cột nữa cho cái hàm nối chuỗi rồi cũng auto Fill sau đó xóa cột thừa đi...
Chút ý tưởng hi vọng có thể giúp đc bạn.
Ý tưởng của bạn không thực hiện được với loại dữ liệu này.
Nếu để cho Excel nó sắp xếp thì nó sẽ xếp ROD6 lớn hơn ROD10.
Đòi hỏi của thớt rắc rối lắm chứ không giản dị như thớt nghĩ.
 
Ý tưởng của bạn không thực hiện được với loại dữ liệu này.
Nếu để cho Excel nó sắp xếp thì nó sẽ xếp ROD6 lớn hơn ROD10.
Đòi hỏi của thớt rắc rối lắm chứ không giản dị như thớt nghĩ.
Thế mình thêm 1 cột tạm để chia cho đúng, kiểu như LENGH của mã nhận là 4 kí tự thì sửa ROD6->ROD06 và dùng giá trị này để xét. chạy xong xóa 2 cột tạm này :p. Cách này hơi thủ công nhưng mình chưa rành các hàm và code lắm nên chưa đưa ra đc phương án tối ưu
EX. input=msgbox..... a
if len(a)=4 then
a=Concrenate(left(a,3), "0", Right(a,1)
a= Range("cell").value
xong rồi xếp thứ tự thôi. Vậy có ổn ko nhỉ?
 
Thế mình thêm 1 cột tạm để chia cho đúng, kiểu như LENGH của mã nhận là 4 kí tự thì sửa ROD6->ROD06 và dùng giá trị này để xét. chạy xong xóa 2 cột tạm này :p. Cách này hơi thủ công nhưng mình chưa rành các hàm và code lắm nên chưa đưa ra đc phương án tối ưu
EX. input=msgbox..... a
if len(a)=4 then
a=Concrenate(left(a,3), "0", Right(a,1)
a= Range("cell").value
xong rồi xếp thứ tự thôi. Vậy có ổn ko nhỉ?
Đúng vậy đó bạn vậy mình sửa lại ROD6 thành ROD06 bạn có thể giúp mình công thức với
 

File đính kèm

  • code.xlsx
    11 KB · Đọc: 1
Đúng vậy đó bạn vậy mình sửa lại ROD6 thành ROD06 bạn có thể giúp mình công thức với
mình ko viết đc macro nhưng nếu bạn viết được thì làm thử theo các bước sau nhé..
- khai báo biến sub này nọ
- Chọn cột mã số rồi clear content đi range("Cột mã sô").clearcontent
- nhập thông tin mã mới input=msgbox gì đó gán bằng "a"
- Chỉnh sửa a thành b (là dạng ROD06)
- Chọn dòng cuối cùng trong cột mã hàng
- Nhét giá trị b vô
- sắp xếp tăng dần cho cột Mã hàng
- tạo 1 cột tạm sát bên mã hàng (Cột B)
- chọn cột tạm B sát bên cột mã số rồi điền vô số C1=1,C2=2 sau đó autofill là bạn có ngay 1,2,3,4......tới cuối cùng của mã
- Qua cột Mã số= nối chuối cho nó có dạng 01,02... với những số nhỏ hơn 10
- Copy lại cột C 1 lần nữa as value để khi xóa cột B nó ko bị mất số
- Xóa cột tạm B
- Siêng hơn nữa thì dùng hàm Find tìm lại giá trị b rồi sửa thành giá trị a ban đầu.
He He He He. mình ngu VBA nên chưa rút gọn đc. Bạn thông cảm
 
Hic mình cũng đâu có biết gì về VBA đâu bạn, mà cái này không dùng công thức được hả bạn?
 
có luôn, không xài VBA thì khỏe re.
Cứ insert mã hàng mới vô phát, rồi sắp xếp tăng dần, sau đó kích vô ô 01 update lại giá trị phát là xong.
 

File đính kèm

  • code.xlsx
    9.9 KB · Đọc: 7
Web KT
Back
Top Bottom