PDA

View Full Version : Chuyển đổi qua lại giữa chữ thường và chữ HOA



Thanhhuonghuong
20-04-08, 11:23 PM
Xin vui lòng cho hỏi trong excel muốn chuyễn đổi qua lại giửa chữ hoa và chử thường phải làm như thế nào? Trong word khi dùng bảng mã Unicode vì sao khi chuyển đổi qua lại giữa chữ hoa và chử thường nó không chuẩn ví dụ :
MộT NGÀY SốNG BÊN NHAU. chữ ô đã biết thành nhỏ xíu như vậy. cách khắc phục như thế nào? mong được chỉ giúp. thành thật cám ơn

boyxin
21-04-08, 07:10 AM
Xin vui lòng cho hỏi trong excel muốn chuyễn đổi qua lại giửa chữ hoa và chử thường phải làm như thế nào? Trong word khi dùng bảng mã Unicode vì sao khi chuyển đổi qua lại giữa chữ hoa và chử thường nó không chuẩn ví dụ :
MộT NGÀY SốNG BÊN NHAU. chữ ô đã biết thành nhỏ xíu như vậy. cách khắc phục như thế nào? mong được chỉ giúp. thành thật cám ơn
Bạn dùng cái này

CHUYỂN TẤT CẢ THÀNH CHỮ HOA: UpperUni


Function UpperUni(chuoi As String) As String
UpperUni = Application.WorksheetFunction.Trim(UCase(chuoi))
End Function

Chuyển Chữ Hoa Đầu Từ: ProperUni


Function ProperUni(chuoi As String) As String
chuoi = " " & Application.WorksheetFunction.Trim(LCase(chuoi))
stt = Len(chuoi)
If stt > 1 Then
Do
stt = InStrRev(chuoi, " ", stt)
Mid(chuoi, stt + 1, 1) = UCase(Mid(chuoi, stt + 1, 1))
stt = stt - 1
Loop While stt > 0
ProperUni = Mid(chuoi, 2)
End If
End Function


chuyển tất cả thành chữ thường: LowerUni


Function LowerUni(chuoi As String) As String
LowerUni = Application.WorksheetFunction.Trim(LCase(chuoi))
End Function

cadafi
25-04-08, 02:43 PM
Xin vui lòng cho hỏi trong excel muốn chuyễn đổi qua lại giửa chữ hoa và chử thường phải làm như thế nào? Trong word khi dùng bảng mã Unicode vì sao khi chuyển đổi qua lại giữa chữ hoa và chử thường nó không chuẩn ví dụ :
MộT NGÀY SốNG BÊN NHAU. chữ ô đã biết thành nhỏ xíu như vậy. cách khắc phục như thế nào? mong được chỉ giúp. thành thật cám ơn

Bạn mở một file excel mới, vào VBA chép tất cả đoạn code của bạn Boyxin vào trong module rồi save as dưới dạng *.xla thế là bạn có thêm ba hàm mới rồi đó. Hàm này chuyển đổi không bị lỗi chữ to chữ nhỏ như UPPER(Text).

Thanks bạn Boyxin.

thaibinh_excel
10-02-09, 08:19 PM
Bạn dùng cái này

CHUYỂN TẤT CẢ THÀNH CHỮ HOA: UpperUni


Function UpperUni(chuoi As String) As String
UpperUni = Application.WorksheetFunction.Trim(UCase(chuoi))
End Function
Chuyển Chữ Hoa Đầu Từ: ProperUni


Function ProperUni(chuoi As String) As String
chuoi = " " & Application.WorksheetFunction.Trim(LCase(chuoi))
stt = Len(chuoi)
If stt > 1 Then
Do
stt = InStrRev(chuoi, " ", stt)
Mid(chuoi, stt + 1, 1) = UCase(Mid(chuoi, stt + 1, 1))
stt = stt - 1
Loop While stt > 0
ProperUni = Mid(chuoi, 2)
End If
End Function
chuyển tất cả thành chữ thường: LowerUni


Function LowerUni(chuoi As String) As String
LowerUni = Application.WorksheetFunction.Trim(LCase(chuoi))
End Function



Dear các bác,

