tách lấy chữ cái đầu tiên từ họ+đệm+tên: TẠ VĂN TÂM => TVT00

Liên hệ QC

hoahongden142917

Thành viên hoạt động
Tham gia
28/5/13
Bài viết
180
Được thích
20
Xin chào anh em. nhờ anh em giúp giùm tôi cái này với: t có danh sách khoảng 160 tên công nhân, bây giờ tôi muốn lọc ra kí tự đầu tiên của họ+đệm+tên luôn. Ví dụ có người tên TẠ VĂN TÂM => thì cho ra TVT00.
2 số 00 là áp dụng cho tất cả mọi người. nẾU ĐƯỢC LÀM BẰNG HÀM TỰ TẠO THÌ CÀNG TỐT. CẢM ƠN ANH EM RẤT NHIỀU. TÔI ĐÃ TÌM TRÊN GOOGLE CẢ NGÀY NHƯNG K LÀM ĐƯỢC
 

File đính kèm

Xin chào anh em. nhờ anh em giúp giùm tôi cái này với: t có danh sách khoảng 160 tên công nhân, bây giờ tôi muốn lọc ra kí tự đầu tiên của họ+đệm+tên luôn. Ví dụ có người tên TẠ VĂN TÂM => thì cho ra TVT00.
2 số 00 là áp dụng cho tất cả mọi người. nẾU ĐƯỢC LÀM BẰNG HÀM TỰ TẠO THÌ CÀNG TỐT. CẢM ƠN ANH EM RẤT NHIỀU. TÔI ĐÃ TÌM TRÊN GOOGLE CẢ NGÀY NHƯNG K LÀM ĐƯỢC
Tên công nhân nào cũng chỉ có 3 "tiếng" sao?
Huỳnh Thi Minh Nguyệt thì sao?
Trần Văn Sông Cửu Long ?
Mã NV có người 5 ký tự, có người 6, có người 7 ....?
Tạ Văn Tâm thì TVT00.
Trần Văn Thanh thì TVT.... cái gì?
Đỗ Thành Đậu thì DTD00 hay ĐTĐ00
Ví dụ cũng phải rõ ràng đầy đủ các tình huống chứ.
 
Lần chỉnh sửa cuối:
[thongbao]
Huỳnh Thi Minh Nguyệt thì => HMN00
Trần Văn Sông Cửu Long => TCL00
Mã NV có người 5 ký tự, có người 6, có người 7 ....?
Tạ Văn Tâm thì TVT00.
Trần Văn Thanh thì sẽ là: TVT01
Đỗ Thành Đậu thì hay hơn là FTF00
Độu Thành Duy => FTD00
Khi đó Đỗ Duy sẽ là FJD00
[/thongbao]

Mới làm macro thôi, đang trong quá trình làm Function
Bạn xem cột [C] ở trang 'S2'
 

File đính kèm

Lần chỉnh sửa cuối:
em quên
Bắt buộc phải có 2 số 00 ở cuối các chữ cái được lọc ra. đối với người mà tên có tới > 3 chữ thì mình cũng chỉ lọc ra 3 chữ thôi.
Ví dụ: NGUYỄN THỊ MINH NGHUYỆT => NTN00 hoặc NMN00 Miễn sao nó là 3 chữ cái kết hợp với 2 số 00 là được. Đối với những ai trung tên thì mình tự chỉnh bằng tay.
 
em quên
Bắt buộc phải có 2 số 00 ở cuối các chữ cái được lọc ra. đối với người mà tên có tới > 3 chữ thì mình cũng chỉ lọc ra 3 chữ thôi.
Ví dụ: NGUYỄN THỊ MINH NGHUYỆT => NTN00 hoặc NMN00 Miễn sao nó là 3 chữ cái kết hợp với 2 số 00 là được. Đối với những ai trung tên thì mình tự chỉnh bằng tay.
Còn mấy trường hợp kia sao bạn không nói rõ luôn?
- Họ tên 2 chữ
- Chữ đầu là ký tự tiếng Việt (ví dụ Đào Văn Ân)
 
- Ví dụ Đào Văn Ân => DVA00 hay FVA00
- hay Đào Ân thì cũng cho ra sao cho 3 chữ cái kết hợp 2 số 00=> DHA00 hay FHA00 hay đại loại gì đó sao cho có đủ số lượng là 3 chữ cái kết hợp với 2 số 00. Nếu có 2 người trùng nhau thì tôi tự chỉnh hay các anh có cách nào mách cho em luôn. xin cảm ơn
 
