Giúp mình tăng mã số tự động

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

it4lt

Thành viên mới
Tham gia
27/8/07
Bài viết
3
Được thích
0
Mình có một list mã số như sau :
A0-01-001
nhờ các bạn hướng dẫn giùm cách tăng số mã số
từ A0-01-001 lên A0-01-002, A0-01-00... mà không phải gõ bằng tay
mình không biết dùng hàm gì.
 
Mình có một list mã số như sau :
A0-01-001
nhờ các bạn hướng dẫn giùm cách tăng số mã số
từ A0-01-001 lên A0-01-002, A0-01-00... mà không phải gõ bằng tay
mình không biết dùng hàm gì.


Đưa con chuột vào phía dưới bên phải ô A0-01-001 rồi "giữ và kéo" là được !
 
Mình có một list mã số như sau :
A0-01-001
nhờ các bạn hướng dẫn giùm cách tăng số mã số
từ A0-01-001 lên A0-01-002, A0-01-00... mà không phải gõ bằng tay
mình không biết dùng hàm gì.

Bạn cứ kéo Fill bình thường như khi điền stt 1, 2, 3,... vậy thôi.
 
Vấn đề ở đây là sau mã A0-01-999 thì sẽ là A0-02-001

(Hoặc là A0-02-000) mà chuyện đó excel chưa biết cách làm!

--=0 :-= --=0
 
Khắc phục bằng công thức này vậy:
A1="A0-"&INT(ROW()/1000+1)&"-"&MOD(ROW(),1000)

Nhìn vô công thức này thấy ngay là chưa thể tổng quát;
Sau mã A0-99-999 sẽ là là A1-00-000 hay là A1-00-001 cơ mà. . .
& Sau A9-99-999 sẽ là B0-00-000 (1) cơ mà!

Nếu đòi hỏi như vậy chắt mệt cho công thức lắm, nhỉ?!
 
Hãy xài hàm tự tạo sau:

PHP:
Option Explicit
Function TaoMa(Ma As String) As String
' "A*-**-***"   '
 If InStr(Ma, "9-99-999") > 0 Then
   TaoMa = Chr(Asc(Ma) + 1) & "0-00-001"
 ElseIf InStr(Ma, "-99-999") > 0 Then
   TaoMa = Left(Ma, 1) & CStr(CByte(Mid(Ma, 2, 1)) + 1) & "-00-001"
 ElseIf InStr(Ma, "9-999") > 0 Then
   TaoMa = Left(Ma, 3) & CStr(CByte(Mid(Ma, 4, 1)) + 1) & "0-001"
 ElseIf InStr(Ma, "999") > 0 Then
   TaoMa = Left(Ma, 4) & CStr(CByte(Mid(Ma, 5, 1)) + 1) & "-001"
 ElseIf InStr(Ma, "99") > 0 Then
   TaoMa = Left(Ma, 6) & CStr(CByte(Mid(Ma, 7, 1)) + 1) & "00"
 ElseIf Right(Ma, 1) = "9" Then
   TaoMa = Left(Ma, 7) & CStr(CByte(Mid(Ma, 8, 1)) + 1) & "0"
 Else
   TaoMa = Left(Ma, 8) & CStr(CByte(Right(Ma, 1)) + 1)
 End If
End Function

& Đây là kết quả
|A|B|
| Số trước | Số Kế tiếp |
|A0-00-001 | A0-00-002 |<= =taoma(A2)
|A0-00-009 | A0-00-010 |
|B1-11-049 | B1-11-050 |
|C2-90-099 | C2-90-100|
|A0-09-899 | A0-09-900|
|B1-07-999 | B1-08-001 |
|B1-09-999 | B1-10-001 |
|V4-99-999 | V5-00-001 |
|A9-99-999 | B0-00-001|
|...|...|:-=

Mà hình như còn thiếu nhiều trường hợp!
 
Lần chỉnh sửa cuối:
Nhìn vô công thức này thấy ngay là chưa thể tổng quát;
Sau mã A0-99-999 sẽ là là A1-00-000 hay là A1-00-001 cơ mà. . .
& Sau A9-99-999 sẽ là B0-00-000 (1) cơ mà!

