Công cụ hỗ trợ tiếng Việt cho Excel

Liên hệ QC

phamduylong

-
Thành viên đã mất
Tham gia
30/12/06
Bài viết
918
Được thích
2,368
Nghề nghiệp
Giáo viên
Trên diễn đàn có nhiều bạn hỏi về xử lý tiếng Việt trên Excel như sắp xếp, chuyển từ bảng mã này sang bảng mã khác, tách họ, tách tên, sắp xếp, …
Tôi đưa ra chủ đề này để chúng ta cùng tạo những công cụ hỗ trợ tiếng Việt cho Excel phong phú hơn.
Tôi có viết một số hàm để thực hiện việc các việc đó. Nhưng để sử dụng thuận tiện hơn, tôi viết macro để người sử dụng không biết tên hàm, công thức cũng có thể sử dụng được bằng cách thao tác qua form bằng tiếng Việt. Tôi đã viết 2 tập tin TVEXCEL01.xls và TVEXCEL.xla, mỗi tập tin chứa một số công cụ phục vụ một số yêu cầu hỗ trợ tiếng Việt. Do chưa có thời gian nên tôi chưa gom chung tất cả công cụ thành một tập tin.

A. Tập tin TVEXCEL.xla có các công cụ:
1. Chuyển mã VNI, TCVN3-ABC, Unicode: chuyển qua lại giữa 3 bảng mã VNI-Windows, ABC TCVN3, Unicode (nên sử dụng bên TVEXCEL01).
2. Sắp sếp (Sort): sắp xếp họ tên tiếng Việt.
3. Chuyển câu (Change Case): chuyển qua lại giữa CHỮ HOA, chữ thường và Chữ Hoa Đầu Từ.
4. Đọc số tiếng Việt: chuyển từ số sang cách đọc tiếng Việt (nên sử dụng bên TVEXCEL01)
5. Tách ghép Họ Tên: tách họ tên 1 cột ra 2 cột, ghép họ tên 2 cột thành 1 cột.

B. Tập tin TVEXCEL01.xla có các công cụ:
1. Add-In TVEXCEL01: gán TVEXCEL01 vào Add-Ins.
2. Chuyển bảng mã: chuyển qua lại giữa 3 bảng mã VNI-Windows, ABC TCVN3, Unicode.
3. Đọc số tiếng Việt: chuyển từ số sang cách đọc tiếng Việt
4. Lịch 1920-2099: cuốn lịch cho Excel.
Tập tin TVEXCEL01 viết sau nên hoàn chỉnh hơn TVEXCEL, 2 công cụ chuyển mã và đọc số bạn nên sử dụng TVEXCEL01. Tôi gởi kèm 2 trang Web hướng dẫn sử dụng TVEXCEL01 là Chuyenma.zip và Docso.zip
 

File đính kèm

  • ChuyenMa.zip
    180.9 KB · Đọc: 9,535
  • DocSo.zip
    97 KB · Đọc: 7,729
  • TVEXCEL.zip
    129.6 KB · Đọc: 8,535
  • TVEXCEL01.zip
    80.1 KB · Đọc: 9,376
Cảm ơn Thầy Long ! Những file này rất cần thiết và hữu ích cho người dùng office.

Chúc Thầy Long luôn mạnh khỏe & thành đạt !
 
Upvote 0
Xin chào Anh phamduylong,
Sau khi thử tôi xin phép được góp ý về phần add-in của anh như sau:
_Khi dùng menu chuyển bảng mã, nếu không có workbook nào đang mở thì chương trình thông báo, nhưng sau đó vẫn hiện form ra. Theo tôi nên không cho hiện form ra.
Tương tự đối với các menu khác.
_Còn lỗi như sau:

ERR_VEXCEL1.jpg


Nên chăng anh dùng module tôi đã giới thiệu, để ngăn chặn các lỗi và ghi ra một file text. Như vậy người dùng sẽ cảm thấy dễ chịu hơn. Sau đó người dùng có thể gởi file báo lỗi này về cho anh.
Anh xem lại lỗi này.

ERR_VEXCEL2.jpg


Thông thường đối với lỗi này, anh nên khai báo tường minh.

Form vẫn hiện ra

ERR_VEXCEL3.jpg


Và cuối cùng dẫn đến báo lỗi sai