Mình chép function UpperUni và ProperUni vào VBA, sau đó dùng nó cho đoạn code sau :
ThisWorkbook.Sheets("Customer Database").Range("E" & i).Value = ProperUni(TextBox4.Text) 'surname
ThisWorkbook.Sheets("Customer Database").Range("F" & i).Value = ProperUni(TextBox5.Text) 'first name
ThisWorkbook.Sheets("Customer Database").Range("G" & i).Value = TextBox6.Text 'birth day
ThisWorkbook.Sheets("Customer Database").Range("H" & i).Value = TextBox7.Text 'birth month
ThisWorkbook.Sheets("Customer Database").Range("I" & i).Value = TextBox8.Text 'birth year
ThisWorkbook.Sheets("Customer Database").Range("J" & i).Value = ProperUni(TextBox9.Text) 'sex
ThisWorkbook.Sheets("Customer Database").Range("K" & i).Value = TextBox10.Text 'ID card
ThisWorkbook.Sheets("Customer Database").Range("L" & i).Value = ProperUni(TextBox11.Text) 'occupation
ThisWorkbook.Sheets("Customer Database").Range("M" & i).Value = TextBox12.Text 'handphone
ThisWorkbook.Sheets("Customer Database").Range("N" & i).Value = TextBox13.Text 'email
ThisWorkbook.Sheets("Customer Database").Range("O" & i).Value = TextBox14.Text 'address no
ThisWorkbook.Sheets("Customer Database").Range("P" & i).Value = ProperUni(TextBox15.Text) 'street
ThisWorkbook.Sheets("Customer Database").Range("Q" & i).Value = ProperUni(TextBox16.Text) 'ward
ThisWorkbook.Sheets("Customer Database").Range("R" & i).Value = ProperUni(TextBox17.Text) 'district
ThisWorkbook.Sheets("Customer Database").Range("S" & i).Value = TextBox18.Text 'city

Kết quả là nó chuyển đổi rất tốt, nhưng mình gặp 1 vấn đề là code lại chạy chậm đi một chút so với code lúc chưa dùng hai Function trên, nhờ các bác chỉ giúp cách nào để dùng function này vào code mà code có thể chạy nhanh hơn được không ạ ?

Cám ơn các bác rất nhiều !

Po_Pikachu
10-02-09, 08:31 PM
Mình thấy khỏi cần cái ProperUni chi cho mệt. Nếu Excel có rồi mà ta dùng UDF để thay thế 1 cái y chang thì sẽ tốn tài nguyên lắm.

With WorksheetFunction
With Sheets("Customer Database")
.Range("E" & i).Value = TRIM(.Proper(TextBox4.Text)) 'surname
.Range("F" & i).Value = TRIM(.Proper(TextBox5.Text)) 'first name
.Range("G" & i).Value = TextBox6.Text 'birth day
.Range("H" & i).Value = TextBox7.Text 'birth month
.Range("I" & i).Value = TextBox8.Text 'birth year
.Range("J" & i).Value = TRIM(.Proper(TextBox9.Text)) 'sex
.Range("K" & i).Value = TextBox10.Text 'ID card
.Range("L" & i).Value = TRIM(.Proper(TextBox11.Text)) 'occupation
.Range("M" & i).Value = TextBox12.Text 'handphone
.Range("N" & i).Value = TextBox13.Text 'email
.Range("O" & i).Value = TextBox14.Text 'address no
.Range("P" & i).Value = TRIM(.Proper(TextBox15.Text)) 'street
.Range("Q" & i).Value = TRIM(.Proper(TextBox16.Text)) 'ward
.Range("R" & i).Value = TRIM(.Proper(TextBox17.Text)) 'district
.Range("S" & i).Value = TextBox18.Text 'city
End With
End With
Thân.

knga
21-10-09, 10:21 PM
Cho mình hỏi chuối 1 chút vì mình không hề biết gì về add-in hay VBA, nhưng muốn đổi được chữ cái đầu mỗi từ sang chữ in.Mình đang rất cần mà không đủ thời gian để tìm hiểu, mong các bạn "cầm tay chỉ việc" giúp mình với, cảm ơn các bạn nhiều!

phuong1604
22-10-09, 09:43 AM
Bạn dùng hàm Proper() nhé !

|A|B
1|nguyễn văn a|Nguyễn Văn A
2| |B1=proper(A1)