Nếu đòi hỏi như vậy chắt mệt cho công thức lắm, nhỉ?!

Công thức chỉ mang tính chất tổng quát gợi ý hướng làm. Dosnet đã tính làm nốt chỗ "A0" nhưng chắc quá 65.000 dòng nên bỏ qua --=0

làm như thế nó mất "00" hả bạn ? - a0-1-1

Bạn xem bài #8 của Duongdv đã khắc phục tốt rồi đó.
 
hướng giải quyết

chân thành cám ơn mọi người đã nhiệt tình trợ giúp.
mình có một công thức khác có thể áp dụng được:
côngthức="A0-01-"&TEXT(VALUE(RIGHT(B4,3))+1,"000")

* nếu cột B4 là A0-01-001 thì côngthức sẽ = A0-01-002.
một lần nữa chân thành cám ơn mọi người.
 
cái này mình thấy chỉ cần thêm dấu (') vào trước A0-00-01 thì kéo xuống bình thường thôi mà.
 
cái này mình thấy chỉ cần thêm dấu (') vào trước A0-00-01 thì kéo xuống bình thường thôi mà.
Khẳng định với bạn là theo cách của bạn sẽ không đáp ứng được yêu cầu của tác giả.
Vì theo cách này khi tăng đến mã 'A0-00-999--> 'A0-00-1000 trong khi yêu cầu phải là
'A0-00-999--> 'A0-01-000 ==>.....
 
Công thức chỉ mang tính chất gợi ý tổng quát hướng làm. Dosnet đã tính làm nốt chỗ "A0" nhưng chắc quá 65.000 dòng nên bỏ qua --=0

Bài toán loại này hay gặp trong quản lý vật tư, mà thường khi đó các loại hàng hóa phân theo nhóm theo cách riêng của người quản lý
Cho nên số liệu vừa có cả tịnh tiến vừa có cả nhảy cóc

Nói giả dụ thôi: 2 ký số nằm giữa 2 gạch nối có thể biểu thị 100 ngành hàng khác nhau
theo dự kiến; Nhưng hiện tại trong kho chỉ ó 35 ngành hàng; Cơ mà theo phân loại của người quản kho, chúng không phải là từ -00- đến mã -34- mà có thể vượt -34- vài chục món & vài chục số;
Ví dụ: Họ quy định:
-0X- : Nhiên liệu
-1X-: Điện, điện tử
-5X-: Vật liệu xây dựng
-6X- Hóa chất
-07- Hàng cơ khí,. . .

Nhưng thôi, vẽ ra nhiều quá rồi thì phải
Xin lỗi nếu làm các bạn phiền lòng!
 
Mình có một list mã số như sau :
A0-01-001
nhờ các bạn hướng dẫn giùm cách tăng số mã số
từ A0-01-001 lên A0-01-002, A0-01-00... mà không phải gõ bằng tay
mình không biết dùng hàm gì.
<font color="red">
PHP:
=IF(VALUE(RIGHT(A1,LEN(A1)-6))<9,LEFT(A1,6)&"00"&VALUE(RIGHT(A1,LEN(A1)-6))+1,IF(AND(VALUE(RIGHT(A1,LEN(A1)-6))>=9,VALUE(RIGHT(A1,LEN(A1)-6))<99),LEFT(A1,6)&"0"&VALUE(RIGHT(A1,LEN(A1)-6))+1,IF(VALUE(RIGHT(A1,LEN(A1)-6))>=99,LEFT(A1,6)&VALUE(RIGHT(A1,LEN(A1)-6))+1,"")))
cÔNG THỨC THẤY GHÊ NÀY CHO MÃ SỐ CỦA BẠN CHẠY QUA KHỎI MỐC 1000 LUÔN . HỔNG BIẾT CÓ ĐÚNG Ý BẠN HỔNG
NẾU TỚI 999 MÀ THÀNH A0-02-001 THÌ CÔNG THỨC CÒN GHÊ NỮA
MÀ CÒN TỚI A1-01-001 THÌ BẠN NHỜ MẤY ANH TRONG BQT VIẾT HÀM THÔI
CHÚC MỌI NGƯỜI KHỎE
 
Chỉnh sửa lần cuối bởi điều hành viên:
Bài toán loại này hay gặp trong quản lý vật tư, mà thường khi đó các loại hàng hóa phân theo nhóm theo cách riêng của người quản lý
Cho nên số liệu vừa có cả tịnh tiến vừa có cả nhảy cóc

Nói giả dụ thôi: 2 ký số nằm giữa 2 gạch nối có thể biểu thị 100 ngành hàng khác nhau
theo dự kiến; Nhưng hiện tại trong kho chỉ ó 35 ngành hàng; Cơ mà theo phân loại của người quản kho, chúng không phải là từ -00- đến mã -34- mà có thể vượt -34- vài chục món & vài chục số;
Ví dụ: Họ quy định:
-0X- : Nhiên liệu
-1X-: Điện, điện tử
-5X-: Vật liệu xây dựng
-6X- Hóa chất
-07- Hàng cơ khí,. . .

Nhưng thôi, vẽ ra nhiều quá rồi thì phải
Xin lỗi nếu làm các bạn phiền lòng!
Cái nào cũng có một yêu cầu cụ thể thì mới làm được chứ bạn. Nghĩ ra một công thức bao quát tất cả sẽ phức tạp hơn, mất thời gian hơn so với xử lý từng trường hợp. Nói chung chung thì khó mà lường hết các trường hợp lắm.
 
Cái nào cũng có một yêu cầu cụ thể thì mới làm được chứ bạn. Nghĩ ra một công thức bao quát tất cả sẽ phức tạp hơn, mất thời gian hơn so với xử lý từng trường hợp. Nói chung chung thì khó mà lường hết các trường hợp lắm.

Mình muốn nói đến trường hợp tổng quát nhất:

Viết 1 hàm mà khi nhận vô 1 chuỗi, thì trả về chuỗi lớn có trị "Lớn" hơn liền kề trong dạng thức quy định W*-**-***
Ở đây W đại diện cho 1 ký tự, * đại diện cho 1 ký số

Ví dụ =TaoMa( "J9-99-999") sẽ trả về => "K0-00-001"
= TaoMa( "K8-99-999") => trả về "K9-00-001"
. . . . .

Lòng tham của con người í mà, thông cảm!
 
Mình muốn nói đến trường hợp tổng quát nhất:

Viết 1 hàm mà khi nhận vô 1 chuỗi, thì trả về chuỗi lớn có trị "Lớn" hơn liền kề trong dạng thức quy định W*-**-***
Ở đây W đại diện cho 1 ký tự, * đại diện cho 1 ký số

Ví dụ =TaoMa( "J9-99-999") sẽ trả về => "K0-00-001"
= TaoMa( "K8-99-999") => trả về "K9-00-001"
. . . . .

Lòng tham của con người í mà, thông cảm!
Mã tiếp theo của "J9-99-999" sao không phải là "K0-00-000" hoặc "K1-01-001" mà là "K0-00-001". Tôi làm luôn cả 3 trường hợp vậy.
 

File đính kèm

Mình có một list mã số như sau :
A0-01-001
nhờ các bạn hướng dẫn giùm cách tăng số mã số
từ A0-01-001 lên A0-01-002, A0-01-00... mà không phải gõ bằng tay
mình không biết dùng hàm gì.
Ở cột chứa list bạn cứ vào FOTMAT CELL GENERAL CUSTOM TYPE : 00# . Chọn ô kế dưới nhập A0-01-001 rồi kéo nó xuống
Mỏi tay thì nghỉ , không cần công thức gì ráo trọi
 
Ở cột chứa list bạn cứ vào FOTMAT CELL GENERAL CUSTOM TYPE : 00# . Chọn ô kế dưới nhập A0-01-001 rồi kéo nó xuống
Mỏi tay thì nghỉ , không cần công thức gì ráo trọi
Xem kỹ yêu cầu trước khi trả lời bài viết nha bạn.
 
Web KT

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

Back
Top Bottom