ERR_VEXCEL4.jpg


Chúc anh thành công trong phiên bản sau.

Lê Văn Duyệt
 
Upvote 0
Cám ơn góp ý của Anh Duyệt.
Tôi sẽ kiểm tra lại và chỉnh lại những sai sót. Mình viết và chạy thử thấy không vấn đề, nhưng chưa thử hết các trường hợp. Các anh em nếu có phát hiện lỗi báo lên diễn đàn để tôi khắc phục những lỗi giúp TVEXCEL hoàn thiện hơn.
 
Upvote 0
Xin chào anh Phạm Duy Long!
cảm ơn anh rất nhiều vì chương trình rất hay, tuy nhiên tôi muốn sửa một điểm nhưng không biết cách nào để sửa. Đó là tôi muốn chữ số không sẽ đọc là không chứ không đọc là linh. Xin anh chỉ giúp cho tôi cảm ơn rất nhiều
 
Upvote 0
tnvtuan đã viết:
Xin chào anh Phạm Duy Long!
cảm ơn anh rất nhiều vì chương trình rất hay, tuy nhiên tôi muốn sửa một điểm nhưng không biết cách nào để sửa. Đó là tôi muốn chữ số không sẽ đọc là không chứ không đọc là linh. Xin anh chỉ giúp cho tôi cảm ơn rất nhiều
Password là phamduylong hoặc pham_duy_long
Vào Module > Mod_Fun chỉnh lại "linh" thành "không" các function Docso (6 function cho 3 bảng mã)
 
Upvote 0
Anh Long ơi! Công cụ của anh tôi thấy thật là hay ở chỗ nó có thể chuyển mã cả trong nội dung công thức. (điều mà một số công cụ khác như Unikey hoặc VietkeyO chưa làm được). Cảm ơn anh nhiều.
Tuy nhiên tôi có một trường hợp như sau: Nội dung sheet hoặc cả file nếu chủ yếu dùng font TCVN3, trong đó có một số cell lại dùng font Unicode (thậm chí trong cả một số cell chứa công thức), khi dùng chuyển mã sang Unicode thì công cụ này cho ra kết quả đúng với các cell là TCVN3, còn các cell định dạng là Uni thì lại không hiển thị được tiếng Việt. Có thể anh phát triển thêm:
- Nếu nhận dạng cell nào đó đã định dạng đúng font đích rồi thì bỏ qua... (hoặc tương tự như vậy).
- Có thể chọn một số cell để chuyển mã.
Cảm ơn anh.
 
Lần chỉnh sửa cuối:
Upvote 0
duongsatdn đã viết:
khi dùng chuyển mã sang Unicode thì công cụ này cho ra kết quả đúng với các cell là TCVN3, còn các cell định dạng là Uni thì lại không hiển thị được tiếng Việt. Có thể anh phát triển thêm:
- Nếu nhận dạng cell nào đó đã định dạng đúng font đích rồi thì bỏ qua... (hoặc tương tự như vậy).
- Có thể chọn một số cell để chuyển mã.
Cảm ơn anh.
Cám ơn em đã góp ý. Đúng là có một số bảng tính lại sử dụng nhiều bảng mã, tôi cũng nghĩ đến vấn đề này. Nhưng về kỹ thuật có một trở ngại là nếu phải kiểm tra bảng mã từng ô để chuyển thì chạy rất chậm, tôi sẽ tìm giải pháp nào tốt hơn để khắc phục.
 
Lần chỉnh sửa cuối:
Upvote 0
Hàm hỗ trợ tiếng Việt


Để phục vụ cho các bảng tính sử dụng các bảng mã tiếng Việt như Unicode, VNI Windows, ABC-TCVN3, cần có một số hàm viết riêng cho các bảng mã đó.
Trước đây tôi đã viết một số hàm hỗ trợ tiếng Việt cho 3 bảng mã trên. Qua sử dụng đã được các bạn góp ý, tôi đã chỉnh lại và hệ thống lại để các bạn tiện sử dụng.

