Dùng hàm gì để bỏ dấu tiếng Việt trong ô dữ liệu ?

Liên hệ QC

Chuotdong

Thành viên thường trực
Tham gia
28/11/06
Bài viết
255
Được thích
60
Mình có thể dùng hàm gì để bỏ dấu tiếng Việt trong tất cả các ô dữ liệu có ?
Ví dụ ô A1 mình có từ tiếng Việt " CỘng hòa xã hội 456$@" muốn dùng hàm để xử lý thành "COng hoa xa hoi 456$@" ạ
 
Mình có thể dùng hàm gì để bỏ dấu tiếng Việt trong tất cả các ô dữ liệu có ?
Ví dụ ô A1 mình có từ tiếng Việt " CỘng hòa xã hội 456$@" muốn dùng hàm để xử lý thành "COng hoa xa hoi 456$@" ạ
Bạn dùng office gì ?
 
Mình có thể dùng hàm gì để bỏ dấu tiếng Việt trong tất cả các ô dữ liệu có ?
Ví dụ ô A1 mình có từ tiếng Việt " CỘng hòa xã hội 456$@" muốn dùng hàm để xử lý thành "COng hoa xa hoi 456$@" ạ
Mình hay dùng hàm UDF này:

Function Bo_Dau(Text As String) As String
Dim AsciiDict As Object
Set AsciiDict = CreateObject("scripting.dictionary")
AsciiDict(192) = "A"
AsciiDict(193) = "A"
AsciiDict(194) = "A"
AsciiDict(195) = "A"
AsciiDict(196) = "A"
AsciiDict(197) = "A"
AsciiDict(199) = "C"
AsciiDict(200) = "E"
AsciiDict(201) = "E"
AsciiDict(202) = "E"
AsciiDict(203) = "E"
AsciiDict(204) = "I"
AsciiDict(205) = "I"
AsciiDict(206) = "I"
AsciiDict(207) = "I"
AsciiDict(208) = "D"
AsciiDict(209) = "N"
AsciiDict(210) = "O"
AsciiDict(211) = "O"
AsciiDict(212) = "O"
AsciiDict(213) = "O"
AsciiDict(214) = "O"
AsciiDict(217) = "U"
AsciiDict(218) = "U"
AsciiDict(219) = "U"
AsciiDict(220) = "U"
AsciiDict(221) = "Y"
AsciiDict(224) = "a"
AsciiDict(225) = "a"
AsciiDict(226) = "a"
AsciiDict(227) = "a"
AsciiDict(228) = "a"
AsciiDict(229) = "a"
AsciiDict(231) = "c"
AsciiDict(232) = "e"
AsciiDict(233) = "e"
AsciiDict(234) = "e"
AsciiDict(235) = "e"
AsciiDict(236) = "i"
AsciiDict(237) = "i"
AsciiDict(238) = "i"
AsciiDict(239) = "i"
AsciiDict(240) = "d"
AsciiDict(241) = "n"
AsciiDict(242) = "o"
AsciiDict(243) = "o"
AsciiDict(244) = "o"
AsciiDict(245) = "o"
AsciiDict(246) = "o"
AsciiDict(249) = "u"
AsciiDict(250) = "u"
AsciiDict(251) = "u"
AsciiDict(252) = "u"
AsciiDict(253) = "y"
AsciiDict(255) = "y"
AsciiDict(352) = "S"
AsciiDict(353) = "s"
AsciiDict(376) = "Y"
AsciiDict(381) = "Z"
AsciiDict(382) = "z"
AsciiDict(258) = "A"
AsciiDict(259) = "a"
AsciiDict(272) = "D"
AsciiDict(273) = "d"
AsciiDict(296) = "I"
AsciiDict(297) = "i"
AsciiDict(360) = "U"
AsciiDict(361) = "u"
AsciiDict(416) = "O"
AsciiDict(417) = "o"
AsciiDict(431) = "U"
AsciiDict(432) = "u"
AsciiDict(7840) = "A"
AsciiDict(7841) = "a"
AsciiDict(7842) = "A"
AsciiDict(7843) = "a"
AsciiDict(7844) = "A"
AsciiDict(7845) = "a"
AsciiDict(7846) = "A"
AsciiDict(7847) = "a"
AsciiDict(7848) = "A"
AsciiDict(7849) = "a"
AsciiDict(7850) = "A"
AsciiDict(7851) = "a"
AsciiDict(7852) = "A"
AsciiDict(7853) = "a"
AsciiDict(7854) = "A"
AsciiDict(7855) = "a"
AsciiDict(7856) = "A"
AsciiDict(7857) = "a"
AsciiDict(7858) = "A"
AsciiDict(7859) = "a"
AsciiDict(7860) = "A"
AsciiDict(7861) = "a"
AsciiDict(7862) = "A"
AsciiDict(7863) = "a"
AsciiDict(7864) = "E"
AsciiDict(7865) = "e"
AsciiDict(7866) = "E"
AsciiDict(7867) = "e"
AsciiDict(7868) = "E"
AsciiDict(7869) = "e"
AsciiDict(7870) = "E"
AsciiDict(7871) = "e"
AsciiDict(7872) = "E"
AsciiDict(7873) = "e"
AsciiDict(7874) = "E"
AsciiDict(7875) = "e"
AsciiDict(7876) = "E"
AsciiDict(7877) = "e"
AsciiDict(7878) = "E"
AsciiDict(7879) = "e"
AsciiDict(7880) = "I"
AsciiDict(7881) = "i"
AsciiDict(7882) = "I"
AsciiDict(7883) = "i"
AsciiDict(7884) = "O"
AsciiDict(7885) = "o"
AsciiDict(7886) = "O"
AsciiDict(7887) = "o"
AsciiDict(7888) = "O"
AsciiDict(7889) = "o"
AsciiDict(7890) = "O"
AsciiDict(7891) = "o"
AsciiDict(7892) = "O"
AsciiDict(7893) = "o"
AsciiDict(7894) = "O"
AsciiDict(7895) = "o"
AsciiDict(7896) = "O"
AsciiDict(7897) = "o"
AsciiDict(7898) = "O"
AsciiDict(7899) = "o"
AsciiDict(7900) = "O"
AsciiDict(7901) = "o"
AsciiDict(7902) = "O"
AsciiDict(7903) = "o"
AsciiDict(7904) = "O"
AsciiDict(7905) = "o"
AsciiDict(7906) = "O"
AsciiDict(7907) = "o"
AsciiDict(7908) = "U"
AsciiDict(7909) = "u"
AsciiDict(7910) = "U"
AsciiDict(7911) = "u"
AsciiDict(7912) = "U"
AsciiDict(7913) = "u"
AsciiDict(7914) = "U"
AsciiDict(7915) = "u"
AsciiDict(7916) = "U"
AsciiDict(7917) = "u"
AsciiDict(7918) = "U"
AsciiDict(7919) = "u"
AsciiDict(7920) = "U"
AsciiDict(7921) = "u"
AsciiDict(7922) = "Y"
AsciiDict(7923) = "y"
AsciiDict(7924) = "Y"
AsciiDict(7925) = "y"
AsciiDict(7926) = "Y"
AsciiDict(7927) = "y"
AsciiDict(7928) = "Y"
AsciiDict(7929) = "y"
AsciiDict(8363) = "d"
Text = Trim(Text)
If Text = "" Then Exit Function
Dim Char As String, _
NormalizedText As String, _
UnicodeCharCode As Long, _
i As Long
For i = 1 To Len(Text)
Char = Mid(Text, i, 1)
UnicodeCharCode = AscW(Char)
If (UnicodeCharCode < 0) Then
UnicodeCharCode = 65536 + UnicodeCharCode
End If
If AsciiDict.Exists(UnicodeCharCode) Then
NormalizedText = NormalizedText & AsciiDict.Item(UnicodeCharCode)
Else
NormalizedText = NormalizedText & Char
End If
Next
Bo_Dau = NormalizedText
End Function
 
