Đếm ký tự và cho hiện lại theo ý mình

  • Thread starter langbat
  • Ngày gửi
L

langbat

Guest
26/8/06
2
0
0
HA NOI
Mình có một câu hỏi thế này. Nếu mình có một chuỗi ký tự:
"pham hong anh" sau đó mình viết lại là "anhph". vậy có cách nào làm không ?
Xin thứ lỗi nếu câu hỏi này làm mọi người cười.
 
Khóa học Quản trị dòng tiền
Đào Việt Cường

Đào Việt Cường

Moderator
22/11/05
400
4
18
Khánh Hòa
Dear langbat,
-------------
Trước mình chưa biết gì về VBA mình cứ tẩn mần tần mần việc này bằng hàm FIND(" ";<within_text>) kết hợp với LEFT(), RIGHT() để phát sinh ra một mã giống như của bạn. Cách này thì giúp máy chạy nhanh hơn vì sử dụng các hàm có sẵn nhưng không tiện dùng và khó nhớ.
Langbat đưa bài viết này vào chuyên mục Excel và VBA chắc có ý muốn sử dụng VBA để giải quyết việc này?! Mình chỉ gợi ý mã chương trình theo ngôn ngữ ... Việt Nam thôi, còn mã VB bạn tự viết thử xem nhé:
Function AutoCode(strFullName as String) As String
'Kiểm tra kiểu dữ liệu strFullName phải là kiểu chuỗi
'Cắt ký tự trắng từ 2 đầu của strFullName
'Thay thế các ký tự trắng liền nhau bởi một ký tự trắng (có thể bỏ qua nếu bạn chắc chắn không có lỗi chính tả về ký tự trắng liên tục trong strFullName - Một ký tự trắng được hiểu là Space(1)= True)
'Nếu strFullName là một chuỗi không có khoảng trắng thì hàm trả về strFullName và kết thúc chương trình
'Khai báo biến strCode As String để lưu trữ tạm thời kết quả
'Gán strCode = chuỗi sau ký tự trắng cuối cùng trong strFullName (sử dụng hàm InStrRev)
'Khai báo biến đếm i As Long để tạo vòng lặp duyệt qua từng ký tự trong strFullName
'Khai báo biến lngLenCount As Long
'Gán lngLenCount = Len(strFullName) - Len(strCode) - 1
'Thực hiện vòng lặp duyệt qua từng ký tự trong strFullName với số lần lặp là lngLenCount:
For i = to lngLenCount
'Nếu ký tự thứ i là ký tự trắng thì
'Gán strCode = strCode & Mid(strFullName,i+1)
'Kết thúc IF
Next
'Gán strFullName = strCode
End Function
Bạn lưu ý chỉ nên giữ lại hàm AutoCode tại Ô đầu tiên trong cột hoặc đưa vào comment, các ô còn lại thì PasteSpacial Value - khi cần thì Copy Formula trở lại. Làm điều này là để MSE giảm tính toán không cần thiết trong Workbook của bạn.
Chúc bạn thành công!:friend:
 
Sửa lần cuối:
S

Song Huong

Cao cấp
langbat nói:
Mình có một câu hỏi thế này. Nếu mình có một chuỗi ký tự:
"pham hong anh" sau đó mình viết lại là "anhph". vậy có cách nào làm không ?
Xin thứ lỗi nếu câu hỏi này làm mọi người cười.
Chào bạn
Đây là Function tách chuỗi theo yêu cầu của bạn.

Function UserID(FullName)
Dim FirstName, LastName, l, i 'Khai bao cac bien
FullName = RTrim(Trim(FullName)) 'Cat bo khoang trong thua
l = Len(FullName) 'Xac dinh do dai cua chuoi FullName
If l < 2 Then
FirstName = ""
Else ' Tim khoang trong dau tien ke tu ben phai chuoi de tach ten
For i = 1 To l - 1
If Mid(FullName, (l - i), 1) = " " And Len(FullName) - i < 25 Then
FirstName = Right(FullName, i)
Exit For
Else
FirstName = "Khong co khoang trong giua Ho va Ten."
End If
Next i

l = l - i
LastName = Left(FullName, 1)

'Lay ho va chu lot
For i = 1 To l - 1
If Mid(FullName, i, 1) = " " Then 'And Len(FullName) - i < 25 Then
LastName = LastName + Mid(FullName, i + 1, 1)
End If
Next i

End If
UserID = FirstName + LastName
End Function

Thân mến.
PS: Gửi bạn file UserID.XLA
 
Sửa lần cuối:
L

langbat

Guest
26/8/06
2
0
0
HA NOI
Thank you

Cảm ơn bạn rất nhiều. Mã này giúp đỡ mình rất nhiều
 

Xem nhiều

Webketoan Zalo OA