Bạn sử dụng hàm tự tạo sau nhé:Mình có một cột họ tên nhân viên giờ mình chỉ muốn lấy ký tự đầu tiên để làm tắt.
Ví Dụ: Nguyễn Văn Hòa chỉ lấy : NVH
Phạm Thị Thu Hương chỉ lấy : PTTH
Các bạn giúp mình với
Function VT(Ten As String) As String
Dim i As Long, A
A = Split(Ten, " ")
For i = 0 To UBound(A)
VT = VT & Left(A(i), 1)
Next i
End Function
Nếu muốn gọn thì vụ này chắc phải dùng VBA rồi. Trong lúc chờ đợi các cao thủ VBA giúp, bạn có thể làm thủ công bằng cách dùng cột phụ:Mình có một cột họ tên nhân viên giờ mình chỉ muốn lấy ký tự đầu tiên để làm tắt.
Ví Dụ: Nguyễn Văn Hòa chỉ lấy : NVH
Phạm Thị Thu Hương chỉ lấy : PTTH
Các bạn giúp mình với
Code này ngon khôngBạn sử dụng hàm tự tạo sau nhé:
PHP:Function VT(Ten As String) As String Dim i As Long, A A = Split(Ten, " ") For i = 0 To UBound(A) VT = VT & Left(A(i), 1) Next i End Function
Function TenTat(Text As String) As String
With WorksheetFunction
Text = "{""" & Replace(.Trim(Text), " ", """;""") & """}"
TenTat = Join(Evaluate("Transpose(LEFT(" & Text & ",1))"), "")
End With
End Function
Tmp=IF(MID('Ban can lam'!$A5;ROW(INDIRECT("1:"&LEN('Ban can lam'!$A5)));1)=" ";ROW(INDIRECT("1:"&LEN('Ban can lam'!$A5)));"")
DK=SMALL(Tmp;ROW(INDIRECT("1:"&COUNT(Tmp))))
Code này ngon không
Không vòng lập đâu nhéPHP:Function TenTat(Text As String) As String With WorksheetFunction Text = "{""" & Replace(.Trim(Text), " ", """;""") & """}" TenTat = Join(Evaluate("Transpose(LEFT(" & Text & ",1))"), "") End With End Function
Thưa thầy, code này em có thể mở rộng yêu cầu đánh code học sinh theo quy tắc như:
- Nguyễn Văn A = A.NV
- Trần Trương Thị Hồng Tuyền = Tuyen.TTTH
- Nguyễn Thị Bình =Binh.NT
(p/s: cấu trúc mã học sinh là "tên không dấu"."viết tắt chữ hoa họ, tên lót, tên đệm.."
Cảm ơn thầy.
Trân trọng.
Public Function KhongDau(s As String) As String
Dim i, oldCh$, newCh$
For i = 1 To Len(s)
oldCh = AscW(Mid(s, i, 1))
Select Case oldCh
Case 192, 193, 7840, 7842, 195, 258, 7856, 7854, 7862, 7858, 7860, 194, 7846, 7844, 7852, 7848, 7850: newCh = "A"
Case 224, 225, 7841, 7843, 227, 259, 7857, 7855, 7863, 7859, 7861, 226, 7847, 7845, 7853, 7849, 7851: newCh = "a"
Case 272: newCh = "D"
Case 273: newCh = "d"
Case 232, 233, 7865, 7867, 7869, 234, 7873, 7871, 7879, 7875, 7877: newCh = "e"
Case 200, 201, 7864, 7866, 7868, 202, 7872, 7870, 7878, 7874, 7876: newCh = "E"
Case 236, 237, 7883, 7881, 297: newCh = "i"
Case 204, 205, 7882, 7880, 296: newCh = "I"
Case 242, 243, 7885, 7887, 245, 417, 7901, 7899, 7907, 7903, 7905, 244, 7891, 7889, 7897, 7893, 7895: newCh = "o"
Case 210, 211, 7884, 7886, 213, 416, 7900, 7898, 7906, 7902, 7904, 212, 7890, 7888, 7896, 7892, 7894: newCh = "O"
Case 249, 250, 7909, 7911, 361, 432, 7915, 7913, 7921, 7917, 7919: newCh = "u"
Case 217, 218, 7908, 7910, 360, 431, 7914, 7912, 7920, 7916, 7918: newCh = "U"
Case 7923, 253, 7925, 7927, 7929: newCh = "y"
Case 7922, 221, 7924, 7926, 7928: newCh = "Y"
Case Else: newCh = ChrW(oldCh)
End Select
KhongDau = KhongDau & newCh
Next
End Function
Function VT(ten As String) As String
Dim tenkd As String
Dim i As Long, A
A = Split(ten, " ")
For i = 0 To UBound(A) - 1
VT = VT & UCase(Left(A(i), 1))
Next
tenkd = A(UBound(A))
VT = KhongDau(tenkd) & "." & VT
End Function
Câu này có lẽ là:VT = KhongDau(tenkd) & "." & VT
2 cái này cùng cho ra kết quá giống nhau mà b, cái của b hàm Khongdau sẽ phải chạy thêm vòng lặp cho "." & VTCâu này có lẽ là:
VT = KhongDau(tenkd & "." & VT)
Bạn thử với Ưng Hoàng Phúc, hoặc Đỗ Đạt xem sao?2 cái này cùng cho ra kết quá giống nhau mà b, cái của b hàm Khongdau sẽ phải chạy thêm vòng lặp cho "." & VT
cảm ơn b. Mình không nghĩ tới kí tự đầu cũng cần bỏ dấu. HjBạn thử với Ưng Hoàng Phúc, hoặc Đỗ Đạt xem sao?
Option Explicit
Public Function KhongDau(s As String) As String
Dim i, oldCh$, newCh$
For i = 1 To Len(s)
oldCh = AscW(Mid(s, i, 1))
Select Case oldCh
Case 192, 193, 7840, 7842, 195, 258, 7856, 7854, 7862, 7858, 7860, 194, 7846, 7844, 7852, 7848, 7850: newCh = "A"
Case 224, 225, 7841, 7843, 227, 259, 7857, 7855, 7863, 7859, 7861, 226, 7847, 7845, 7853, 7849, 7851: newCh = "a"
Case 272: newCh = "D"
Case 273: newCh = "d"
Case 232, 233, 7865, 7867, 7869, 234, 7873, 7871, 7879, 7875, 7877: newCh = "e"
Case 200, 201, 7864, 7866, 7868, 202, 7872, 7870, 7878, 7874, 7876: newCh = "E"
Case 236, 237, 7883, 7881, 297: newCh = "i"
Case 204, 205, 7882, 7880, 296: newCh = "I"
Case 242, 243, 7885, 7887, 245, 417, 7901, 7899, 7907, 7903, 7905, 244, 7891, 7889, 7897, 7893, 7895: newCh = "o"
Case 210, 211, 7884, 7886, 213, 416, 7900, 7898, 7906, 7902, 7904, 212, 7890, 7888, 7896, 7892, 7894: newCh = "O"
Case 249, 250, 7909, 7911, 361, 432, 7915, 7913, 7921, 7917, 7919: newCh = "u"
Case 217, 218, 7908, 7910, 360, 431, 7914, 7912, 7920, 7916, 7918: newCh = "U"
Case 7923, 253, 7925, 7927, 7929: newCh = "y"
Case 7922, 221, 7924, 7926, 7928: newCh = "Y"
Case Else: newCh = ChrW(oldCh)
End Select
KhongDau = KhongDau & newCh
Next
End Function
Function VT(ten As String) As String
Dim tenkd As String
Dim i As Long, A
A = Split(ten, " ")
For i = 0 To UBound(A) - 1
VT = VT & UCase(Left(A(i), 1))
Next
tenkd = A(UBound(A))
VT = KhongDau(tenkd) & "." & VT
End Function