1. Sắp xếp
Dùng để sắp xếp danh sách theo tiếng Việt theo quy tắc không dấu, sắc, huyền, hỏi, ngả, nặng.
- Ví dụ SortUni(“Hổ trợ tiếng Việt”) > “hoz3 trozz5 tiezng1 viezt5”.
- Với dữ liệu là họ tên, kết hợp với hàm DaoTen để sắp xếp theo tên. Ví dụ Sort(DaoTen(hoten))
SortUni(text): Sắp xếp danh sách Unicode
SortVn3(text): Sắp xếp danh sách ABC-TCVN3
SortVni(text): Sắp xếp danh sách VNI Windows

2. Chuyển bảng mã
Chuyển từ bảng mã này sang bảng mã khác. Ví dụ ô A1 đang sử dụng font .VnTime nuốn chuyển sang Unicode, công thức =Vn3Uni(A1), sau khi chuyển xong định dạng lại font Time New Roman.
UniVn3(text): Chuyển bảng mã Unicode sang ABC-TCVN3
UniVni(text): Chuyển bảng mã Unicode sang VNI Windows
Vn3Uni(text): Chuyển bảng mã ABC-TCVN3 sang Unicode
Vn3Vni(text): Chuyển bảng mã ABC-TCVN3 sang VNI Windows
VniUni(text): Chuyển bảng mã VNI Windows sang Unicode
VniVn3(text): Chuyển bảng mã VNI Windows sang ABC-TCVN3

3. Ngày tháng (riêng cho Unicode)
Chuyển thứ, tháng từ 1 ngày sang tiếng Việt. Ví dụ WeekdayUni (“10/08/2007”) > “Thứ sáu”
WeekdayUni(ngay): Thứ trong tuần (Chủ nhật, Thứ hai, …)
MonthUni(ngay): Tháng trong năm (Tháng giêng, Tháng hai, …)

4. Xử lý chuổi (riêng cho Unicode)
CodeUni(text): Chuyển chuổi Unicode sang số mã (tương tự hàm CODE của Excel). Ví dụ CodeUni(“ỷ”) > 7927
ProperUni(text): Chuyển câu sang Chữ Hoa Đầu Từ. Ví dụ ProperUni(“giải pháp excel”) > “Giải pháp Excel”
VbaUni(text): chuyển chuổi Unicode sang cách viết kết hợp hàm ChrW dùng cho nhập chuổi Unicode trong Editor VBA.
Ví dụ: UniVba(“Giải pháp”) > "Gi" & ChrW(7843) & "i pháp"

5. Đọc số tiếng Việt
Do cách đọc số chưa thống nhất (105 > một trăm linh năm) nên trước đây tôi viết cách đọc theo sách giáo khoa. Nhưng thực tế, nhiều nơi có cách đọc “linh” khác nhau như “lẻ”, “không”.
Mặc khác có khi viết hoa ký tự đầu, có khi không. Được các bạn góp ý, tôi viết lại hàm đọc số linh hoạt hơn, cho phép bạn diễn đạt theo ý riêng của mình.
DocSoUni(conso, doiso1, doiso2): Chuyển số sang sang đọc số cho Unicode
DocSoVni(conso, doiso1, doiso2): Chuyển số sang sang đọc số cho VNI Windows
DocSoVn3(conso, doiso1, doiso2): Chuyển số sang sang đọc số cho ABC-TCVN3
Hàm có 3 đối số:
conso: bắt buộc
doiso1: không bắt buộc, ngầm định “linh”. Bạn nhập vào chuổi nào vào doiso1 thì “linh” sẽ thay bằng chuổi đó.
doiso2: không bắt buộc, ngầm định 0 > viết hoa ký tự đầu tiên, 1 > không viết hoa.
Ví dụ: Docso(105) > Một trăm linh năm
_____Docso(105,”lẻ”,1) > một trăm lẻ năm

6. Họ tên
TachHo(hoten): Tách họ, tên đệm
TachTen(hoten): Tách tên
DaoHoTen(hoten): Đảo thứ tự họ, tên đệm, tên. Hàm này hổ trợ cho xếp danh sách họ tên.
Ví dụ: TachHo(“pham duy long”) > “pham duy”
_____TachTen(“pham duy long”) > “long”
_____DaoTen(“pham duy long”) > “long duy pham”

Do các hằng CodUni, StrVn3, StrVni, StrDau, StrMa dùng chung cho nhiều hàm nên các bạn nên để đầu Module.
 

File đính kèm

  • Ho tro Tieng Viet VBA.zip
    54.3 KB · Đọc: 3,512