Untitled.jpg

Chuyên gia cái chuyện này là thành viên có nick nằm cuối phía bên phải, màu xanh đậm.
Dzọt .... HiHi
--------
Xin lỗi vì tốn công Mod.
 
Lần chỉnh sửa cuối:
- Ví dụ Đào Văn Ân => DVA00 hay FVA00
- hay Đào Ân thì cũng cho ra sao cho 3 chữ cái kết hợp 2 số 00=> DHA00 hay FHA00 hay đại loại gì đó sao cho có đủ số lượng là 3 chữ cái kết hợp với 2 số 00. Nếu có 2 người trùng nhau thì tôi tự chỉnh hay các anh có cách nào mách cho em luôn. xin cảm ơn

Bảng chữ cái nước ta vừa có D lại có cả Đ, nhưng thường họ tên người Việt ít có các từ F, J, W & Z
Vậy nên ta đưa ra qui tắc rằng thì là mà

Đ -> F; Như vậy Đỗ Phương sẽ nên là FJP00 (J thay cho khoảng trắng trong họ tên có chỉ 2 từ)
Trường hợp Nguyễn Thị Hồng Hoa ta nên là NHH, ta nên tránh trong mã T & V vì nước ta rất nhiều nữ có lót 'Thị' & Rất nhiều nam lót chữ 'Văn'
Như vậy NHH00 sẽ ít trùng mã hơn là NTH00

Hơn nữa, trong tên họ tiếng Việt, các từ thường được dùng là 'T', 'N', 'D', 'H',. . .

Như [T] ta có họ 'Trần', 'Tống', 'Thái', 'Từ', 'Tôn',. . .

Tên thì 'Thành', Thắng', 'Toàn', 'Toản', 'Tuân', 'Thuận', 'Thảo', 'Trí', 'Tuấn', 'Thái', 'Thi', 'Thà', 'Tú', 'Thanh', 'Thạnh', 'Trường'. . . .
 
View attachment 127500

Chuyên gia cái chuyện này là thành viên có nick nằm cuối phía bên phải, màu xanh đậm.
Dzọt .... HiHi
--------
Xin lỗi vì tốn công Mod.
Vụ gì đây? Sao gài hàng vậy ta?
Trong lúc chờ đợi, xài tạm hàm này nha. Còn lu xu bu lắm nhưng lười quá
Cú pháp: MASO(A2)
PHP:
Function MASO(ByVal cell As String)
Dim str, tam, kq
tam = Split(cell, " ")
If UBound(tam) = 1 Then
   kq = Left(tam(0), 1) & Left(tam(0), 1) & Left(tam(1), 1)
ElseIf UBound(tam) = 2 Then
   kq = Left(tam(0), 1) & Left(tam(1), 1) & Left(tam(2), 1)
Else
   kq = Left(tam(0), 1) & Left(tam(2), 1) & Left(tam(UBound(tam)), 1)
End If
MASO = kq & "00"
End Function
 
Lần chỉnh sửa cuối:
mình gửi file trả lời mà sao k thấy hiện lên ta
 
Mã:
[COLOR=#008000]' hàm lấy 3 ký tự đầu tiên của chuỗi họ tên và cộng thêm "00"
[/COLOR]Function MSo(ByVal s As String) As String
Const MCMAX = 3[COLOR=#008000] ' muốn dổi số ký tự lấy ra thì đổi ở đây[/COLOR]
Const MLTOT = MCMAX + 2[COLOR=#008000] ' muốn đổi độ dài mã thì đổi ở đây[/COLOR]
Dim ss As Variant, i As Integer
MSo = String(MLTOT, "0")
i = 0
For Each ss In Split(Application.Trim(s), " ")
    If i < MCMAX Then i = i + 1
    Mid(MSo, i, 1) = ss
Next ss
[COLOR=#008000]' muốn đổi ký tự tiếng Việt thành ký tự tiếng Anh thì đổi ở đây[/COLOR]
End Function

MSo("abc def ghi") = "adg00"
MSo("abc def ") = "ad000"
MSo("abc ") = "a0000
MSo("abc def ghi jkl") = "adj00" : nếu muốn ra "agj00" thì phải thêm code đẩy (shift) chuỗi ở chỗ If i < MCMAX...

Thực ta, nếu làm đúng đắn thì người ta chỉ cho hàm lấy ra 3 ký tự thôi. Lúc sử dụng thì gán thêm "00" cho nó
 
Web KT

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

Back
Top Bottom