Trang 1/4 1 2 3 4 cuốicuối
Hiển thị kết quả tìm kiếm từ 1 đến 10 trên tổng số: 40
  1. #1
    Tham gia ngày
    12 2006
    Nơi Cư Ngụ
    Đồng Tháp
    Bài gởi
    924
    Cảm ơn
    1,233
    Được cảm ơn 2,231 lần trong 662 bài viết

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

    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
    Tập tin đính kèm Tập tin đính kèm
    pham_duy_long@yahoo.com
    DĐ: 0918 975 460

  2. Có 150 thành viên cảm ơn phamduylong về bài viết này:

    TKT, absoluter, ajinomoto, anhduc.tv4, anhha_mobile, AnhTuan-Hacinco, b2bc, babylovely1105, bachlangquan89, bj188, bond2009, boylonely1129, boyzepjai89, BPvn, bui.tuan, buitoan, Cá ngừ F1, Chu quyen, chu_ga_nhep, cohai24, cong252, Dauthivan, donganh_090909, DOREAMON, ducctc, dudieuwa, dunghhc, Dungtk, duongsatdn, dutrungkien, dvu58, fimb476, flicker, foudremars, ghost85, gocmit65, hadoson, Hai Lúa Miền Tây, haimienbac, haiquang87, Học Hỏi và tìm hiểu, heo&gaumeo, Hieu Nghia, hi_mylove256, hoangvn79, Hoàng Trọng Nghĩa, ht3288, hungsd1, huyct1, HuyQTD, iamcuong, kakait, ketoan9999, kington123, KUMI, laohac4i, lethanhnhan, likepeacer, LinDan, lion1504, logica, ltk, lycafeden, minhchi0302, minion, Mr Okebab, mrd_1010, ndt789, netnewbie, nggiahoang, nghia122333, nguyen thi nhut linh, nguyenhaqb, nguyenmanhnam, nguyentam_hui, nhan_dv, NH_DK, nknam87, Nobita72, ntdieu, ongtrungducmx25, onlinelove, OverAC, passion9999, phagiba, Pham Tran, phamconghung, phan ngoc lan, Phanhanhdai, PhanTuHuong, phonghieu, phonglan978, phungsacuong, Phuongdong 2005, pl140107, planetvn, pretywoman, quangvan80, quynhtlbp, rongden38, rongnho1988, sku11, slaughter, SocTrangIT, sonmaplx, storm_eye88, sunflower_1542002, sutu, Tai Tri, tantv2006, Tống Văn Đệ, tbv, tedaynui, thaovi189, thay trung, theanhhn, thientuong295, thivantan, thongktnl, ThuNghi, ThuongNQ, tienvan1986, toanks14b, tomytom, tran thanh son, tranduchp82, tranphong, tranvanthanh119, trần võ hải, trchau, TrigaMark, trunglee123, truongthi2525, truongthikt, TT8571, TranThanhPhong, tuananhce03, Tuyet_roi_mua_he, TVGTKONTUM, tvh866, tvxdgt, vu198hung, vungoc, vuthai206, wildchicken, winning0308, xuan.nguyen82, xuan_ha919, đầuto

  3. #2
    Tham gia ngày
    08 2006
    Nơi Cư Ngụ
    TPHCM
    Bài gởi
    600
    Cảm ơn
    2,209
    Được cảm ơn 2,514 lần trong 594 bài viết
    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 !
    Yahoo Messenger: ngocv_hr // Skype: humanresourcemanagement // vungochuman@gmail.com
    ---------------------------------------------------
    Gieo suy nghĩ - sẽ gặt hành vi.
    Gieo hành vi - sẽ gặt thói quen.
    Gieo thói quen - sẽ gặt tính cách.
    Gieo tính cách - sẽ gặt số phận.

  4. Có 4 thành viên cảm ơn vungoc về bài viết này:


  5. #3
    Tham gia ngày
    05 2006
    Nơi Cư Ngụ
    HCM
    Bài gởi
    1,735
    Cảm ơn
    1,823
    Được cảm ơn 4,308 lần trong 1,197 bài viết
    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:



    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.



    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



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



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

    Lê Văn Duyệt

  6. Có 5 thành viên cảm ơn levanduyet về bài viết này:


  7. #4
    Tham gia ngày
    12 2006
    Nơi Cư Ngụ
    Đồng Tháp
    Bài gởi
    924
    Cảm ơn
    1,233
    Được cảm ơn 2,231 lần trong 662 bài viết
    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.
    pham_duy_long@yahoo.com
    DĐ: 0918 975 460

  8. Có 4 thành viên cảm ơn phamduylong về bài viết này:


  9. #5
    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

  10. Có 2 thành viên cảm ơn tnvtuan về bài viết này:


  11. #6
    Tham gia ngày
    12 2006
    Nơi Cư Ngụ
    Đồng Tháp
    Bài gởi
    924
    Cảm ơn
    1,233
    Được cảm ơn 2,231 lần trong 662 bài viết
    Trích Nguyên văn bởi tnvtuan
    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ã)
    pham_duy_long@yahoo.com
    DĐ: 0918 975 460

  12. Có 2 thành viên cảm ơn phamduylong về bài viết này:


  13. #7
    Tham gia ngày
    06 2007
    Bài gởi
    456
    Cảm ơn
    254
    Được cảm ơn 403 lần trong 165 bài viết
    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.
    thay đổi nội dung bởi: duongsatdn, 06-08-07 lúc 10:02 AM

  14. Có 3 thành viên cảm ơn duongsatdn về bài viết này:


  15. #8
    Tham gia ngày
    12 2006
    Nơi Cư Ngụ
    Đồng Tháp
    Bài gởi
    924
    Cảm ơn
    1,233
    Được cảm ơn 2,231 lần trong 662 bài viết
    Trích Nguyên văn bởi duongsatdn
    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.
    thay đổi nội dung bởi: phamduylong, 21-10-09 lúc 06:42 PM
    pham_duy_long@yahoo.com
    DĐ: 0918 975 460

  16. Có 2 thành viên cảm ơn phamduylong về bài viết này:


  17. #9
    Tham gia ngày
    12 2006
    Nơi Cư Ngụ
    Đồng Tháp
    Bài gởi
    924
    Cảm ơn
    1,233
    Được cảm ơn 2,231 lần trong 662 bài viết

    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.
    Tập tin đính kèm Tập tin đính kèm
    pham_duy_long@yahoo.com
    DĐ: 0918 975 460


  18. #10
    Tham gia ngày
    12 2006
    Nơi Cư Ngụ
    Đồng Tháp
    Bài gởi
    924
    Cảm ơn
    1,233
    Được cảm ơn 2,231 lần trong 662 bài viết
    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
    Code:
    Const CodUni = "225  224  7843 227  7841 259  7855 7857 7859 7861 ... "
    Const StrVn3 = "¸µ¶·¹¨¾»¼½Æ©ÊÇÈÉËÐÌÎÏѪÕÒÓÔÖÝ×ØÜÞãßáçé¬í... "
    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â... "
    Const StrDau = "12345 12345 1234512345 123451234512345 12345... "
    Const StrMa = "a  a  a  a  a  az az az az az az azzazzazzazzazzazze ..."
    Dim ArrUni
    Hàm sắp xếp
    Code:
    Function SortUni(text As String) As String
    text = text & " "
    madau = " "
    For n = 1 To Len(text) - 1
    kytu = Mid(text, n, 1)
    codkytu = AscW(kytu) & String(5 - Len(CStr(AscW(kytu))), " ")
    vitri = (InStr(1, CodUni, codkytu, 0) + 4) / 5
    If vitri >= 1 Then
     kytu = Trim(Mid(StrMa, vitri * 3 - 2, 3))
     If madau = " " Then madau = Mid(StrDau, vitri, 1)
    End If
    If Mid(text, n + 1, 1) = " " Then
     newtext = newtext & kytu & Trim(madau)
     madau = " "
    Else
     newtext = newtext & kytu
    End If
    Next
    SortUni = newtext
    End Function
     
    Function SortVn3(text As String) As String
    text = text & " "
    madau = " "
    For n = 1 To Len(text) - 1
    kytu = Mid(text, n, 1)
    vitri = InStr(1, StrVn3, kytu, 0)
    If vitri >= 1 Then
     kytu = Trim(Mid(StrMa, vitri * 3 - 2, 3))
     If madau = " " Then madau = Mid(StrDau, vitri, 1)
    End If
    If Mid(text, n + 1, 1) = " " Then
     newtext = newtext & kytu & Trim(madau)
     madau = " "
    Else
     newtext = newtext & kytu
    End If
    Next
    SortVn3 = newtext
    End Function
     
    Function SortVni(text As String) As String
    text = text & " "
    madau = " "
    For i = 1 To Len(text)
    kytu = Mid(text, i, 2)
    vitri = InStr(1, StrVni, kytu, 0)
    If vitri = 0 Or Left(kytu, 1) = " " Or Right(kytu, 1) = " " Or Len(kytu) = 1 Then
     kytu = Mid(text, i, 1)
     vitri = InStr(1, StrVni, kytu, 0)
     If (Asc(kytu) >= 65 And Asc(kytu) <= 122) Or kytu = " " Then
       vitri = 0
     End If
    Else
     i = i + 1
    End If
    If vitri > 0 And kytu <> " " Then
     kytu = Trim(Mid(StrMa, (vitri + 1) * 3 / 2 - 2, 3))
     If madau = " " Then madau = Mid(StrDau, (vitri + 1) / 2, 1)
    End If
    If Mid(text, i + 1, 1) = " " Then
     newtext = newtext & kytu & Trim(madau)
     madau = " "
    Else
     newtext = newtext & kytu
    End If
    Next
    SortVni = Left(newtext, Len(newtext) - 1)
    End Function
    thay đổi nội dung bởi: phamduylong, 10-08-07 lúc 10:38 AM
    pham_duy_long@yahoo.com
    DĐ: 0918 975 460

  19. Có 13 thành viên cảm ơn phamduylong về bài viết này:


Trang 1/4 1 2 3 4 cuốicuối

Thông tin về chủ đề này

Users Browsing this Thread

Hiện có 1 người đang xem đề tài này. (0 thành viên và 1 khách)

Bookmarks

Bookmarks

Quyền Sử Dụng Ở Diễn Ðàn

  • Bạn không thể đăng đề tài mới
  • Bạn không thể đăng trả lời
  • Bạn không thể đăng file đính kèm.
  • Bạn không thể sửa bài viết.
  •  

Mudim v0.8 Tắt VNI Telex Viqr Tổng hợp
Chính tả Bỏ dấu kiểu mới  [Bật/Tắt (F9)]