Upvote 0
Khai báo hằng
Để đầu module, do hằng dài nên tôi không ghi đầu đủ tại dây. Các bạn xem trong tập tin đính kèm
Mã:
[COLOR=black]Const CodUni = "225  224  7843 227  7841 259  7855 7857 7859 7861 ... "[/COLOR]
[COLOR=black]Const StrVn3 = "¸µ¶·¹¨¾»¼½Æ©ÊÇÈÉËÐÌÎÏѪÕÒÓÔÖÝ×ØÜÞãßáçé¬í... "[/COLOR]
[COLOR=black]Const StrVni = "aùaøaûaõaïaêaéaèaúaüaëaâaáaàaåaãaäeùeøeûeõeïeâ... "[/COLOR]
[COLOR=black]Const StrDau = "12345 12345 1234512345 123451234512345 12345... "[/COLOR]
[COLOR=black]Const StrMa = "a  a  a  a  a  az az az az az az azzazzazzazzazzazze ..."[/COLOR]
[COLOR=black]Dim ArrUni[/COLOR]

Hàm sắp xếp
Mã:
[COLOR=black]Function SortUni(text As String) As String[/COLOR]
[COLOR=black]text = text & " "[/COLOR]
[COLOR=black]madau = " "[/COLOR]
[COLOR=black]For n = 1 To Len(text) - 1[/COLOR]
[COLOR=black]kytu = Mid(text, n, 1)[/COLOR]
[COLOR=black]codkytu = AscW(kytu) & String(5 - Len(CStr(AscW(kytu))), " ")[/COLOR]
[COLOR=black]vitri = (InStr(1, CodUni, codkytu, 0) + 4) / 5[/COLOR]
[COLOR=black]If vitri >= 1 Then[/COLOR]
[COLOR=black] kytu = Trim(Mid(StrMa, vitri * 3 - 2, 3))[/COLOR]
[COLOR=black] If madau = " " Then madau = Mid(StrDau, vitri, 1)[/COLOR]
[COLOR=black]End If[/COLOR]
[COLOR=black]If Mid(text, n + 1, 1) = " " Then[/COLOR]
[COLOR=black] newtext = newtext & kytu & Trim(madau)[/COLOR]
[COLOR=black] madau = " "[/COLOR]
[COLOR=black]Else[/COLOR]
[COLOR=black] newtext = newtext & kytu[/COLOR]
[COLOR=black]End If[/COLOR]
[COLOR=black]Next[/COLOR]
[COLOR=black]SortUni = newtext[/COLOR]
[COLOR=black]End Function[/COLOR]
 
[COLOR=black]Function SortVn3(text As String) As String[/COLOR]
[COLOR=black]text = text & " "[/COLOR]
[COLOR=black]madau = " "[/COLOR]
[COLOR=black]For n = 1 To Len(text) - 1[/COLOR]
[COLOR=black]kytu = Mid(text, n, 1)[/COLOR]
[COLOR=black]vitri = InStr(1, StrVn3, kytu, 0)[/COLOR]
[COLOR=black]If vitri >= 1 Then[/COLOR]
[COLOR=black] kytu = Trim(Mid(StrMa, vitri * 3 - 2, 3))[/COLOR]
[COLOR=black] If madau = " " Then madau = Mid(StrDau, vitri, 1)[/COLOR]
[COLOR=black]End If[/COLOR]
[COLOR=black]If Mid(text, n + 1, 1) = " " Then[/COLOR]
[COLOR=black] newtext = newtext & kytu & Trim(madau)[/COLOR]
[COLOR=black] madau = " "[/COLOR]
[COLOR=black]Else[/COLOR]
[COLOR=black] newtext = newtext & kytu[/COLOR]
[COLOR=black]End If[/COLOR]
[COLOR=black]Next[/COLOR]
[COLOR=black]SortVn3 = newtext[/COLOR]
[COLOR=black]End Function[/COLOR]
 