ndu96081631
22-10-09, 09:48 AM
Bạn dùng hàm Proper() nhé !

|A|B
1|nguyễn văn a|Nguyễn Văn A
2| |B1=proper(A1)
Bạn thử với tên lê văn ẩn xem có ra kết quả chính xác không nha

phuong1604
22-10-09, 09:57 AM
Bạn thử với tên lê văn ẩn xem có ra kết quả chính xác không nha

Những TH như vậy có xài công thức được không hả anh Ndu ?

ndu96081631
22-10-09, 10:15 AM
Những TH như vậy có xài công thức được không hả anh Ndu ?
Nói chung là hàm PROPER sẽ không chính xác đối với tiếng Việt Unicode ---> Chính vì thế mà các cao thủ mới đề xuất phương pháp dùng hàm tự tạo

laianhtu
22-10-09, 12:02 PM
Nếu anh ndu96081631 (http://www.giaiphapexcel.com/forum/member.php?u=61139) dùng tên "Lê Văn Ẩn" chuyển thành chữ Hoa hết mà dùng chức năng chuyển mã của Unikey thì sẽ chuyển được và đơn giản. Nhưng tiếc rằng Unikey ko có chức năng chuyển ký tự thường thành chữ hoa của ký tự đầu.

______-
Nguyên văn bởi ndu96081631 http://www.giaiphapexcel.com/forum/images/buttons/viewpost.gif (http://www.giaiphapexcel.com/forum/showthread.php?p=196780#post196780)
Bạn thử với tên lê văn ẩn xem có ra kết quả chính xác không nha
_________

Thanks.
Anh Tú.
"Love is beautiful when it's unconclusive".

cadafi
22-10-09, 05:17 PM
Nếu anh ndu96081631 (http://www.giaiphapexcel.com/forum/member.php?u=61139) dùng tên "Lê Văn Ẩn" chuyển thành chữ Hoa hết mà dùng chức năng chuyển mã của Unikey thì sẽ chuyển được và đơn giản. Nhưng tiếc rằng Unikey ko có chức năng chuyển ký tự thường thành chữ hoa của ký tự đầu.


Anh thử link này xem sao nha
Chuyển đổi chữ HOA - chữ thường (giống Shift+F3 trong Word) (http://www.giaiphapexcel.com/forum/showpost.php?p=84371&postcount=1)

tranthily
21-03-12, 09:16 AM
xin cho hỏi cách lập 1 danh sánh học tên có chữ in hoa đầu từ thì làm thế nào nếu dùng hàm proper thì chỉ chuyển được một từ thôi ạ các bác giúp e với-+*/

dinhtiendanh
19-11-14, 03:32 PM
Chào bạn! nếu mình muốn khi bấm vào 1 ô, bấm enter thì chữ đó tự chuyển thành hoa, thì mình làm sao
Ví dụ: đan trường---> Đan Trường.
nhưng vẫn ở trong cùng 1 ô.

ndu96081631
19-11-14, 04:57 PM
Chào bạn! nếu mình muốn khi bấm vào 1 ô, bấm enter thì chữ đó tự chuyển thành hoa, thì mình làm sao
Ví dụ: đan trường---> Đan Trường.
nhưng vẫn ở trong cùng 1 ô.

Hết phím chọn rồi sao lại chọn phím Enter hả trời?

Hoàng Trọng Nghĩa
19-11-14, 05:03 PM
Hết phím chọn rồi sao lại chọn phím Enter hả trời?
Đúng là nhiều người có tư duy chỉ vì một con kiến mà hủy đi cả một con voi!

Ngay cả khi dùng phím tắt, bác Bill nhà ta cũng phải dùng tổ hợp phím Ctrl *

quanghai1969
19-11-14, 06:04 PM
Chào bạn! nếu mình muốn khi bấm vào 1 ô, bấm enter thì chữ đó tự chuyển thành hoa, thì mình làm sao
Ví dụ: đan trường---> Đan Trường.
nhưng vẫn ở trong cùng 1 ô.
Copy cái này bỏ vào sheet là được


Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Count = 1 Then
If Target.Value <> "" Then
Target.Value = Application.Proper(Target)
End If
End If
Application.EnableEvents = True
End Sub