Dùng hàm “Đọc số thành chữ VND và USD” với thủ thuật Name và hàm Macro4

Dùng hàm “Đọc số thành chữ VND và USD” với thủ thuật Name và hàm Macro4

Chủ đề này đã có từ rất lâu trên GPE, thay vì viết hàm bằng VBA để đọc số thành chữ thì tác giả lại dùng công thức dưới dạng Name để thực hiện. Ngoài ra, qua góp ý của các thành viên, tác giả sử dụng thêm hàm MACRO4 GetCell để giúp cho việc sử dụng các Name được linh động hơn.

Qua thử nghiệm, đọc công thức bằng Name hoạt động tốt trên các phiên bản Excel 2003 → 2013. Đối với phiên bản Excel 2007, do Microsoft nâng cấp từ Excel 2003 bị thiếu một thành phần nào đó nên hàm sẽ không chạy được, tuy nhiên bạn có thể khắc phục điều này bằng cách cài đặt bản vá lỗi Excel 2007 Service Pack 3


Giao diện Excel 2003



Giao diện Excel 2007



Giao diện Excel 2013

Chuyển Name sang tập tin khác

Để chuyển các Name sang tập tin của bạn đang làm việc, bạn làm theo các bước sau:


  1. Bạn mở file có chứa name đọc số (Name_doc_so_VND.xls hay Name_doc_so_USD.xls), đồng thời mở tập tin của bạn lên.
  2. Chuyển qua tập tin Name_doc_so_VND.xls, nhấp phải chuột lên tên Sheet “DocSoVND” trên Sheet Tab, chọn Move or Copy…. Tại hộp To book bạn chọn tên tập tin của bạn cần chuyển Name vào và tích chọn ô Create a copy rồi bấm nút OK.
  3. Đóng tập tin Name_doc_so_VND.xls
  4. Trong tập tin của bạn hãy xóa Sheet DocSoVND vừa được chép sang. Vậy là tất cả các Name của tập tinName_doc_so_VND.xls đã được chuyển sang tập tin của bạn.





Cách sử dụng công thức

Cú pháp: =IF(ROW(ô cần đọc số),VND) → đọc số sang VND
=IF(ROW(ô cần đọc số),USD) → đọc số sang USD

Ví dụ: Tại ô A1 đang chứa giá trị 5,555,000 VND, bạn muốn đọc thành chữ tại ô A2 thì bạn dùng công thức với cú pháp sau:
=IF(ROW(A1),VND) → kết quả là: “Năm triệu năm trăm năm mươi lăm nghìn đồng.”


Thủ thuật đặt tên (Define Name) cho hàm Macro4





Bước 1:
 Thiết lập tham chiếu động

Đặt các Name với các tham chiếu như sau:

Code:
GetRow0    =ROW(!$A$1)
GetRow      =MID(GET.NAME("GetRow0"),2,FIND("(",GET.NAME("GetRow0"))-1)
GetRC        =SUBSTITUTE(REFTEXT(!$A$1),1,"")
VT               =GET.CELL(6,INDIRECT(GetRC,FALSE))
Myref          =MID(VT,FIND(GetRow,VT)+4,FIND(")",VT)-FIND(GetRow,VT)-4)
Quan trọng nhất là Name cuối cùng "Tham chiếu của tôi" (Myref)... Sau này ta sẽ dùng nó trong hầu hết các công thức...

Các bạn cũng đừng vội tìm hiểu ý nghĩa các name này... Ta sẽ bàn nó trong một dịp khác, cứ "thuộc lòng" và copy nó cho vào máy tính trước đi nhé.

Bước 2: Thiết lập Name tính toán

Ví dụ bạn muốn lấy ColorIndex cũa một ô (cell), ta dùng hàm GET.CELL(63,Cell cần tính)... Bây giờ sẽ được thay thế bằng một name

Code:
CellColor =GET.CELL(63,INDIRECT(Myref))+0*NOW()
Ghi chú: Việc thêm 0*NOW() vào ko làm thay đỗi kết quả, chỉ là giúp cho nó cập nhật sự thay đổi mỗi khi bảng tính có sự thay đổi và nơi nào mà tham chiếu là một ô thì được thay bằng INDIRECT(Myref)

Bây giờ để lấy ColorIndex của một ô nào đó thì ta dùng công thức sau:

Code:
=IF(ROW(ô cần lấy ColorIndex),CellColor)
Ví dụ: Lấy CorlorIndex tại ô A1, ta sẽ có công thức:

Code:
=IF(ROW(A1),CellColor)

Ví dụ thêm:


Ta cần tính giá trị của một dãy các phép toán đang chứa trong ô nhưng được định dạng Text... Ví dụ như ô A1 đang chứa chuỗi biểu thức: 5*4-6+3

Ta sẽ đặt Name:

Code:
Calc=EVALUATE(INDIRECT(Myref))
Và công thức tại ô A2 trong bảng tính sẽ là:

Code:
=IF(ROW(A1),Calc)      → kết quả là 17
Việc đặt Name cực chỉ một lần nhưng việc sử dụng thì vô cùng linh động... Tất cả gói gọn trong một cú pháp:

Code:

=IF(ROW(ô tham chiếu),Name)
Lưu ý khi mở file: Rất có thể bạn sẽ nhận được thông báo rằng trong tập tin có chứa Macro4, xin yên tâm và cứ bấmYES (hoặc Enable) để cho các hàm Macro4 hoạt động.

Share on Google Plus