[COLOR=black]Function SortVni(text As String) As String[/COLOR]
[COLOR=black]text = text & " "[/COLOR]
[COLOR=black]madau = " "[/COLOR]
[COLOR=black]For i = 1 To Len(text)[/COLOR]
[COLOR=black]kytu = Mid(text, i, 2)[/COLOR]
[COLOR=black]vitri = InStr(1, StrVni, kytu, 0)[/COLOR]
[COLOR=black]If vitri = 0 Or Left(kytu, 1) = " " Or Right(kytu, 1) = " " Or Len(kytu) = 1 Then[/COLOR]
[COLOR=black] kytu = Mid(text, i, 1)[/COLOR]
[COLOR=black] vitri = InStr(1, StrVni, kytu, 0)[/COLOR]
[COLOR=black] If (Asc(kytu) >= 65 And Asc(kytu) <= 122) Or kytu = " " Then[/COLOR]
[COLOR=black]   vitri = 0[/COLOR]
[COLOR=black] End If[/COLOR]
[COLOR=black]Else[/COLOR]
[COLOR=black] i = i + 1[/COLOR]
[COLOR=black]End If[/COLOR]
[COLOR=black]If vitri > 0 And kytu <> " " Then[/COLOR]
[COLOR=black] kytu = Trim(Mid(StrMa, (vitri + 1) * 3 / 2 - 2, 3))[/COLOR]
[COLOR=black] If madau = " " Then madau = Mid(StrDau, (vitri + 1) / 2, 1)[/COLOR]
[COLOR=black]End If[/COLOR]
[COLOR=black]If Mid(text, i + 1, 1) = " " Then[/COLOR]
[COLOR=black] newtext = newtext & kytu & Trim(madau)[/COLOR]
[COLOR=black] madau = " "[/COLOR]
[COLOR=black]Else[/COLOR]
[COLOR=black] newtext = newtext & kytu[/COLOR]
[COLOR=black]End If[/COLOR]
[COLOR=black]Next[/COLOR]
[COLOR=black]SortVni = Left(newtext, Len(newtext) - 1)[/COLOR]
[COLOR=black]End Function[/COLOR]
 
Lần chỉnh sửa cuối:
Upvote 0
Hàm ngày tháng
Mã:
[COLOR=black]Function WeekdayUni(ngay As Date) As String[/COLOR]
[COLOR=black]ArrUni = Array("", "Ch" & ChrW(7911) & " nh" & ChrW(7853) & "t", "Th" & ChrW(7913) & " hai", "Th" & ChrW(7913) & " ba", "Th" & ChrW(7913) & [/COLOR]
[COLOR=black][COLOR=white]____________[/COLOR]" t" & ChrW(432), "Th" & ChrW(7913) & " n" & ChrW(259) & "m", "Th" & ChrW(7913) & " sáu", "Th" & ChrW(7913) & " b" & ChrW(7843) & "y")[/COLOR]
[COLOR=black]WeekdayUni = ArrUni(Weekday(ngay, vbSunday))[/COLOR]
[COLOR=black]End Function[/COLOR]
 
[COLOR=black]Function MonthUni(ngay As Date) As String[/COLOR]
[COLOR=black]ArrUni = Array("", "Tháng giêng", "Tháng hai", "Tháng ba", "Tháng t" & ChrW(432), "Tháng n" & ChrW(259) & "m", "Tháng sáu", "Tháng b" & [/COLOR]
[COLOR=black][COLOR=white]___________[/COLOR]ChrW(7843) & "y", "Tháng tám", "Tháng chín", "Tháng m" & ChrW(432) & ChrW(7901) & "i", "Tháng m" & ChrW(432) & ChrW(7901) & [/COLOR]
[COLOR=black][COLOR=white]___________[/COLOR]"i m" & ChrW(7897) & "t", "Tháng m" & ChrW(432) & ChrW(7901) & "i hai")[/COLOR]
[COLOR=black]MonthUni = ArrUni(Month(ngay))[/COLOR]
[COLOR=black]End Function[/COLOR]

Hàm xử lý chuỗi
Mã:
[COLOR=black]Function CodeUni(text As String) As Integer[/COLOR]
[COLOR=black]CodeUni = AscW(text)[/COLOR]
[COLOR=black]End Function[/COLOR]
 
