Bổ sung đọc số tiếng Việt :cool2:
http://www.pcworld.com.vn/pcworld/info/article/2006-6/TVExcel.zip Nhân đọc bài "Tiện ích Excel chuyển số sang chữ" trong TGVT số 4/2006, tôi xin đóng góp thêm tiện ích TVEXCEL.XLA phục vụ cho việc đọc số tiếng Việt (ĐSTV). Tiện ích này có hộp thoại giao diện tiếng Việt giúp người sử dụng dễ dàng chọn các mục theo yêu cầu (các phần việc còn lại do chương trình tự xử lý.
MỘT SỐ TÍNH NĂNG
• ĐSTV làm việc trên nền Excel 2000/XP/2003, không làm việc tốt trên Excel 97 (hoặc cũ hơn) vì không hỗ trợ Unicode.
• Hỗ trợ 3 bảng mã VNI, ABC, Unicode. ĐSTV tự chọn bảng mã của ô hiện hành theo tên font. Nhóm VNI Windows có tên font "VNI-*"; nhóm TCVN3-ABC có tên font ".VN*"; nhóm Unicode là các tên font khác, do tên font Unicode không có đặc điểm nhận dạng chung nên không xác định chính xác. Do đó, nếu bạn sử dụng các bảng mã khác thì ĐSTV sẽ coi như là Unicode. Để thể hiện chữ Việt đúng trên form, ĐSTV cần các font sau cho 3 bảng mã:
+ Unicode: Arial, Times New Roman
+ Vni Windows: VNI-Times
+ TCVN3-ABC: .VnTime
• Tự chọn ô có số (ô nguồn) cuối cùng bên phải của dòng phía trên gần ô cần ghi đọc số nhất (ô đích). Điều này phù hợp với ô tổng cộng (ô nguồn) là ô cuối cùng bên phải của bảng tổng hợp số liệu ô ghi tổng kết bằng chữ (ô đích) nằm ở dòng dưới ô tổng cộng. ĐSTV cho phép bạn chọn lại 1 ô nguồn khác bất kỳ trên bảng tính (trừ ô đích).
• Do cách đọc số thập phân không thống nhất giữa các loại đơn vị (một đồng năm mươi hai xu, một đơn vị năm mươi hai phần trăm,...) nên ĐSTV chỉ đọc phần nguyên (sau khi làm tròn số) của số. Độ lớn của số không giới hạn (một số ứng dụng chỉ xử lý đến 15 chữ số). Số có thể là giá trị của một ô, kết quả trả về từ công thức trên bảng tính hoặc nhập số trực tiếp vào form.
• Cho phép thay đổi linh hoạt cách đọc số qua chuỗi nhập bất kỳ (có thể đưa vào công thức các chuỗi như "Tổng cộng", "đồng", "mét",... ) kết hợp biến docso và nhomngan. Kết quả đọc số thể hiện ngay trên form.
• Có thể ghi kết quả ra ô đích trên bảng tính bằng công thức (sẽ tự cập nhật đọc số khi ô nguồn thay đổi) hoặc bằng chuỗi.
• Thể hiện tình trạng hoạt động của ĐSTV trên form giúp người sử dụng dễ dàng.
CÁCH SỬ DỤNG
Giải nén tập tin TVEXCEL.ZIP (tải về từ
www.pcworld.com.vn) để lấy tập tin TVEXCEL.XLA. Bạn có thể mở trực tiếp tập tin TVEXCEL.XLA để sử dụng, nhưng tốt nhất nên cho nó hoạt động cùng Excel để khai thác các hàm đọc số như hàm của Excel bằng cách: vào menu Tools > Add-Ins, chọn Browse rồi duyệt tìm đến tập tin TVEXCEL.XLA, chọn nó rồi nhấn OK. Sau đó, trên thanh menu Excel sẽ có thêm menu Tiếng Việt và menu con Đọc số tiếng Việt. Bạn có thể sử dụng ĐSTV bằng 2 cách:
I. Sử dụng hàm
TVEXCEL cung cấp các hàm sau:
Hàm Công dụng
DocSoVni(số) Đọc số mã VNI Windows
DocSoVniH(số) Đọc số mã VNI Windows (ký tự đầu viết hoa)
DocSoAbc(số) Đọc số mã TCVN3-ABC
DocSoAbcH(số) Đọc số mã TCVN3-ABC (ký tự đầu viết hoa)
DocSoUni(số) Đọc số mã Unicode
DocSoUniH(số) Đọc số mã Unicode (ký tự đầu viết hoa)
NhomNgan(số) Định dạng số sang dạng 0.000
Bạn sử dụng các hàm này giống như các hàm của Excel, chú ý bảng mã đang sử dụng mà chọn hàm cho phù hợp.
Ví dụ: ô B12 sử dụng font .VnTime (bảng mã TCVN3-ABC) có giá trị 1234
Công thức Kết quả trả về
=DocSoAbc(B12) một ngàn hai trăm ba mươi bốn
= "Tổng cộng số tiền là " & DocSoAbc(B12) Tổng cộng số tiền là một ngàn hai trăm ba mươi bốn
=DocSoAbc(B12) & " (" & NhomNgan(B12) & ")" một ngàn hai trăm ba mươi bốn (1.234)
II. Sử dụng hộp thoại
Từ bảng tính Excel:
- Chọn 1 ô nguồn để làm nơi ĐSTV sẽ ghi công thức đọc số vào bảng tính (không hoạt động khi bạn chọn nhiều ô nguồn).
- Chọn menu Tiếng Việt --> Đọc số tiếng Việt, form TVEXCEL Doc so tieng Viet xuất hiện. Trong form (từ trên xuống) có những mục sau:
1. Bảng thông báo tình trạng: Cho biết tình trang hiện tại và gợi ý cho bạn cách xử lý phù hợp.
2. Nguồn dữ liệu:
- Số từ ô nguồn: để lấy giá trị từ 1 ô trên bảng tính. Bạn có thể thay đổi địa chỉ ô nguồn.
- Tự nhập số: bạn tự nhập số vào hộp nhập (chỉ nhập số nguyên). Nếu chọn mục này, ĐSTV chỉ cho ghi vào bảng tính dạng chuỗi.
3. Địa chỉ ô nguồn: Cho phép thay đổi địa chỉ ô nguồn qua cột và dòng. ĐSTV sẽ cập nhật lại theo dữ liệu ô nguồn mới chọn.
4. Số từ ô nguồn/ Tự nhập số: Dữ liệu từ ô nguồn hoặc số do bạn nhập vào.
5. Số định dạng 0.000:
Nếu Số từ ô nguồn là số, ĐSTV sẽ làm tròn số và định dạng số theo dạng 0.000 không lệ thuộc vào khai báo Digit grouping symbol trong Regional and Language Options của Control Panel.
6. Cách đọc số:
Cho phép thay đổi linh hoạt cách đọc số bằng bàn phím qua chuỗi kết hợp 2 biến docso và nhomngan. 2 biến này có hiệu lực khi trong Cách đọc số có chuỗi "docso" hoặc "nhomngan" (không phân biệt chữ hoa, thường), cần chọn kiểu gõ bàn phím phù hợp với bảng mã nhập tiếng Việt.
- Biến docso: chuyển số sang cách đọc tiếng Việt.
- Biến nhomngan: định dạng số theo dạng 0.000
Ví dụ: ô nguồn A1 sử dụng font Arial (bảng mã Unicode) có giá trị là 1233,5
Cách đọc số (bạn tự nhập vào) Kết quả đọc số
1
Tổng cộng số tiền là docso đồng (nhomngan). Tổng cộng số tiền là một ngàn hai trăm ba mươi bốn đồng (1.234).
2
Danh sách này có docso thí sinh (nhomngan). Danh sách này có một ngàn hai trăm ba mươi bốn thí sinh (1.234).
3
Tổng khối lượng là docso kg Tổng khối lượng là một ngàn hai trăm ba mươi bốn kg
4
Danh sách này có nhomngan thí sinh Danh sách này có 1.234 thí sinh
Những thay đổi trong Cách đọc số sẽ được cập nhật trong Kết quả đọc số.
7. Kết quả đọc số: Cho biết kết quả đọc số theo Cách đọc số. Kết quả này được ghi vào ô đích nếu chọn lệnh Ghi đọc số (nếu bảng tính bị khóa thì Ghi đọc số không hiệu lực).
8. Ghi dạng công thức/ chuỗi:
- Ghi dạng công thức: sẽ ghi công thức vào ô đích. Khi ô nguồn thay đổi giá trị thì công thức sẽ trả về kết quả mới theo giá trị ô nguồn. Ví dụ công thức tại ví dụ 1 sử dụng mã Unicode sẽ được ĐSTV ghi vào ô nguồn:
="Tổng cộng số tiền là " & DocSoUni(A4) & " đồng (" & NhomNgan(A4) & ")."
Nếu sử dụng thạo công thức, bạn có thể chỉnh lại công thức không cần đến hộp thoại.
- Ghi dạng chuỗi: sẽ ghi vào ô đích chuỗi trong Kết quả đọc số.
9. Cách viết hoa số:
- Một triệu...: sẽ ghi hoa ký tự đầu của chuỗi đọc số. Ví dụ: Một triệu hai trăm ngàn.
- một triệu...: sẽ ghi thường ký tự đầu của chuỗi đọc số. Ví dụ: một triệu hai trăm ngàn.
10. Bảng mã: Cho biết ô đang chọn sử dụng bảng mã nào và ĐSTV sẽ chọn công thức phù hợp với bảng mã đang chọn.
TVEXCEL còn một số vấn đề cần trao đổi với các bạn để chương trình hoàn thiện hơn:
- Một ngàn triệu đọc là một tỷ. Vậy một ngàn tỷ và một triệu tỷ đọc là gì? Số 1.000.000.000.000.000.000 đọc là một tỷ tỷ có đúng không?
- Theo sách giáo khoa, số "1,2" đọc là một đơn vị hai phần mười. Cách đọc này chính xác. Nhưng nếu đọc một đồng hai phần mười thì hơi lạ tai. Có cách đọc số thập phân nào áp dụng chung cho các loại đơn vị không?
- Làm thế nào để nhận dạng tên 1 font nào đó là Unicode?
Phạm Duy Long
Trung tâm dạy nghề huyện Lai Vung, Đồng Tháp
pham_duy_long@yahoo.com |<< << >> >>|