Dùng VBA để sửa lỗi chính tả theo Chuẩn tiếng việt

Thảo luận trong 'Ứng dụng Excel' bắt đầu bởi vannguyendinh, 5 Tháng ba 2008.

5,846 lượt xem

  1. vannguyendinh

    vannguyendinh Thành viên sơ cấp

    Bài viết:
    3
    Đã được thích:
    0
    Nơi ở:
    Ha Tinh
    Chào các Bạn!
    Mình thường xuyên phải làm việc với danh sách các đối tượng (số lượng lớn), chủ yếu là nguồn dự liệu do các đơn vị cấp dưới lập lên bằng Excel. Nhưng trong quá trình cập nhật bị sai quy chuẩn tiếng Việt. Làm thế nào để phát hiện ra những tên bị sai???.
    VD:
    Phan ThịThu Thủy
    Nguuyễn Thị Phương Lan
    Nguyêễn Trung Kiên
    dĐào Thị Minh
    Nguyênx Đức Ngọc
    Ngyuễn Đình Nam
    Võ ĐứcQuyết
    NNguyễn Viết Cơ
    TrầnVăn Quốc
    Hoaàng Xuân Mai
    Nguyễn Thj Sâm
    Truơng Quốc Thìn
    Nguyễ Đắc Vui
    PhanVăn Kiều
    ...
    Không thể dò tìm bằng mắt thường khi một Sheet có nhiều nghìn người và tổng số đối tượng là hàng triệu trong một thời gian ngắn
    Mong các cao thủ chỉ giúp
    Xin cảm ơn!!!
     
    #1
  2. adam_tran

    adam_tran Steel Partner

    Bài viết:
    1,373
    Đã được thích:
    32
    Nơi ở:
    Goooogle
    Coding VBA thì rất mất thời gian và không đảm bảo chính xác, bạn chỉ có thể tìm 1 phần mềm kiểm tra lỗi chính tả tương tự như check spelling trong Word mà thôi.

    Cách khác là bạn dùng chức năng Find and Replace để thay thế từ từ các lỗi, cách này không tuyệt đối sửa hết lỗi nhưng cũng loại bỏ bớt các lỗi thường gặp nhất.
     
    #2
  3. vannguyendinh

    vannguyendinh Thành viên sơ cấp

    Bài viết:
    3
    Đã được thích:
    0
    Nơi ở:
    Ha Tinh
    Cảm ơn bạn!
    Tóm lại có 3 phương án:
    1. Coding VBA
    2. Kiếm 1 phần mềm kiểm tra lỗi chính tả
    3. Find and Raplace để thay thế
    Phương án 3 là không ổn rồi, vì có rất nhiều kiểu sai sót mình không thể thống kê hết được.
    Rất mong được các đồng nghiệp chỉ giúp mình phương án 1 hoặc 2
     
    #3
  4. adam_tran

    adam_tran Steel Partner

    Bài viết:
    1,373
    Đã được thích:
    32
    Nơi ở:
    Goooogle
    Coding VBA thì nó cũng chỉ là giải thuật tìm kiếm, đối chiếu trên 1 thư viện các từ vựng đúng (các từ vựng đã được ai đó viết sẳn trên thư viện DLL) và đưa ra các đề nghị tương ứng qua 1 phép so sánh nào đó. Giải thuật này chẳng dễ dàng gì và mất cả vài tháng mởi coding xong. Hoặc phải định nghĩa 1 thư viện các lỗi, mà điều này thì trở lại phương án 3 - mất công hơn nhiều.
    Bạn chưa biết gì về VBA thì phải, bài toán này dùng VBA là phương án.. dỡ nhất và khó khăn nhất.
     
    #4
  5. vannguyendinh

    vannguyendinh Thành viên sơ cấp

    Bài viết:
    3
    Đã được thích:
    0
    Nơi ở:
    Ha Tinh
    Việc tìm kiếm và thay thế để trả về giá trị đúng là điều bất khả thi, ví dụ: Ttrần Thị Vui và Nguyễn TấtThắng có cùng lỗi là "TT" thì không thể thay thế được mà tôi chỉ muốn phát hiện ra lỗi "TT" rồi chuyển trỏ đến để sửa.
    Mong bạn hướng dẫn một cách khái quát nhất và thuật toán cơ bản còn việc thực hiện thì mình tự làm lấy.
    Xin chân thành cảm ơn!
     
    #5
  6. adam_tran

    adam_tran Steel Partner

    Bài viết:
    1,373
    Đã được thích:
    32
    Nơi ở:
    Goooogle
    Tôi không đủ khả năng và kiến thức viết ra thuật toán này. Lướt qua 1 vòng trên Internet thì tôi cũng thấy đây là một thuật toán khá khó khăn và người ta cũng không sử dụng VBA để giải quyết. Nếu để tiếp cận bài toán này để nghiên cứu thì bạn có thể tìm hiểu các giải thuật trên Internet, nhưng thư viện của nó cũng phải lấy cái có sẳn (1 file DLL nào đó) chứ không thể nào tự viết cho mình được. Còn nếu dùng bài toán để giải quyết công việc của bạn hiện tại thì thật không hiệu quả chút nào. Nếu là tôi, tôi chỉ copy file và quăng ra cửa hàng vi tính, 1 ngày là xong.

    http://www.echip.com.vn/echiproot/weblh/sdpm/2000/ud/slcttv/slcttv.htm

    http://www.echip.com.vn/echiproot/weblh/qcbg/duynghi/ampad/readme.htm

    Và nhiều nhiều nữa...
     
    #6
  7. SA_DQ

    SA_DQ Thành viên thân thiết

    Bài viết:
    428
    Đã được thích:
    34
    Nơi ở:
    HCM city
    Ðề: Dùng VBA để sửa lỗi chính tả theo Chuẩn tiếng việt

    Thấy chuyện này hay, mình xin có vài í như sau:

    Sửa họ trước cái đã!

    Thường CQ cỡ ngàn người cũng chỉ 80 họ là cùng! Ta chú tâm vô cái này trước để có thêm kinh nghiệm;

    Bạn lập 1 danh sách 80 cái họ (Như ADAM TRẦN đã nêu);
    Viết 1 code tìm kiếm, mà câu lệnh chủ yếu trong code sẽ là:

    Set sRng = Rng.FIND(Cls.value, , xlFormulas, xlPart)

    Nếu tìm thấy thì đánh dấu hay ghi ngay bên cột cạnh nó trị Cls.Value í (để ta sau khi chạy code sẽ đối chiếu)

    Hiện tại bạn tự lập danh sách các họ trong CQ bạn là khó; Bạn có thể tìm file nhân sự nào đó cở vài ngàn người & lập danh sách này sẽ tốt hơn;

    Chuyện này chỉ nên làm với họ thôi nha; Với đệm & tên thì làm thủ công đi bạn!
     
    #7

Chia sẻ trang này