[COLOR=black]Function ProperUni(text As String) As String[/COLOR]
[COLOR=black]text = " " & LCase(text)[/COLOR]
[COLOR=black]For n = 2 To Len(text)[/COLOR]
[COLOR=black]kytu = Mid(text, n, 1)[/COLOR]
[COLOR=black]If Mid(text, n - 1, 1) = " " Then[/COLOR]
[COLOR=black]  If AscW(kytu) < 256 Then[/COLOR]
[COLOR=black]    kytu = UCase(kytu)[/COLOR]
[COLOR=black]  Else[/COLOR]
[COLOR=black]    kytu = ChrW(AscW(kytu) - 1)[/COLOR]
[COLOR=black]  End If[/COLOR]
[COLOR=black]End If[/COLOR]
[COLOR=black]newtext = newtext & kytu[/COLOR]
[COLOR=black]Next[/COLOR]
[COLOR=black]ProperUni = newtext[/COLOR]
[COLOR=black]End Function[/COLOR]
 
[COLOR=black]Function VbaVba(text As String) As String[/COLOR]
[COLOR=black]If text = "" Then[/COLOR]
[COLOR=black]VbaVba = """"""[/COLOR]
[COLOR=black]Else[/COLOR]
[COLOR=black]text = text & " "[/COLOR]
[COLOR=black]If AscW(Left(text, 1)) < 256 Then VbaUni = """"[/COLOR]
[COLOR=black]For n = 1 To Len(text) - 1[/COLOR]
[COLOR=black]  uni1 = Mid(text, n, 1)[/COLOR]
[COLOR=black]  uni2 = AscW(Mid(text, n + 1, 1))[/COLOR]
[COLOR=black]  If AscW(uni1) > 255 And uni2 > 255 Then[/COLOR]
[COLOR=black]    VbaUni = VbaUni & "ChrW(" & AscW(uni1) & ") & "[/COLOR]
[COLOR=black]  ElseIf AscW(uni1) > 255 And uni2 < 256 Then[/COLOR]
[COLOR=black]    VbaUni = VbaUni & "ChrW(" & AscW(uni1) & ") & """[/COLOR]
[COLOR=black]  ElseIf AscW(uni1) < 256 And uni2 > 255 Then[/COLOR]
[COLOR=black]    VbaUni = VbaUni & uni1 & """ & "[/COLOR]
[COLOR=black]  Else[/COLOR]
[COLOR=black]    VbaUni = VbaUni & uni1[/COLOR]
[COLOR=black]  End If[/COLOR]
[COLOR=black]Next[/COLOR]
[COLOR=black]If Right(VbaUni, 4) = " & """ Then[/COLOR]
[COLOR=black]  VbaUni = Mid(VbaUni, 1, Len(VbaUni) - 4)[/COLOR]
[COLOR=black]Else[/COLOR]
[COLOR=black]  VbaUni = VbaUni & """"[/COLOR]
[COLOR=black]End If[/COLOR]
[COLOR=black]End If[/COLOR]
[COLOR=black]End Function[/COLOR]

Hàm họ tên
Mã:
[COLOR=black]Function TachHo(hoten As String) As String[/COLOR]
[COLOR=black]hoten = Trim(hoten)[/COLOR]
[COLOR=black]If hoten = "" Then[/COLOR]
[COLOR=black]TachHo = ""[/COLOR]
[COLOR=black]Else[/COLOR]
[COLOR=black]vt = InStrRev(hoten, " ", Len(hoten))[/COLOR]
[COLOR=black]If vt = 0 Then[/COLOR]
[COLOR=black]  TachHo = ""[/COLOR]
[COLOR=black]Else[/COLOR]
[COLOR=black]  TachHo = Trim(Mid(hoten, 1, vt))[/COLOR]
[COLOR=black]End If[/COLOR]
[COLOR=black]End If[/COLOR]
[COLOR=black]End Function[/COLOR]
[COLOR=black]Function TachTen(hoten As String) As String[/COLOR]
[COLOR=black]hoten = Trim(hoten)[/COLOR]
[COLOR=black]If hoten = "" Then[/COLOR]
[COLOR=black]TachTen = ""[/COLOR]
[COLOR=black]Else[/COLOR]
[COLOR=black]vt = InStrRev(hoten, " ", Len(hoten))[/COLOR]
[COLOR=black]If vt = 0 Then[/COLOR]
[COLOR=black]  TachTen = hoten[/COLOR]
[COLOR=black]Else[/COLOR]
[COLOR=black]  TachTen = Mid(hoten, vt + 1)[/COLOR]
[COLOR=black]End If[/COLOR]
[COLOR=black]End If[/COLOR]
[COLOR=black]End Function[/COLOR]
 
[COLOR=black]Function DaoHoTen(hoten As String) As String[/COLOR]
[COLOR=black]hoten = " " & Trim(hoten)[/COLOR]
[COLOR=black]If hoten = " " Then[/COLOR]
[COLOR=black]DaoHoTen = ""[/COLOR]
[COLOR=black]Else[/COLOR]
[COLOR=black]Do[/COLOR]
[COLOR=black]  vt = InStrRev(hoten, " ", Len(hoten))[/COLOR]
[COLOR=black]  tendao = tendao & Mid(hoten, vt)[/COLOR]
[COLOR=black]  hoten = Left(hoten, vt - 1)[/COLOR]
[COLOR=black]  If vt = 1 Then Exit Do[/COLOR]
[COLOR=black]Loop[/COLOR]
[COLOR=black]DaoHoTen = Trim(tendao)[/COLOR]
[COLOR=black]End If[/COLOR]
[COLOR=black]End Function[/COLOR]

Các bạn nên lấy code từ tập tin “Ho tro Tieng Viet VBA.xls” vì các mã trong các hằng rất khó nhập.
 
Lần chỉnh sửa cuối:
Upvote 0
Sau khi chọn add-ins thì báo lỗi 492.

Chào anh Long!
Em mới sử dụng chương trình này nên cũng không được rõ lắm. Sau khi chọn Add-Ins thì nhận được thông báo lỗi sau (Hình). Nhờ anh và mọi người hướng dẫn cách khắc phục.
 

File đính kèm

  • Loi ham doc so.GIF
    Loi ham doc so.GIF
    78.6 KB · Đọc: 835
Upvote 0
Gửi thầy phamduylong và các bạn quan tâm.
Tôi đang dúng tiện ích chuyển đổi font của thầy, nhưng bất lực với file đính kèm, thầy và các bạn giúp tôi nhé.
Chúc vui vẻ.
 

File đính kèm

  • dulieu.rar
    131.3 KB · Đọc: 150
Upvote 0
Gửi thầy phamduylong và các bạn quan tâm.
Tôi đang dúng tiện ích chuyển đổi font của thầy, nhưng bất lực với file đính kèm, thầy và các bạn giúp tôi nhé.
Chúc vui vẻ.
Chuyển được chứ chibi. Nhưng tốc độ chuyển chậm.
Bạn dùng hàm chỉnh tiếp họ tên (nhập không thống nhất chữ hoa, chữ thường)
 

File đính kèm

  • dulieu 1.zip
    180.1 KB · Đọc: 275
Upvote 0
Cảm ơn thầy Long. Em chạy trên máy khác thấy bình thường. Không hiểu tại sao nữa. Em mô tả để thầy xem nhé (Máy không bình thường): Cấu hình không thấp (DualCore 1.86, 1G RAM), mọi thứ trên Excel chạy bình thường (Đại loại không virus), chỉ chuyển được <=100 dòng dữ liệu trong file mà em gửi trước.
 
Upvote 0
Lần chỉnh sửa cuối:
Upvote 0
Sao vậy nè, các file bạn up lên mình down về thì hoàn toàn không mở được !! bạn giúp mình với nhé
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Sao vậy nè, các file bạn up lên mình down về thì hoàn toàn không mở được !! bạn giúp mình với nhé

Nếu bạn down file về mà mở không lên thì có thể do máy bạn chưa cài phần mềm giải nén. Bạn down phần mềm nén và giải nén file như Winrar hay Winzip về, cài vào máy rồi dùng nó mở file lại xem sao nha.
 
Upvote 0
Công cụ sắp xếp tên tiếng việt

Mình thấy mọi người thảo luận rất sôi nổi.
Mình có sưu tầm được tiện ích sắp sếp tiếng việt rất hay.
Mình đã dùng và thấyđơnn giản nhưng hữu ích.
Mọi người tham khảo nhé.
 

File đính kèm

  • PHAN MEM SAP TEN.TACH TEN.DO SO.rar
    188.7 KB · Đọc: 818
  • HUONG DAN.rar
    907.4 KB · Đọc: 802
Upvote 0
Xin hỏi ai có code loại bỏ dấu tiếng việt trong bảng tính excel. Share mình cái.
 
Upvote 0
Web KT
Back
Top Bottom