Mừng Sinh Nhật GPE 11: sáng 25/6 Hà Nội; 1/7 Huế/Đà Nẵng; Trưa 2/7 TPHCM

XLL Add-In Đổi số thành chữ - Tốc độ nhanh tối đa, nhanh hơn 80% các Addins khác

Thảo luận trong 'Các Add-ins cho excel' bắt đầu bởi Nguyễn Duy Tuân, 12 Tháng mười hai 2006.

  1. Nguyễn Duy Tuân

    Nguyễn Duy Tuân Nghị Hách

    XLL Add-In Đọc số thành chữ - Tốc độ nhanh tối đa, nhanh hơn 80% các Add-ins khác

    Excel XLL Add-In Accounting Helper (AccHelper.xll)

    [​IMG]

    (*) Excel Add-In XLL Accounting Helper (AccHelper.xll) được lập trình bằng ngôn ngữ Delphi, đảm bảo tốc độ tính toán nhanh tối đa, tiết kiệm tài nguyên máy, bản thân Add-In được biên dịch ra mã máy (DLL) nên không bị các phần mềm diệt virus như BKAV làm hỏng.

    (*) Chức năng của Accounting Helper:
    + Cung cấp các hàm đọc số thành chữ bằng tiếng Anh, Việt bởi các loại font chữ TCVN3 (ABC), VNI, UNICODE. Các hàm: VND(), USD(), Num2Str().
    + Cung cấp hàm chuyển đổi font chữ từ TCVN3, VNI sang UNICODE. Hàm ToUNC().

    (*) Các file trong bộ Add-In:
    1 - AccHelper.xll
    2 - AccHelperEx.xla (chỉ dùng cho từ Excel 2003 trở về trước để hõ trợ Unicode bởi hàm ToUNC)
    3 - AccHelper.ini (lưu các tham số ngầm định của các hàm, có thể mở và sửa lại cho như ý!)
    4 - Help.xls (Hướng dẫn sử dụng các hàm).
    5 - AccHelperOptions.exe ứng dụng tùy chỉnh cách đọc của hàm VND và USD.

    (*) Nếu máy bạn đã đang cài một Add-In đọc số nào đó có sử dụng tên hàm: VND, USD thì hãy gỡ bỏ nó trước khi cài AccHelper.xll.
    (*) Nếu bạn đã cài Add-In "Accounting Helper" trước, bạn có thể copy đè lên file cũ (AccHelper.xll, AccHelperEx.xla).

    (*) Cài đặt Add-in trong Excel97/2000/2002(XP)/2003:
    + Vào menu Tools, chọn Add-Ins
    + Chọn nút "Browse" và chọn file "AccHelper.xll". Nếu phiên bản Excel trên máy bạn thấp hơn Excel 2007, bạn cần cài thêm Add-In "AccHelperEx.xla" để hỗ trợ các hàm chuyển đổi về Unicode, hàm ToUNC().
    Cách dùng: =ToUNC(VND(12500))

    (*) Cài đặt Add-in trong Excel2007, 2010, 2013 hoặc cao hơn:
    + Bấm vào nút "Office Button" (nút to, tròn ở góc đỉnh bên trái màn hình)
    + Chọn "Excel Options"
    + Chọn "Add-Ins", màn hình phía bên phải, dưới đáy "Manage:" chọn "Excel Add-Ins" cuối cùng chọn "Go".
    + Tại màn hình "Add-Ins" bạn làm như với Excel2003 trở về trước. Bấm chọn "Browse" và chọn file AccHelper.xll.
    + Nếu Office của bạn là 64 bit, hãy chọn file theo đường dẫn "x64\AccHelper.xll"

    (*) Nếu các bước cài đặt trên vẫn không được, bạn hãy copy file AccHelper.xll và (nếu là Excel từ 2003 về trước cài thêm AccHelperEx.xla) vào trong đường dẫn:
    C:\Documents and Settings\YOURUSER\Application Data\Microsoft\AddIns
    YOURUSER: là tên account truy cập WINDOWS.

    (*) Để thay đổi những thông số được thiết lập ngầm định cho các hàm cũng như cách đọc số của các hàm, bạn chạy file "AccHelperOptions.exe".

    (*) Để tìm đọc hướng dẫn chi tiết và các ví dụ, bạn hãy mở file "Help.xls"

    Cấu trúc của hàm VND là:

    Mã:
    [B]VND[/B](Amount, OutputType, Unit1, Unit2, MUnit2, HasGroupingSymbol)				
    		
    	Amount:	 là số tiền cần chuyển đổi thành văn bản.		
    	OutputType:	là một số, nếu giá trị là 1 hàm trả về kiểu chuỗi TCVN3, 2 kiểu chuỗi là VNI, 3 kiểu chuỗi là Unicode - ngầm định (Chỉ dùng từ Excel 2007 trở lên)		
    	Unit1:	là giá trị kiểu chuỗi, chỉ ra loại đơn vị tiền tệ, ngầm định là "đồng"		
    	[COLOR="#FF0000"]Unit2[/COLOR]:	là giá trị kiểu chuỗi, chỉ ra loại đơn vị tiền tệ cho số lẻ, ngầm định là "xu"		
    	[COLOR="#FF0000"]MUnit2[/COLOR]:	là con số được nhân với số lẻ của Amount, quy đổi số lẻ từ đơn vị Unit1 sang Unit2, ngầm định giá trị là 1		
    	HasGroupingSymbol	là giá trị kiểu logic(boolean), nếu là TRUE thì chuỗi kết quả sẽ có dấu phảy (, ) ngăn cách câu, FALSE là giá trị ngầm định không có dấu (, ) ngăn cách.	

    Ví dụ:
    =VND(12.5,,"đồng","hào",10)
    Đọc là "Mười hai đồng và năm hào."

    Cách dùng (đơn giản) trong Sheet:
    =VND(1000000)

    =VND(1000000) kết quả là chuỗi TCVN3 (Nếu Excel 2003 trở về trước)
    =VND(1000000) kết quả là chuỗi Unicode (Nếu từ Excel 2007 trở lên)

    =VND(1000000,2) kết quả là chuỗi VNI
    =VND(1000000,3) kết quả là chuỗi Unicode

    =USD(1000000) kết quả là chuỗi đọc số tiếng Anh

    Để biết được nó tối ưu như thế nào, bạn vào công thức tại ô A1
    =VND(1000000) copy cho tất cả các dòng trong một cột (65536 dòng)

    Bạn cũng làm vậy với hàm đổi số thành chữ của các add-ins khác bạn sẽ thấy sự khác nhau về tốc độ!

    Các bạn đọc thêm hướng dẫn tại file Help.xls hoặc tại đường link dưới đây:
    http://www.bluesofts.net/Products/AddIns/Accounting Helper/Index.htm

    File "Cach_doc_ khac.zip" là các ví dụ về các cách đọc số thành chữ bằng hai thứ tiếng Anh và Việt. Nếu trong thực tế phát sinh cách đọc khác, các bạn có thể đề đạt tại topic này, tôi sẽ cố gắng thực hiện trong khả năng có thể.

    [​IMG]

    Download Accounting Helper v2.2.0 (phiên bản mới nhất, ngày 24/05/2013)
     

    Các file đính kèm:

    Lần chỉnh sửa cuối: 27 Tháng năm 2013
  2. iLike

    iLike Thành viên mới

    Quả thật, tốc độ mark III luôn. Trên cả tuyệt vời. Xin cảm ơn
    Tốc độ này đến từ file .xll or đến từ giải thuật ngắn gọn hơn vậy bạn?
    Bạn có thể bật mí một tí về cách tạo cái loại file .xll này được không?
    Mình rất nôn nóng về cái này "before dead", bạn nhé
     
  3. Mr Okebab

    Mr Okebab Ngon Ngất Ngây

    Qủa thực là nhanh thật. Bật mí đi A Tuân ơi.
     
    anhhung_bk thích bài này.
  4. Nguyễn Duy Tuân

    Nguyễn Duy Tuân Nghị Hách

    Bản chất trong file Excel.exe có chứa file Excel.Xll. Tất cả các hàm Sum, SumIf, Vlookup,...nằm trong file Excel.Xll.

    Xll bản chất là Dll (được dịch ra mã máy). Tạo ra file này phải làm trong C/C++ hoặc Delphi.

    Một hàm chạy nhanh còn phụ thuộc vào thuật toán nữa. Hàm SoThanhChu chạy nhanh thuật toán chỉ là phần nhỏ, lý do chính là vì nó nằm trong file Xll.

    Mình đưa ra để các bạn biết hơn nữa về Excel và có sự so sánh về công nghệ.

    Lập trình trong VBA tốc độ ứng dụng đạt 100% thì:
    VB là 190% chậm hơn (+90%)
    C/C++/Delphi là 40% nhanh hơn (-60%).
     
  5. Mr Okebab

    Mr Okebab Ngon Ngất Ngây

    Vậy thì bó tay rồi. Đành ngồi chờ sung rụng vậy thôi. hu hu...
     
  6. tvhsg2006

    tvhsg2006 Thành viên mới

    Có một ý kiến, bạn có thể đặt tên hàm "SoThanhChu" ngắn lại không, dài quá hơi bất tiện mà thao tác type cũng mất thời gian. VD có thể đổi là DocSo() !?
    Thanks!
     
  7. Chuotdong

    Chuotdong Thành viên thường trực

    Đúng là ý tưởng thì rất hay nhưng bạn viết có vẻ ko trau truốt lắm, biểu diễn nhiều hơn là ứng dụng, về lỗi thế nào các bạn khác cho ý kiến thêm nhé.
    Nhân đây cho mình hỏi thêm là các hàm viết trong VBA có thể có tham số ngầm định - khi không đưa vào thì tự hiểu , chẳng hạn như là hàm đổi số sang chữ có tên là =VND(tham số 1, tham số 2)

    Thì tham số 1 bắt buộc phải tham chiếu rồi, còn tham số 2 thì khi không có: nghĩa là dùng font UNICODE, còn nếu không phải nhập vào mã qui ước ví dụ: TCVN là dùng mà tiếng Việt TCVN3, VNI là dùng mã VNI , Unicode là UNI .v....v....
    =VND(123,45)
    =VND(123,45;TCVN)
     
  8. hai2hai

    hai2hai VNUNi®

    Nhưng tóm lại toàn là những kỹ thuật nhỏ nhỏ. Mình thấy mọi người để ý quá nhiều đến những vấn đề li ti, tiểu tiết (hàm convert như thế này search 1 cái trên google thì ra cả đống luôn). Trên WKT & giaiphapexcel cũng đã rất nhiều những hàm loại này rồi. Cái quan trọng vẫn là mục tiêu, mục tiêu là đổi số thành chữ (đơn giản vậy thôi)

    Cái quan trọng là yêu cầu nghiệp vụ của ứng dụng, thiết kế ứng dụng ra sao, v.v... Mình thấy rất nhiều bạn có những file ứng dụng nhưng cách tạo vẫn còn sơ đẳng hết sức và cách làm thì hoàn toàn sai... nhưng ko ai muốn tham gia các dự án đó cả.

    Cũng có thể trên đây mọi người tạm thời chỉ quan tâm đến từng vấn đề cụ thể thôi mà chưa care gì đến những chuyện lớn hơn. Cái Project, 1 phần mục tiêu của giaiphapexcel mà chị Dung đã từng bàn đến chẳng nhẽ lại ko thực hiện được?
     
    Lần chỉnh sửa cuối: 18 Tháng mười hai 2006
  9. Chuotdong

    Chuotdong Thành viên thường trực

    Xin lỗi nếu có gì làm phật ý bạn. Tôi chỉ muốn nói là nếu bạn cho rằng hàm của mình là hoàn thiện hơn hẳn các hàm khác (ở góc độ Excel tôi là người ứng dụng thuần túy chỉ quan tâm đến điều đó vì tôi ko biết về VBA): cụ thể hơn là hàm của bạn không linh động ko sửa được tên hàm, ko xem được bạn viết có đúng chưa(có thể bạn sẽ hướng dẫn cách convert từ .xla sang .xll), đặt tình huống tôi muốn dùng hàm của bạn một cách nghiêm túc tôi sẽ phải đổi tên hàm cho 1 đống dữ liệu dùng với tên hàm đổi số sang chữ tôi đã dùng rồi (bạn bắt tôi phải đổi lại hết chỉ để ứng dụng hàm của bạn ?), cũng với ý đó tôi mong bạn cải tiến với việc linh động trong việc sử dụng font chữ tiếng Việt như đã góp ý trên. Làm cả hàm chuyển bằng tiêng Anh nữa càng tốt.

     
    Lần chỉnh sửa cuối: 18 Tháng mười hai 2006
  10. Đào Việt Cường

    Đào Việt Cường Cu Tí sành điệu

    Dear Chuotdong,
    ----------------
    Góp ý của bạn rất xác đáng, tuy nhiên chủ đề này chúng ta bàn về:
    AddIns Đổi số thành chữ - Tốc độ nhanh tối đa, nhanh hơn 80% các Addins khác
    chứ không phải là vấn đề ứng dụng của hàm. Nói cách khác tác giả muốn so sánh về mặt công nghệ hơn là nói về giải thuật và phát triển ứng dụng. Lẽ ra kèm theo tập tin Ketoan.xll, anh TuanVNUNI nên cung cấp mã nguồn để các bạn so sánh trên VBA thì mới chính xác được, chứ nếu so với các Add-Ins khác (là Add-Ins nào!?) chúng ta cần bàn đến vấn đề giải thuật nữa.
    Tuy nhiên, theo em hiểu thì chúng ta không thể "nhúng" trực tiếp mã nguồn của chương trình này vào VBA Project được vì có sự khác biệt về ngôn ngữ phát triển(?).
     
    Chỉnh sửa lần cuối bởi điều hành viên: 9 Tháng ba 2008
  11. Nguyễn Duy Tuân

    Nguyễn Duy Tuân Nghị Hách

    Có bao giờ chúng ta bảo tôi muốn dùng hàm VLookup nhưng muốn đổi tên là "Timkiem" không?
    Tất cả các AddIns khi đã biên dịch thành DLL,XLL thì miễn bàn đến vì nó đã là ngôn ngữ máy rồi, còn dạng XLA thì chỉ khi tác giả cho Pass VBA thì mới sửa được tên hàm.

    Trong file Excel của các bạn hàm đọc số thành chữ dùng không nhiều (nó chỉ trong các chứng từ, sổ, báo cáo là chính) nên việc chọn hàm này hay hàm khác có thể không đáng quan tâm. Nhưng nếu bạn dùng các hàm để tính toán nhiều, dùng nhiều thì nên chọn AddIns dạng XLL để đảm bảo tốc độ của ứng dụng.
    (Thuật toán như nhau, tốc độ các hàm trong AddIns XLL nhanh hơn trong VBA rất nhiều ~+60%)
    Mục đích tôi đưa file Ketoan.XLL để các bạn biết là các chuyên gia MS Excel phải làm như vậy để tạo ra các hàm Excel cho người dùng. Các AddIns của Microsoft gần như đều phải làm như vậy Solver, ODBC,...

    Học để làm AddIns XLL, nếu bạn nào biết ngôn ngữ C/C++/Delphi có thể thể trao đổi cùng tôi.
     
  12. Nguyễn Duy Tuân

    Nguyễn Duy Tuân Nghị Hách

    Bạn copy công thức đó cho khoảng 60000 dòng xem thế nào?
    Nói chung chỉ những ai dùng Excel quản lý dữ liệu lớn, phải chờ Calculation ở Statubar từ 0-100% khoảng vài phút thì mới biết tiết kiệm tài nguyên của Excel.

    Có 2 người, tạo ra 2 file Excel cùng có cùng size là 10 MB, nhưng một file thì chạy vù vù, còn một file thì phải đợi hút xong điếu thuốc đã. Cái đó là do chúng ta biết tiết kiệm từng byte của bộ nhớ trong Excel.
     
  13. phamduylong

    phamduylong Thành viên danh dự

    Excel thì còn biết chút chút, C/C++/Delphi thì mù. Bạn có thể giới thiệu cho anh em thấy mối quan hệ giữa C/C++/Delphi và Excel để anh em học hỏi.
     
  14. thephuonglamvo

    thephuonglamvo Thành viên mới

    Anh TuấnVNUNI ơi, tôi là thành viên mới.Tôi thấy hàm sothanhchu của anh rất hay nhưng không xem được code của anh được,anh chỉ tôi với.Anh có thể dùng font Unicode được không?mắc công phải đổi font qua TCVN quá.
     
  15. nctri

    nctri Thành viên mới

    Vui lòng cho hỏi thêm, Add in này chạy trong Excel 2007 được không.
    Tôi thử trong Excel 2007 thì không được. Hướng dẫn thêm nhé
    Cám ơn,
     
  16. Nguyễn Duy Tuân

    Nguyễn Duy Tuân Nghị Hách

    Cài đặt Addin trong Excel2007

    Làm được trong Excel2007 bạn à.
    Cài đặt Addin trong Excel2007:
    + Bấm vào nút "Office Button" (nút to, tròn ở góc đỉnh bên trái màn hình)
    + Chọn "Excel Options"
    + Chọn "Add-Ins", màn hình phía bên phải, dưới đáy "Manage:" chọn "Excel Add-Ins" cuối cùng chọn "Go".
    + Tại màn hình "Add-Ins" bạn làm như với Excel2003 trở về trước. Bấm chọn "Browse" tìm đến file *.xll , * xla....
     
  17. hoangdangtiep

    hoangdangtiep Thành viên mới

    Mình đã làm thế rồi nhưng vẫn không được bạn ạ. Hay có thiết đặt Maco hay có cần đánh dấu nút Add -Ins nào nữa không. Chứ mình cài vào máy ở nhà và cả cơ quan đều không được. Cài xong có cần khởi động lại máy không vậy bạn.
     
  18. Nguyễn Duy Tuân

    Nguyễn Duy Tuân Nghị Hách

    Sau khi bạn đã thực hiện việc cài AddIns như đã hướng dẫn. Trong cửa sổ "Add-Ins" mục "Trợ giúp kế toán v1.0" phải được tick.

    Nếu bạn cài được với các Addins khác mà với Ketoan.xll không được thì mình không biết giải thích thế nào được nữa?
     
  19. xuan_ha919

    xuan_ha919 Thành viên thường trực

    Em đã làm như các Bác hướng dẫn nhưng vẫn không được. Có gì các Bác chỉ ra chỗ sai cho em. Sau khi đã làm được như hình đầu em đánh = sothanhchu(100) lập tức xẩy ra hiện tượng như hình 2 (có file gửi kèm). Sau đó thì Add - in ketoan không còn nữa. Em đang dùng Excel 2002.
     

    Các file đính kèm:

    Lần chỉnh sửa cuối: 16 Tháng mười một 2007
  20. Nguyễn Duy Tuân

    Nguyễn Duy Tuân Nghị Hách

    Accounting Helper v1.1 - Trợ giúp kế toán trên Excel

    Xin giới thiệu mọi người phiên bản mới của loại Add-In này.

    AccHelper.xll - "Accounting Helper" v1.1

    + Đã sửa lại hàm SothanhChu
    + Thêm 2 hàm VND và USD, ToUNC, Num2Str
    + Font chữ được chuyển theo 3 dạng VNI, TCVN3, Unicode

    Mọi người download tại trang đầu theo đường dẫn dưới đây:
    http://www.giaiphapexcel.com/forum/showthread.php?p=6349#post6349

    Xem thêm thông tin tại:
    http://www.bluesofts.net/Products/AddIns/Accounting Helper/Index.htm

    Hy vọng với phiên bản này mọi người từ nay không còn phải lo nghĩ về vấn đề chuyển số thành chữ nữa.
     

Chia sẻ trang này