Đánh số thứ tự 10 triệu số, vừa chữ, vừa ký tự có điều kiện

Liên hệ QC

mrkhongcuong

Thành viên mới
Tham gia
13/8/09
Bài viết
8
Được thích
3
Em có bài toán thế này, Mong AC diễn đàn hỗ trợ:
Đánh số thứ tự 10 triệu số, vừa chữ, vừa số, không trùng nhau, điều kiện không có các số : 0,1, 8. không có ký tự: B,O,I.
Vd:
222AAAA222
222AAAA223
222AAAA224
222AAAA225
222AAAA226
222AAAA227
222AAAA229
222AAAA232
......
Em không biết làm thế nào? Mong AC diễn dàn giúp.
Em cám ơn
 
Nhưng đánh số thự tự như này có vẻ không ổn,nếu như bạn muốn tạo mã hầng hay gì đó thì nên dựa vào tên hoặc đặc điểm gì đó để đặt chữ cái như thế dễ hơn
Bài đã được tự động gộp:

Hơn nữa là chữ đầu thì để chữ đầu số cuối,hoặc số đầu chữ cuối dự phòng cho trường hợp khi nó tăng lên nữa
 
Nhưng đánh số thự tự như này có vẻ không ổn,nếu như bạn muốn tạo mã hầng hay gì đó thì nên dựa vào tên hoặc đặc điểm gì đó để đặt chữ cái như thế dễ hơn
Bài đã được tự động gộp:

Hơn nữa là chữ đầu thì để chữ đầu số cuối,hoặc số đầu chữ cuối dự phòng cho trường hợp khi nó tăng lên nữa
Dạ, chữ đầu, số cuối điều đc ạ
Bài đã được tự động gộp:

Nhưng đánh số thự tự như này có vẻ không ổn,nếu như bạn muốn tạo mã hầng hay gì đó thì nên dựa vào tên hoặc đặc điểm gì đó để đặt chữ cái như thế dễ hơn
Bài đã được tự động gộp:

Hơn nữa là chữ đầu thì để chữ đầu số cuối,hoặc số đầu chữ cuối dự phòng cho trường hợp khi nó tăng lên nữa
Em trong ngành in , tem rider nhãn, đơn hàng e làm tới gần 10 triệu con, mỗi con là một số vừa chữ vừa số.
E cần 1 file excel có 10 triệu số thỏa đk trên.
Bài đã được tự động gộp:

E mà đánh thủ công 10 triệu số này thì toang. ^~^
 
Lần chỉnh sửa cuối:
Dạ, chữ đầu, số cuối điều đc ạ
Bài đã được tự động gộp:


Em trong ngành in , tem rider nhãn, đơn hàng e làm tới gần 10 triệu con, mỗi con là một số vừa chữ vừa số.
E cần 1 file excel có 10 triệu số thỏa đk trên.
Bài đã được tự động gộp:

E mà đánh thủ công 10 triệu số này thì toang. ^~^

Có gì mà toang, toang là gì mà lo, làm nhiều thì nhận lương tương ứng
Tôi nghĩ công việc này từ lâu rồi, đâu phải đến bạn mới có, mà lo
Sao Ví dụ của bạn lại từ 222...., không phải là 111....?
 
Có gì mà toang, toang là gì mà lo, làm nhiều thì nhận lương tương ứng
Tôi nghĩ công việc này từ lâu rồi, đâu phải đến bạn mới có, mà lo
Sao Ví dụ của bạn lại từ 222...., không phải là 111....?
Dạ, điều kiện là không có số 0,1,8. Không có ký tự B,O,I ạ
 
Có gì mà toang, toang là gì mà lo, làm nhiều thì nhận lương tương ứng
Tôi nghĩ công việc này từ lâu rồi, đâu phải đến bạn mới có, mà lo
Sao Ví dụ của bạn lại từ 222...., không phải là 111....?
Nhận lương nhưng người khác (như bạn) làm thì có sao đâu :p

Cỡ 10 triệu mã. Cty này lớn, trả tiền xộp à nghe.
 
Thực ra cái này giống tạo mã để phân biệt thì hơn.chắc kiểu lấy ngẫu nhiên ký tự xong ghép với số theo quy luật miễn sao không trùng + khác các ký tự cấm kỵ cho trước cho nó ngầu chứ không nhất thiết là AAAA1 ,AAAA2 ,...... AAAA10000000 đâu chứ.Bảng tính Excel Max là 1048576 .chắc chia ra mấy cột.Bài cũng căng chưa làm qua nữa
 
Thực ra cái này giống tạo mã để phân biệt thì hơn.chắc kiểu lấy ngẫu nhiên ký tự xong ghép với số theo quy luật miễn sao không trùng ...
Mã có 3 đoạn.
Đoạn thứ nhất 222-999 -> 778 kiểu
Đoạn thứ nhì AAAA-ZZZZ -> 23^4 = 279841 kiểu (không có B, O, I thì chỉ còn 23 ký tự)
Đoạn thứ ba 222-999 -> 778 kiểu
Ráp 3 đoạn này lại thì được 23^4 * 778^2 kiểu

Công ty này lớn đến mức độ có hàng chục triệu mã hàng.

