Xin được hỗ trợ hàm tạo tài khoản Nhân viên dựa vào Họ và Tên

Liên hệ QC

lupin212

Thành viên mới
Tham gia
25/3/10
Bài viết
5
Được thích
0
Gửi các anh/chị diễn đàn, nhờ các anh/chị hỗ trợ giúp em với ạ.
Hiện em đang phải tạo tài khoản cho Nhân viên, mà mấy tháng gần đây thì mỗi ngày tạo càng nhiều :( có những ngày trên 200 tài khoản, riêng thời gian tạo đã mất trên 2h rồi, hiện em đã có công cụ import vào nên mạn phép nhờ anh chị hỗ trợ giúp em tạo thông tin tài khoản.
Công thức tạo thông tin tài khoản của bên em là: Tên + chữ cái đầu trong họ và tên đệm, ví dụ như ảnh dưới
Nguyen Huu Duy Tuan -> TuanNHVD
1639315651112.png
Nhờ các anh/chị giúp em tạo trường thông tin User với ạ.
*Nếu có thể mạn phép nhờ các anh chị hỗ trợ giúp em thêm vấn đề trong khi tạo User
Như ảnh trên thì trong quá trình tạo tài khoản sẽ có rất nhiều tài khoản sẽ bị trùng, bên em xử lý bằng cách thêm số vào cuối các tài khoản, Ví dụ: Minhnb1 -> Minhnb2 ->...
Để biết được đến số bao nhiêu em có dùng hàm đếm số tài khoản trùng nhưng mà lại gặp trường hợp,
ví dụ: Nguyễn Tuấn: TuanN; Nguyễn Định Tuân: TuanND -> Thì khi đếm TuanN thì nó đếm cả tài khoản TuanND nên bị lệch.
Nên nhờ các anh/chị giúp em hàm đếm số tài khoản trùng với ạ.
Cám ơn các anh chị nhiều nhiều.
 
Mõi ngày thêm 200 trự là con số khá lớn đối với quản lý tài khoản.
Bạn quản lý đến bao nhiêu ấy tài khoản mà tại sao lại dùng Excel? Công việc này tối thiểu phải dùng Access.
 
...ví dụ: Nguyễn Tuấn: TuanN; Nguyễn Định Tuân: TuanND -> Thì khi đếm TuanN thì nó đếm cả tài khoản TuanND nên bị lệch.
Nên nhờ các anh/chị giúp em hàm đếm số tài khoản trùng với ạ.
...
Đếm bằng hàm nào?
Nếu hàm COUNTIFS thì đếm những trị >="TuanN" và <="TuanN" & "999"
Tuy nhiên, hàm Countifs chỉ đúng nếu số không bị thủng lỗ (bị nhảy số)
Trường hơp này dùng MAXIFS đúng hơn.

Nếu chắc chắn rằng TuanN05 luôn luôn được xếp sau TuanN04 thì dùng hàm Lookup.
 
Nếu là mình thì mình sẽ tạo ra bộ mã tài khoản như sau:

STTHọ & TênTKLen()
1Trần Hồng HoaHoa____TH00
11​
2Từ Thị Hoa HồngHong___TH00
11​
3Thái Thành DươngDuong__TT00
11​
4Trần Đức DuongDuong__TF00
11​
5Trân ĐăngFang___TJ00
11​
6Đinh Đăng ĐịnhFinh___FF00
11​
7Thái Thị Thu HươngHuong__TT00
11​
8Đỗ Đình ĐangFang___FF00
11​
9Đăng Đức ĐangFang___FF01
11​
10Công Tằng Tôn Nữ Nguyệt MinhMinh___CN00
11​
11Nguyễn Ái ÂnAn_____NA00
11​
12Ngô Thị Ánh AnAn_____NA01
11​
 
Gửi các anh/chị diễn đàn, nhờ các anh/chị hỗ trợ giúp em với ạ.
Hiện em đang phải tạo tài khoản cho Nhân viên, mà mấy tháng gần đây thì mỗi ngày tạo càng nhiều :( có những ngày trên 200 tài khoản, riêng thời gian tạo đã mất trên 2h rồi, hiện em đã có công cụ import vào nên mạn phép nhờ anh chị hỗ trợ giúp em tạo thông tin tài khoản.
Công thức tạo thông tin tài khoản của bên em là: Tên + chữ cái đầu trong họ và tên đệm, ví dụ như ảnh dưới
Nguyen Huu Duy Tuan -> TuanNHVD
View attachment 270254
Nhờ các anh/chị giúp em tạo trường thông tin User với ạ.
*Nếu có thể mạn phép nhờ các anh chị hỗ trợ giúp em thêm vấn đề trong khi tạo User
Như ảnh trên thì trong quá trình tạo tài khoản sẽ có rất nhiều tài khoản sẽ bị trùng, bên em xử lý bằng cách thêm số vào cuối các tài khoản, Ví dụ: Minhnb1 -> Minhnb2 ->...
Để biết được đến số bao nhiêu em có dùng hàm đếm số tài khoản trùng nhưng mà lại gặp trường hợp,
ví dụ: Nguyễn Tuấn: TuanN; Nguyễn Định Tuân: TuanND -> Thì khi đếm TuanN thì nó đếm cả tài khoản TuanND nên bị lệch.
Nên nhờ các anh/chị giúp em hàm đếm số tài khoản trùng với ạ.
Cám ơn các anh chị nhiều nhiều.
Bạn tham khảo nhé. .
 

File đính kèm

Lẽ ra nên đính kèm tập tin.
Dữ liệu luôn tự gõ và luôn do 1 người tự gõ? Nếu 2 người mà một người gõ Unicode còn người kia gõ Unicode tổ hợp, hoặc nếu do copy/paste từ đâu đó (từ một chỗ khác) thì khả năng dữ liệu có chứa cả unicode dựng sẵn và unicode tổ hợp là cao. Lúc đó code bài #5 không còn chuẩn nữa. Ví dụ tên là "Đỗ Anh Bá" thì mã là "BáDa".

Với bài #5 thì phải đảm bảo dữ liệu là unicode dựng sẵn (trong Unikey gọi là Unicode). Ngoài ra code chưa xử lý trùng mã. Vd. B3 = Ngô Thị Hải thì C2 = C3 = Haint
 
Cám ơn anh nhiều ạ :D
Bài đã được tự động gộp:

Đếm bằng hàm nào?
Nếu hàm COUNTIFS thì đếm những trị >="TuanN" và <="TuanN" & "999"
Tuy nhiên, hàm Countifs chỉ đúng nếu số không bị thủng lỗ (bị nhảy số)
Trường hơp này dùng MAXIFS đúng hơn.

Nếu chắc chắn rằng TuanN05 luôn luôn được xếp sau TuanN04 thì dùng hàm Lookup.
Phiền anh có thể gửi cho em hàm anh sử dụng được không ạ? Hàm COUNTIFS ấy ạ.
 
Macro để thực thi #4 1 cách tự động như sau:
PHP:
Sub TaiKhoan()
 Dim aTmp, Cls As Range, Dic As Object:     Const sNum As String = "0000000"
 Dim W As Integer, DD As Integer, Rws As Long, jJ As Long, iTen As Integer
 Dim HTen As String, Ma As String, sTmp As String
 
 Set Dic = CreateObject("scripting.dictionary")
 With Sheets("TK")
    Rws = .[C2].CurrentRegion.Rows.Count
    For Each Cls In .[C2].Resize(Rws)
        HTen = Cls.Value:                   If HTen = "" Then Exit For
        aTmp = Split(HTen, " "):            DD = UBound(aTmp)
        Ma = BoDau(aTmp(DD)):               Ma = Left(Ma & sNum, 8)
        Ma = Ma & BoDau(Left(aTmp(0), 1))       
        If DD = 1 Then
            Ma = Ma & "J"
        Else
            Ma = Ma & BoDau(Left(aTmp(DD - 1), 1))
        End If       
        If Not Dic.Exists(Ma) Then
            W = W + 1:                          Dic.Add Ma, W
            Cls.Offset(, 1).Value = Ma
        Else
            jJ = 1 + CLng(Mid$(Ma, 1 + Len(aTmp(DD)), 8 - Len(aTmp(DD))))
            iTen = Len(aTmp(DD))
            Cls.Offset(, 1) = Left(Ma, iTen) & Right(sNum & CStr(jJ), 8 - iTen) & Right(Ma, 2)
        End If
    Next Cls
 End With
End Sub
Mã:
Function BoDau(ByVal sContent As String) As String
Dim i As Long, intCode As Long
Dim sChar As String, sConvert As String

BoDau = AscW(sContent)
For i = 1 To Len(sContent)
    sChar = Mid(sContent, i, 1)
    If sChar <> "" Then
        intCode = AscW(sChar)
    End If
    Select Case intCode
    Case 273:           sConvert = sConvert & "f"  '
    Case 272
        sConvert = sConvert & "F"
    Case 224, 225, 226, 227, 259, 7841, 7843, 7845, 7847, 7849, 7851, 7853, 7855, 7857, 7859, 7861, 7863   ''
        sConvert = sConvert & "a"  ''
    Case 192, 193, 194, 195, 258, 7840, 7842, 7844, 7846, 7848, 7850, 7852, 7854, 7856, 7858, 7860, 7862
        sConvert = sConvert & "A"
    Case 232, 233, 234, 7865, 7867, 7869, 7871, 7873, 7875, 7877, 7879 ''
        sConvert = sConvert & "e"  ''
    Case 200, 201, 202, 7864, 7866, 7868, 7870, 7872, 7874, 7876, 7878
        sConvert = sConvert & "E"
    Case 236, 237, 297, 7881, 7883:         sConvert = sConvert & "i"  ''
    Case 204, 205, 296, 7880, 7882
        sConvert = sConvert & "I"
    Case 242, 243, 244, 245, 417, 7885, 7887, 7889, 7891, 7893, 7895, 7897, 7899, 7901, 7903, 7905, 7907   ''
        sConvert = sConvert & "o"  ''
    Case 210, 211, 212, 213, 416, 7884, 7886, 7888, 7890, 7892, 7894, 7896, 7898, 7900, 7902, 7904, 7906
        sConvert = sConvert & "O"
    Case 249, 250, 361, 432, 7909, 7911, 7913, 7915, 7917, 7919, 7921:        sConvert = sConvert & "u"  ''
    Case 217, 218, 360, 431, 7908, 7910, 7912, 7914, 7916, 7918, 7920
        sConvert = sConvert & "U"
    Case 253, 7923, 7925, 7927, 7929
        sConvert = sConvert & "y"
    Case 221, 7922, 7924, 7926, 7928
        sConvert = sConvert & "Y"
    Case Else
        sConvert = sConvert & sChar
    End Select
 Next i
 BoDau = sConvert
End Function
 
SQL String, trường hợp muốn dùng ADO
Replace("Select Max(a.ma) From (Seclect ma From BangMa Where ma Between ""<?>0"" And ""<?>999"") a", "<?>", tenTaiKhoan)

Hàm CountIfs:
=COUNTIFS(cotMa, ">=" & tenTaiKhoan & "0", cotMa, "<=" & tenTaiKhoan & "999")
Như đã cảnh báo, kết quả sẽ sai nếu số có lỗ thủng.
 
Lần chỉnh sửa cuối:
Gửi các anh/chị diễn đàn, nhờ các anh/chị hỗ trợ giúp em với ạ.
Hiện em đang phải tạo tài khoản cho Nhân viên, mà mấy tháng gần đây thì mỗi ngày tạo càng nhiều :( có những ngày trên 200 tài khoản, riêng thời gian tạo đã mất trên 2h rồi, hiện em đã có công cụ import vào nên mạn phép nhờ anh chị hỗ trợ giúp em tạo thông tin tài khoản.
Công thức tạo thông tin tài khoản của bên em là: Tên + chữ cái đầu trong họ và tên đệm, ví dụ như ảnh dưới
Nguyen Huu Duy Tuan -> TuanNHVD
View attachment 270254
Nhờ các anh/chị giúp em tạo trường thông tin User với ạ.
*Nếu có thể mạn phép nhờ các anh chị hỗ trợ giúp em thêm vấn đề trong khi tạo User
Như ảnh trên thì trong quá trình tạo tài khoản sẽ có rất nhiều tài khoản sẽ bị trùng, bên em xử lý bằng cách thêm số vào cuối các tài khoản, Ví dụ: Minhnb1 -> Minhnb2 ->...
Để biết được đến số bao nhiêu em có dùng hàm đếm số tài khoản trùng nhưng mà lại gặp trường hợp,
ví dụ: Nguyễn Tuấn: TuanN; Nguyễn Định Tuân: TuanND -> Thì khi đếm TuanN thì nó đếm cả tài khoản TuanND nên bị lệch.
Nên nhờ các anh/chị giúp em hàm đếm số tài khoản trùng với ạ.
Cám ơn các anh chị nhiều nhiều.
User chữ đầu viết hoa hay thường bạn. bạn thử xem nhé!!!
 

File đính kèm

Lần chỉnh sửa cuối:
Web KT

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

Back
Top Bottom