Function UpperUni(uni) As String
UpperUni = UCase(uni)
End Function
Function ProperUni(uni As String) As String
Dim vt As Long
If Trim(uni) = "" Then
ProperUni = uni
Else
uni = LCase(uni)
Mid(uni, 1, 1) = UCase(Mid(uni, 1, 1))
Do
vt = InStr(vt + 1, uni, " ")
If vt = 0 Then Exit Do
Mid(uni, vt + 1, 1) = UCase(Mid(uni, vt + 1, 1))
Loop
ProperUni = uni
End If
End Function
ttphong2007 đã viết:Trong môi trường Windows thì Microsoft khuyến cáo là sử dụng "Unicode tổ hợp" do vậy các hàm chuyển chữ Upper, Lower,... sẽ không bị lỗi nữa.
TP.
Tôi sẽ tập hợp các hàm liên quan đến tiếng Việt gởi các bạn.levanduyet đã viết:To: Phamduylong,
Nhân đây tôi muốn hỏi, hình như Anh đã có post bài về hàm chuyển đổi trong Excel thì phải?
Dùng Unicode ổn thế nào vậy bạn?Vấn đề này quá cũ rồi, bây giờ cứ Unicode dùng là ổn hết
Dùng Unicode ổn thế nào vậy bạn?
Theo bạn thì trong Excel, khi dùng unicode, ta chuyển chữ hoa sang thường (hoặc ngược lại) bằng hàm nào?
Điều này đương nhiên mà thầy, kể cả LCase cũng dùng được luôn mà đâu cần phái biến đổi gì đâu chứChẳng hiểu sao tôi dùng đơn thuần hàm Ucase của VBA là chữ thường thành chữ in được hết (toàn bộ tiếng Việt như ư, ớ, ợ,...), không cần chế biến lằng nhằng hàm ChrW ở trên? Hay do Window nhỉ (đã test trên cả Excel 2003 và 2007)??
Function LowerToUpper(RangeConvert As Range) As String
Dim i As Integer, j As Integer, StrLen As Integer, StrRange As String
LowerCase = Array(ChrW(7843), ChrW(7841), ChrW(7867), ChrW(7869), ChrW(7865), _
ChrW(7881), ChrW(7883), ChrW(7887), ChrW(7885), ChrW(7911), ChrW(7909), _
ChrW(7923), ChrW(7927), ChrW(7929), ChrW(7925), ChrW(7847), ChrW(7849), _
ChrW(7851), ChrW(7845), ChrW(7853), ChrW(7857), ChrW(7859), ChrW(7861), _
ChrW(7855), ChrW(7863), ChrW(7873), ChrW(7875), ChrW(7877), ChrW(7871), _
ChrW(7879), ChrW(7891), ChrW(7893), ChrW(7895), ChrW(7889), ChrW(7897), _
ChrW(7901), ChrW(7903), ChrW(7905), ChrW(7899), ChrW(7907), ChrW(7915), _
ChrW(7917), ChrW(7919), ChrW(7913), ChrW(7921))
UpperCase = Array(ChrW(7842), ChrW(7840), ChrW(7866), ChrW(7868), ChrW(7864), _
ChrW(7880), ChrW(7882), ChrW(7886), ChrW(7884), ChrW(7910), ChrW(7908), _
ChrW(7922), ChrW(7926), ChrW(7928), ChrW(7924), ChrW(7846), ChrW(7848), _
ChrW(7850), ChrW(7844), ChrW(7852), ChrW(7856), ChrW(7858), ChrW(7860), _
ChrW(7854), ChrW(7862), ChrW(7872), ChrW(7874), ChrW(7876), ChrW(7870), _
ChrW(7878), ChrW(7890), ChrW(7892), ChrW(7894), ChrW(7888), ChrW(7896), _
ChrW(7900), ChrW(7902), ChrW(7904), ChrW(7898), ChrW(7906), ChrW(7914), _
ChrW(7916), ChrW(7918), ChrW(7912), ChrW(7920))
LowerToUpper = UCase(RangeConvert.Text)
StrLen = Len(LowerToUpper)
StrRange = LowerToUpper
For i = 1 To StrLen
For j = 0 To 44
If Mid(StrRange, i, 1) = LowerCase(j) Then
LowerToUpper = Left(LowerToUpper, i - 1) & UpperCase(j) & Right(LowerToUpper, StrLen - i)
Exit For
End If
Next j
Next i
End Function
Trong 3 hàm chuyển câu của Excel, khi sử dụng font UNICODE tiếng Việt chỉ có hàm LOWER (chữ thường) là đúng, còn hàm PROPER (chữ hoa đầu từ) và UPPER (chữ hoa) có một số nguyên âm sai.( ví dụ UPPER("Nguyễn Trãi") cho kết quả "NGUYễN TRảI", PROPER("ấn bản" cho kết quả "ấn Bản").
Để có thể chuyển sang chữ hoa đầu từ và chữ hoa, có thể sử dụng 2 hàm:
Hàm chuyển sang chữ hoa:
Hàm chuyển sang chữ hoa đầu từ:Mã:Function UpperUni(uni) As String UpperUni = UCase(uni) End Function
Trong tập tin UpperUni, các ô màu đỏ là các ô mà hàm UPPER và PROPER của Excel chuyển sai.Mã:Function ProperUni(uni As String) As String Dim vt As Long If Trim(uni) = "" Then ProperUni = uni Else uni = LCase(uni) Mid(uni, 1, 1) = UCase(Mid(uni, 1, 1)) Do vt = InStr(vt + 1, uni, " ") If vt = 0 Then Exit Do Mid(uni, vt + 1, 1) = UCase(Mid(uni, vt + 1, 1)) Loop ProperUni = uni End If End Function
Trong 3 hàm chuyển câu của Excel, khi sử dụng font UNICODE tiếng Việt chỉ có hàm LOWER (chữ thường) là đúng, còn hàm PROPER (chữ hoa đầu từ) và UPPER (chữ hoa) có một số nguyên âm sai.( ví dụ UPPER("Nguyễn Trãi") cho kết quả "NGUYễN TRảI", PROPER("ấn bản" cho kết quả "ấn Bản").
Để có thể chuyển sang chữ hoa đầu từ và chữ hoa, có thể sử dụng 2 hàm:
Hàm chuyển sang chữ hoa:
Hàm chuyển sang chữ hoa đầu từ:Mã:Function UpperUni(uni) As String UpperUni = UCase(uni) End Function
Trong tập tin UpperUni, các ô màu đỏ là các ô mà hàm UPPER và PROPER của Excel chuyển sai.Mã:Function ProperUni(uni As String) As String Dim vt As Long If Trim(uni) = "" Then ProperUni = uni Else uni = LCase(uni) Mid(uni, 1, 1) = UCase(Mid(uni, 1, 1)) Do vt = InStr(vt + 1, uni, " ") If vt = 0 Then Exit Do Mid(uni, vt + 1, 1) = UCase(Mid(uni, vt + 1, 1)) Loop ProperUni = uni End If End Function
Mình cũng đang bị lỗi với Upper kiểu: có một số chữ ko chuyển sang in hoa đc. Bác nào chỉ giùm em với. Tks nhiều.