Vì mình muốn dùng các hàm như LEFT, FIND, TRIM... nhưng nó không định vị được nếu có ký tự tiếng Việt
 
Office 2013 và 2016 đều dùng
Ở 2016 có hàm concat thì dùng bảng tra các ký tự Việt thành ký tự không dấu rồi nối lại cũng được. Tuy nhiên cũng hơi phức tạp và chuỗi dài thì nặng. Xử lý bằng hàm tự tạo có lẽ là cách hay nhất
 
Mình hay dùng hàm UDF này:

Function Bo_Dau(Text As String) As String
Dim AsciiDict As Object
Set AsciiDict = CreateObject("scripting.dictionary")
...
Code hơi yếu tay.
Nếu Key là số thì người ta dùng mảng. Nhanh và đơn giản hơn Dictionary nhiều.
Mảng 10000 phần tử string đối với máy hiện nay chỉ là việc nhỏ.
 
Chủ thớt có thể tham khảo bài tương tự trên diễn đàn (bài 9):
 
Mình có thể dùng hàm gì để bỏ dấu tiếng Việt trong tất cả các ô dữ liệu có ?
Ví dụ ô A1 mình có từ tiếng Việt " CỘng hòa xã hội 456$@" muốn dùng hàm để xử lý thành "COng hoa xa hoi 456$@" ạ
Copy / Bật Unikey Toolkit chọn đúng Bảng mã của Nguồn và Đích và Tích vào Loại bỏ dấu / Paste.
Tôi đã thử với font Unicode và TCVN3 (ABC) thì ok.
Bạn thử xem.
 
Web KT
Back
Top Bottom