Bài toán này ăn 0,1 đồng một mã là đúng giá rồi.

Chú: không có O, I là do mã muốn tránh O trông giống 0 và I trông giống 1. Không rõ B tại sao lại phải tránh - giống 8?
 
Bạn đánh số từ 1 đến 1e7, dùng hàm text để nối thêm các ký tự cho đủ độ dài rồi dùng Substitute 3 lần để thay thế chữ ố 0, 1, 8 thành chữ cái X, Y, Z chẳng hạn.
 
Em có bài toán thế này, Mong AC diễn đàn hỗ trợ:
Đánh số thứ tự 10 triệu số, vừa chữ, vừa số, không trùng nhau, điều kiện không có các số : 0,1, 8. không có ký tự: B,O,I.
Vd:
222AAAA222
222AAAA223
222AAAA224
222AAAA225
222AAAA226
222AAAA227
222AAAA229
222AAAA232
......
Em không biết làm thế nào? Mong AC diễn dàn giúp.
Em cám ơn
Code chạy khá nhanh, gán kết quả 10.000.000 ô khá chậm
Mã:
Sub Main()
  Dim aSo, aKT, stt() As String, stt2() As String, Res() As String
  Dim i&, i2&, i3&, k&, j&, sR&, sR2&
  Const N& = 10 ^ 6
 
  aSo = Array(, "2", "3", "4", "5", "6", "7", "9")
  aKT = Array(, "A", "C", "D", "E", "F", "G", "H", "J", "K", "L", "M", _
                  "N", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z")

  stt = CH_L(aSo, 3)
  sR = UBound(stt)
  stt2 = CH_L(aKT, 4)
  sR2 = UBound(stt2)
 
  ReDim Res(1 To N, 1 To 10)
  j = 1
  For i = 1 To sR
    For i2 = 1 To sR2
      For i3 = 1 To sR
        If k = N Then k = 1: j = j + 1 Else k = k + 1
        If j = 11 Then
          Range("B2").Resize(N, 10) = Res
          Exit Sub
        End If
        Res(k, j) = stt(i, 1) & stt2(i2, 1) & stt(i3, 1)
      Next i3
    Next i2
  Next i
End Sub

Private Function CH_L(ByVal Arr As Variant, ByVal k&) As Variant
  Dim Res() As String, M&, i&, r&, j&, sRow&
 
  M = UBound(Arr)
  ReDim Res(1 To M ^ k, 1 To 1)
  sRow = 1:  r = 1
  Res(r, 1) = String(k, Arr(1))
  For N = k To 1 Step -1
    For j = 2 To M
      For i = 1 To sRow
        tmp = Res(i, 1)
        Mid(tmp, N, 1) = Arr(j)
        r = r + 1
        Res(r, 1) = tmp
      Next i
    Next j
    sRow = M * sRow
  Next N
  CH_L = Res
End Function
 

File đính kèm

  • test.xlsm
    18.5 KB · Đọc: 14
Bạn đánh số từ 1 đến 1e7, dùng hàm text để nối thêm các ký tự cho đủ độ dài rồi dùng Substitute 3 lần để thay thế chữ ố 0, 1, 8 thành chữ cái X, Y, Z chẳng hạn.
Dữ liệu cỡ này chạy VBA cứ công thức làm được mà kéo cả triệu hàng cũng hết hơi
 
Dữ liệu cỡ này chạy VBA cứ công thức làm được mà kéo cả triệu hàng cũng hết hơi
Chia làm 10 cột, mỗi cột 1 triệu số, mỗi lần chỉ làm với 1 cột. Hoặc dùng power query, tạo list {1..10000000} rồi chuyển thành bảng.
 
Mình tư duy như sau nhé:
- Có 10 số từ 0 đến 9 bỏ 0,1,8 còn 7 số
- Có 26 chữ cái bỏ B,O,I còn 23
=> 1 vị trí trong chuỗi ký tự của bạn có 30 cách chọn, vậy chuỗi ít nhất phải là 5 ký tư (do 30^4<10 triệu, 30^5 mới lớn hơn 10 triệu)
Bạn lập 1 bảng gồm 2 cột: STT---Ký tự
Lấy 1 ký tự ngẫu nhiên bằng hàm: VLOOKUP(RANDBETWEEN(1;30);$J$14:$K$43;2;0) trong đó $J$14:$K$43 là bảng nói trên
Bạn ghep 5 hoặc 6 ký tự nêu trên bằng ký tự &: =VLOOKUP(RANDBETWEEN(1;30);$J$14:$K$43;2;0)&VLOOKUP(RANDBETWEEN(1;30);$J$14:$K$43;2;0).....
Để các chuỗi không nhảy bạn copy value sang 1 cột khác
Cột bên cạnh bạn kiểm tra có lặp lại không bằng lệnh countif
Excel chỉ chạy dc khoảng 100k dòng thôi, và máy chạy rất nặng, bạn nên chia thành nhiều lần và copy value sang 1 file khác, vì hàm randbetween chạy liên tục rất nặng file
Mình gửi file ví dụ của mình, mong giúp được bạn
 

File đính kèm

  • ChuoiNgauNhien(TNT).xlsx
    18 KB · Đọc: 4
Web KT
Back
Top Bottom