Tải bản đầy đủ (.docx) (22 trang)

Các hàm tính toán trong kế toán,kiểm toán với excel

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (92.36 KB, 22 trang )

1/ Các Add-in thông dụng dành cho kế toán :
- Asap-Utilities ( />- Power Utility Pak v.6 ( />t=62)
- Name Manager ( />p=407&postcount=17)
- Convert Font - Add-in của OverAC
( />- Solver và các bài tóan về sản xuất
( />2/ Các Macro và hàm VBA thông dụng dành cho kế toán :
- Hàm chuyển số thành chữ
( />- Hàm chấm công ( />- Hàm tính thuế TNCN ( />t=24)
- Macro khấu hao TSCĐ ( />t=25)
- Macro lọc dữ liệu bảng trong Excel
( />3/ Ứng dụng
- Tạo Menu trong Excel ( />t=57)
- Tạo công cụ trợ giúp Help
( />- Tạo bảng chọn dữ liệu trong Excel
( />- Tổng hợp số CT phát sinh vào sổ NKC
( />- Bảng kê tiền bằng Excel ( />t=87)
- Tự động trích ngang dữ liệu trong Excel
( />- Vận dụng công thức mảng để tính Fifo
( />- Vận dụng hàm Sumproduct để tính giá vốn HH theo phương pháp bình quân liên
hòan ( />- Tạo ra dòng 'tổng đến hết trang' và 'số mang sang' cho bảng tính nhiều trang
( />%C3%B2ng-T%E1%BB%95ng-c%E1%BB%99ng-cu%E1%BB%91i-trang)
4/ Các chương trình ứng dụng
- Theo dõi Nhập Xuất Tồn đơn giản bằng Excel
( />- Chương trình quản lý các đơn vị nộp thuế của Maika
( />- Báo cáo Tài chính DN Lớn - Vừa - Nhỏ (Unicode)_File của Maika - ForestC
Vấn đề đặt ra ở đây là theo dõi việc nhập/xuất/tồn vật tư trong một công ty, phân
xưởng nhỏ và có khả năng báo cáo hàng ngày, hàng tháng Với công cụ Excel có
sẵn bạn có thể giải quyết vấn đề này khá nhẹ nhàng.
File Excel theo dõi vật tư tổng quát được thể hiện như hình 1, gồm các cột dữ liệu:
Cột A thể hiện mã sản phẩm, cột B diễn giải mã vật tư, cột C thể hiện đơn vị tính
và tiếp đến là các cột tồn đầu kỳ, tổng nhập, tổng xuất, tổng tồn, tiếp theo là số


lượng nhập/xuất/tồn trong ngày. Ô H3 trong hình là ngày đầu tháng (ở đây là ngày
01/08/2004), để có thể dễ dàng thay đổi cho những ngày tiếp theo, ô K3 sẽ có công
thức = H3 +1 tương tự ở ô N3 là = K3 + 1 Sau này bạn chỉ việc thay đổi ngày ở ô
H3 thì các ô còn lại sẽ thay đổi theo.
Bước kế tiếp bạn sẽ lập công thức cho các cột cần thiết. Ví dụ cột tồn của ngày
01/08/2004 (cột J), cụ thể ở ô J6 sẽ có công thức là = D6 + H6 - I6, có nghĩa là
"tồn đầu kỳ cộng cho nhập trong ngày và trừ đi xuất trong ngày sẽ bằng tồn của
ngày 01/08/2004". Cột tồn của ngày 02/08/2004 (cột M), cụ thể ở ô M6 sẽ có công
thức là = J6 + K6 - L6 và tương tự bạn lập công thức cho các cột tồn của các
ngày còn lại.
Chú ý, để dễ nhận biết ngày chủ nhật, bạn thiết lập tô đậm như trong hình ở cột
tương ứng (ví dụ cột H, ngày 01/08/2004 là ngày chủ nhật). Thực hiện như sau:
đầu tiên bạn chọn khối dữ liệu của bạn (tức là từ ngày 01 đến ngày 31, giả sử bảng
theo dõi của ta lập là 31 ngày), trong ví dụ của tôi là H4:CV1120. Sau đó bạn chọn
Format/Conditional Formatting và nhập vào công thức như hình 2.
Một số điều cần lưu ý khi bố trí dữ liệu:
• Bạn nên để các hàng không có dữ liệu giữa các chủng loại vật tư.
• Diễn giải nên rõ ràng.
• Bạn nên đặt tên khối dữ liệu, khối dữ liệu này bao gồm tất cả các ngày trong
tháng (31 cột x 3 cột/1 ngày). Nên đặt thêm tên cho từng chủng loại vật tư, điều
này sẽ giúp cho bạn dễ dàng lập trình sau này.
• Nên để các hàng trên cùng để diễn giải.
• Tên của các Sheet nên đặt tên không dấu và dễ nhớ.
Bước kế tiếp là thiết kế các thủ tục nhằm thực hiện các báo cáo theo yêu cầu, như
báo cáo xuất theo ngày, báo cáo nhập theo ngày, báo cáo nhập xuất hàng tháng
v.v Bạn sẽ phải định dạng trước tiêu đề, độ rộng của các cột theo yêu cầu báo
cáo Mẫu báo cáo xuất vật tư theo ngày thể hiện ở hình 3. Bạn có thể tham khảo
mã nguồn các thủ tục này trong file mẫu kèm theo bài viết.
Bạn có thể viết thêm thủ tục để cập nhật công thức cho các cột khi thêm vào một
vật tư mới (tức là khi ta thêm vào một hàng mới). Thủ tục thực hiện chức năng này

trong file mẫu được đặt tên là CapNhatCongThuc.
Ngoài ra, bạn còn có thể làm nhiều hơn nữa như ngăn người sử dụng nhập vào
không đúng thao tác (nhập/xuất) và không đúng với ngày muốn thao tác, hay bạn
có thể in ra các thẻ kho trong một tháng Bạn cũng có thể tạo shortcut menu để
giúp thao tác nhanh (trong file mẫu có sẵn module để tạo menu này).
Để tạo file theo dõi cho một tháng mới, bạn có thể save as với tên khác và xóa đi
các dữ liệu của tháng cũ.
Cuối năm là thời điểm cần quyết toán thuế thu nhập cá nhân. Đây là vấn đề không
"nhẹ nhàng" chút nào, nhất là khi qui mô công ty của bạn không nhỏ. Tuy nhiên
bạn đừng lo, bạn có thể lập trình "bắt" Excel xử lý giúp "gánh nặng" này.
Công việc chuẩn bị
- PC cài HĐH Windows 2000 hoặc XP, Microsoft Excel XP hoặc 2003
- Phụ lục số 1 và số 2, kèm theo Thông tư số 81/2004/ TT-BTC ngày 13/8/2004
của Bộ Tài chính.
- Lên kế hoạch tạo các hàm sau:
• PITLC: Hàm tính thuế thu nhập cá nhân dành cho công dân Việt Nam và các cá
nhân khác định cư tại Việt Nam.
• PITFR: Hàm tính thuế thu nhập cá nhân người nước ngoài cư trú tại Việt Nam và
công dân Việt Nam lao động, công tác ở nước ngoài.
• NET2GROSSLC: Hàm qui đổi thu nhập sau thuế (net) sang thu nhập trước thuế
(gross) dành cho công dân Việt Nam và các cá nhân khác định cư tại Việt Nam.
• NET2GROSSFR: Hàm qui đổi thu nhập sau thuế (net) sang thu nhập trước thuế
(gross) dành cho người nước ngoài cư trú tại Việt Nam và công dân Việt Nam lao
động, công tác ở nước ngoài.
Lưu ý: Tên hàm có thể thay đổi cho phù hợp với yêu cầu của bạn.
TẠO HÀM
1. Mở bảng tính (workbook) mới
2. Nhấn tổ hợp phím Alt+F11 để khởi động microsoft Visual Basic
3. Nhấn vào bảng tính của bạn tại cửa sổ VBA project. Ví dụ: VBA project
(book1)

4. Chọn Insert.Module
5. Nhấn đúp vào module mới tạo ra và nhập vào các đoạn mã sau.
1/ Hàm tính thuế thu nhập cá nhân dành cho công dân Việt Nam và các cá nhân
khác định cư tại Việt Nam.
Function pitlc(gross_local)
'Personal Income Tax for Local Vietnamese Citizen
If (gross_local > 0) And (gross_local <= 5000000) Then
pitlc = 0
ElseIf (gross_local > 5000000) And (gross_local <= 15000000) Then
pitlc = (gross_local - 5000000) * 0.1
ElseIf (gross_local > 15000000) And (gross_local <= 25000000) Then
pitlc = 1000000 + ((gross_local - 15000000) * 0.2)
ElseIf (gross_local > 25000000) And (gross_local <= 40000000) Then
pitlc = 3000000 + ((gross_local - 25000000) * 0.3)
ElseIf (gross_local > 40000000) Then
pitlc = 7500000 + ((gross_local - 40000000) * 0.4)
End If
End Function
Bạn được giao nhiệm vụ thực hiện một biểu dữ liệu chi tiết theo dạng bàn cờ như
nhật ký chứng từ. Nhập liệu bằng tay cho biểu này phải dùng scroll bar kéo qua
kéo lại để tìm cho đúng cột dữ liệu, vừa tốn công vừa dễ nhầm. Chi bằng bạn cứ
nhập các thông tin cần thiết, phần việc còn lại hãy cứ để cho Excel làm giúp, đảm
bảo số liệu chính xác 100%.
Ví dụ, chúng ta có một mẫu nhật ký chi tiền mặt (hình 1) với quy ước nhập liệu là
nếu một chứng từ có nhiều tài khoản đối ứng thì nhập trên nhiều dòng khác nhau
nhưng các cột ngày, số chứng từ và nội dung phải giống nhau. Nhiệm vụ được chia
nhỏ thành 3 thủ tục macro để tiện cho việc bảo trì, sửa đổi mã lệnh sau này khi cần
thiết (xin được bỏ qua bước trình bày cách tạo, lưu giữ và quản lý module, các thao
tác này khá đơn giản). Một số điểm cần lưu ý trước khi trình bày mã lệnh của các
thủ tục:

- Để gán giá trị của một cell vào biến, hãy di chuyển đến cell này và dùng thuộc
tính value của cell hiện hành gán cho biến đã khai báo (Bien=ActiveCell.Value).
Xong các lệnh gán, nhớ quay trở về cell cũ trước khi di chuyển.
- Sử dụng địa chỉ kiểu tương đối khi di chuyển cell bằng thuộc tính Offset
(Offset(Row, Column)).
- Dùng một macro thứ tư gọi lần lượt 3 macro trên để hình thành một quá trình
hoàn chỉnh, gán phím tắt cho macro này để tiện sử dụng.
1. Trích ngang dữ liệu theo tài khoản phát sinh. Trong thủ tục này, căn cứ vào số
hiệu tài khoản tại cột TK, số tiền tương ứng được trải ra theo chiều ngang, tiền của
tài khoản nào được điền vào cột mang đúng số hiệu tài khoản đó.
Sub TrichNgang()
Dim Taikhoan As String
Dim ThutuDong, SoCot As Integer
Dim Sotien As Long
Range(“D2”).Select
Lặp đến dòng cuối của danh sách
Do Until ActiveCell.Value = “”
Taikhoan = ActiveCell.Value
ActiveCell.Offset(0, 1).Range(“A1”).Select
Sotien = ActiveCell.Value
Range(“F1”).Select
SoCot = 2
Thực hiện cho đến cột tài khoản cuối cùng. Nếu tìm thấy số hiệu tài khoản
thì điền số tiền lên dòng trên cùng của chứng từ và thoát vòng lặp.
Do Until ActiveCell.Value = “”
If ActiveCell.Value = Taikhoan Then
ActiveCell.Offset(ThutuDong + 1, 0).Range(“A1”).Select
ActiveCell.Value = Sotien
Exit Do
Else

ActiveCell.Offset(0, 1).Range(“A1”).Select
End If
SoCot = SoCot + 1
Loop
Trường hợp không tìm thấy tài khoản thì điền số hiệu tài khoản vào cột cuối cùng
và điền số tiền vào đúng dòng đầu tiên của chứng từ. Bằng không dời con trỏ
xuống đầu dòng dưới và thêm thứ tự dòng 1 đơn vị.
If ActiveCell.Value = “” Then
ActiveCell.Value = Taikhoan
ActiveCell.Offset(ThutuDong + 1, 0).Range(“A1”).Select
ActiveCell.Value = Sotien
End If
ActiveCell.Offset(1, -SoCot).Range(“A1”).Select
ThutuDong = ThutuDong + 1
Loop
End Sub
2. Mang số tiền từ các dòng dưới cộng vào dòng đầu đối với những chứng từ có
hơn một dòng phát sinh. Đối với một chứng từ chi đối ứng với nhiều tài khoản, bạn
phải cộng dồn số tiền của từng tài khoản vào cột tổng cộng và trích ngang số tiền
này vào các tài khoản tương ứng trên cùng một dòng.
Sub CungCTu()
Dim Ngay, Ngay2 As Date
Dim Chungtu, Chungtu2, Taikhoan, Taikhoan2, Noidung, Noidung2 As String
Dim ThutuDong, SoCot, SoDong As Integer
Dim Sotien, Sotien2 As Long
Lặp đến dòng cuối của danh sách
Range(“A2”).Select
Ngay = ActiveCell.Value
ActiveCell.Offset(0, 1).Range(“A1”).Select
Chungtu = ActiveCell.Value

ActiveCell.Offset(0, 1).Range(“A1”).Select
Noidung = ActiveCell.Value
ActiveCell.Offset(0, 1).Range(“A1”).Select
Taikhoan = ActiveCell.Value
ActiveCell.Offset(1, -3).Range(“A1”).Select
Lưu các dữ liệu cần thiết vào biến. Lặp cho đến dòng cuối của danh sách
Do Until ActiveCell.Value = “”
Ngay2 = ActiveCell.Value
ActiveCell.Offset(0, 1).Range(“A1”).Select
Chungtu2 = ActiveCell.Value
ActiveCell.Offset(0, 1).Range(“A1”).Select
Noidung2 = ActiveCell.Value
If Ngay = Ngay2 And Chungtu = Chungtu2 And Noidung = Noidung2 Then
SoDong = SoDong + 1
ActiveCell.Offset(0, -2).Range(“A1”).Select
ThutuDong = ThutuDong + 1
ActiveCell.Offset(0, 3).Range(“A1”).Select
Taikhoan2 = ActiveCell.Value
ActiveCell.Offset(0, 1).Range(“A1”).Select
Sotien2 = ActiveCell.Value
Range(“E1”).Select
SoCot = 5
Lặp đến cột tài khoản cuối cùng. Nếu tìm thấy số hiệu tài khoản thì cộng số tiền
các dòng dưới lên dòng trên cùng của chứng từ, rồi thoát vòng lặp.
Do Until ActiveCell.Value = “”
If ActiveCell.Value = Taikhoan2 Then
ActiveCell.Offset(ThutuDong - SoDong + 1, 0).Range(“A1”).Select
ActiveCell.Value = Sotien2
ActiveCell.Offset(0, -SoCot + 5).Range(“A1”).Select
ActiveCell.Value = ActiveCell.Value + Sotien2

Exit Do
Else
ActiveCell.Offset(0, 1).Range(“A1”).Select
End If
SoCot = SoCot + 1
Loop
ActiveCell.Offset(1, -4).Range(“A1”).Select
Else
SoDong = 0
ActiveCell.Offset(0, -2).Range(“A1”).Select
ThutuDong = ThutuDong + 1
End If
Lưu giữ các giá trị hiện tại để tiếp tục so sánh trong vòng lặp
Ngay = Ngay2
Chungtu = Chungtu2
Noidung = Noidung2
ActiveCell.Offset(1, 0).Range(“A1”).Select
Nếu một chứng từ có nhiều dòng, phải dời con trỏ đến đúng dòng cuối.
If SoDong > 1 Then
ActiveCell.Offset(SoDong - 1, 0).Range(“A1”).Select
End If
Loop
End Sub
3. Xóa các dòng thừa (dòng thứ hai trở đi) ở những chứng từ có nhiều tài khoản đối
ứng, đồng thời xóa cột TK (tài khoản).
Sub XoaDong()
Dim Ngay, Ngay2 As Date
Dim Chungtu, Chungtu2, Noidung, Noidung2 As String
Lưu giữ các giá trị ở dòng đầu để so sánh trong vòng lặp
Range(“A2”).Select

Ngay = ActiveCell.Value
ActiveCell.Offset(0, 1).Range(“A1”).Select
Chungtu = ActiveCell.Value
ActiveCell.Offset(0, 1).Range(“A1”).Select
Noidung = ActiveCell.Value
ActiveCell.Offset(1, -2).Range(“A1”).Select
So sánh lần lượt dòng trên với dòng dưới, nếu xác định là trùng nhau thì xóa các
dòng thừa phía dưới.
Do Until ActiveCell.Value = “”
Ngay2 = ActiveCell.Value
ActiveCell.Offset(0, 1).Range(“A1”).Select
Chungtu2 = ActiveCell.Value
ActiveCell.Offset(0, 1).Range(“A1”).Select
Noidung2 = ActiveCell.Value
ActiveCell.Offset(0, -2).Range(“A1”).Select
If Ngay = Ngay2 And Chungtu = Chungtu2 And Noidung = Noidung2 Then
Selection.EntireRow.Delete
ActiveCell.Offset(-1, 0).Range(“A1”).Select
Else
End If
Ngay = Ngay2
Chungtu = Chungtu2
Noidung = Noidung2
ActiveCell.Offset(1, 0).Range(“A1”).Select
Loop
Xóa cột số hiệu tài khoản (TK)
Columns(“D:D”).Select
Selection.Delete Shift:=xlToLeft
Range(“A1”).Select
End Sub

Hàm SUMIF
Tất cả các nghiệp vụ kinh tế đều được tập hợp ở sheet chứng từ (tạm thời ký hiệu
sheet này là CT). Dữ liệu để tổng hợp số phát sinh được lấy từ sheet này.
Hàm SUMIF có cú pháp như sau:
SUMIF(khối điều kiện, giá trị so sánh, khối tính tổng)
SheetCT có kết cấu như sau: Ngày; Số CT; Diễn giải; TKNợ; TKCó; Số tiền.
/>Sheet tổng hợp số phát sinh: SHTK, Tên TK, PS Nợ, PS Có
/>Công thức PSN ở ô C4= Sumif(CT!D:D,A4,CT!F:F)
PSC ở ô D4= Sumif(CT!E:E,A4,CT!F:F)
Hai công thức trên chỉ khác nhau ở khối điều kiện là TK Nợ và TK Có. Còn giá trị
so sánh là số hiệu của TK đang tổng hợp. Khối tính tổng là khối số tiền.
Sau khi lập xong công thức, chỉ cần sao chép xuống cho những TK tiếp theo.
Ngoài ra cũng có thể tập hợp số phát sinh từ sổ NKC bằng hàm SUMIF tương tự
như trên.
1. Chỉ cần nhập (hoặc copy) số liệu vào các sheet tháng (luu1 đến luu12), các
bảng khác tự động lên báo cáo theo yêu cầu quản lý.
Để sử dụng tốt chương trình Quản lý đơn vị nộp thuế, cần tuân theo các quy
định sau đây:
2. Sau khi nhập hết số liệu trong tháng từ các các bộ thuế đa lên, đội trưởng
cần xem trong phần kiểm tra nếu có gì sai sót cần phải liên hệ với cán bộ
thuế để bổ xung hoặc sửa lại các thành phần.
Các thành phần cần bổ xung hoặc sửa lại gồm có:
- Quy tắc ghi MST: đối với đơn vị đặc thù hoặc đơn vị nộp 2 loại thuế VAT
và tiêu thụ đặc biệt thì phải điền đầy đủ MST. Còn ngoài ra chỉ cần điền 6 số
cuối cùng của MST.
- Cột Trùng: Đối với các đơn vị nộp thuế VAT và tiêu thụ đặc biệt thì sẽ
được ghi = 2 dòng, dòng 1 là dành cho VAT, dòng 2 dành cho thuế TTĐB,
thì dòng 1 phải điền đầy đủ MST, còn dòng 2 có thể ghi tắt 6 ký tự cuối
cùng của MST.
Ngoài trường hợp trên ra, thì là do nhập số liệu sai (1 MST dùng cho 2 đơn

vị) sẽ bị báo Trùng.
- Cột Chưa ghi MST trong tháng : Trong tháng nếu có đơn vị nào mà chưa
điền MST thì chương trình sẽ thông báo để đội trưởng đội thuế bổ xung (liên
hệ với cán bộ nào quản lý đơn vị thiếu MST đó).
Dấu hiệu nhận biết: Cột Chưa ghi MST trong tháng sẽ báo : "Ghi thêm
MST"
- Cột PS tăng MST thông báo đơn vị mới cần bổ xung vào DKDN: Sang
sheet DKDN để bổ xung đơn vị mới
- Cột Ghi Sai MST thông báo cho bạn biết rằng MST của đơn vị đó không
tồn tại! Xem lại!
- Cột Chưa phân công CB thông báo cho bạn biết rằng mã cán bộ của đơn vị
đó chưa điền! Cần bổ xung!
- Cột Bị cắt ở tháng sau : Thông báo cho bạn biết rằng đơn vị này bị cắt mất
ở tháng sau.
Nếu tháng sau đơn vị nào đó không còn tồn tại nữa thì ta vẫn phải giữ cho
đến thời điểm cuối năm mới được loại bỏ, việc này đảm bảo sự thống nhất
của số liệu phục vụ cho việc kiểm tra được nhất quán
3. Trong tháng, nếu nhập sai số liệu thì chỉ được phép xóa số liệu chứ không
được cắt ô hoặc dòng để đảm bảo cho chương trình có thể vận hành một
cách chính xác.
4. Dòng cộng tổng các loại hình (A, B, C, D) thì phải đánh mã là TA, TB,
TC, TD phục vụ cho công tác kiểm tra kép.
5. Mã cán bộ đánh thứ tự từng CB từ 1 n
6. Mã đơn vị: A cho Công ty, B cho Doanh nghiệp, C cho tổ hợp, D cho hộ
cá nhân.
7. Sheet DSam sẽ thông báo danh sách các doanh nghiệp bị (-) thuế 3 tháng
liên tiếp tính đến thời điểm tháng yêu cầu.
8. Sheet kiemtradn dùng để kiểm tra số liệu tổng hợp của đơn vị theo yêu
cầu.
9. Sheet ktcanboluyke dùng để tổng hợp số liệu tất cả các tháng của 1 cán bộ

thuế.
10. Sheet ktraCBthang: dùng để kiểm tra theo 2 chỉ tiêu: kiểm tra CB theo
y/c và kiểm tra theo tháng y/c.
11. Các sheet tinh am thue và luyke là các sheet xử lý số liệu phục vụ cho
các Bảng kiểm tra tổng hợp.
12. Sheet DKDN dùng để bổ xung thêm đơn vị mới phát sinh và đăng ký
danh sách cán bộ thuế.
13. Số liệu sử dụng trong chương trình không phải là số liệu thực tế chỉ có
tính chất minh họa.
Nếu bạn là người thường xuyên sử dụng Excel, ngoài những hiểu biết về các
khả năng sẵn có của Excel, bạn hãy chú ý đến các add-in và cài thêm vào.
Các Add-in rất tiện dụng, chúng sẽ giúp bạn những tiện ích nhằm giảm thiểu
công sức, tăng thêm hiệu quả khiến bạn nhẹ nhàng hơn khi làm việc với
Excel.
Cài Add-in như thế nào, các bạn có thể tìm đọc trên diễn đàn, nếu bạn ít vào
EFC, bạn có thể tìm hiểu mọi vấn đề qua Topic : "Hướng dẫn Tổng hợp về
Excel" (Phần 3 - Bài 2 : Add-in và Phần 5 - Xây dựng thư viện chức năng do
người dùng định nghĩa)
Giới thiệu một số add-in, bạn nên có :
- Add-in tổng quát : Bạn có thể chọn một trong những add-in sau : Asap-
Utilities, PUP6, Excel Utilities, SpreadSheet Assistant Tất cả đều có trên
diễn đàn nhưng tôi thì thích Asap hơn cả.
- Add-in về di chuyển qua lại giữa các Sheet : Được giới thiêu trong đề tài
cùng tên, các bạn có thể Down xuống. Đánh giá các Add-in này, tôi thích
Workbook Navigation.xla nhất.
- Add-in về tên và nhãn : Name Lister (File của Levanduyet) có trong PUP6,
hoặc nếu bạn không cài PUP6, bạn có thể cài NameLister riêng
Ngoài ra, một số Add-in bạn nên chuẩn bị sẵn cho công việc KT sau này, lúc
bạn gặp phải, đôi khi bạn sẽ thấy chúng rất hữu ích. Đó là :
-Add-in : (có thể là UDF : Hàm người dủng tự viết ) Sắp xếp tiếng Việt

-Add-in : Chuyển số thành chữ (Add-in Name Manager của Maika -
ForestC)
-Add-in : Convert Font (đặc biệt là bản của OverAC đang được thảo luận sôi
nổi trên diễn đàn)
-Add-in : Kiểm tra MST
Hàm người dùng tự biên soạn gồm :
- Hàm chấm công (Bài của Levanduyet)
- Hàm tính thuế TNCN
- Hàm FIFO và LIFO
- Analysis Toolpak là phần mềm bổ sung đi theo Excel, nó cung cấp một bộ
công cụ đơn giản hóa việc phân tích những dữ liệu phức tạp. Khi cài
Microsoft Office , bạn nên chọn cài thêm Add-in này, ở đây tôi không bàn
nhiều về chức năng cũng như hiệu quả của nó, tôi chỉ giới thiệu cùng các
bạn những Add-in nào nên có thôi.
Với add-in này, bạn sẽ có thêm đủ lọai hàm đặc biệt trong Excel. Nó cung
cấp 34 hàm tài chính, 4 hàm ngày giờ, 7 hàm tóan và lượng giác, 2 hàm
thông tin và 40 hàm k˜ thuật. Một số hàm rất thông dụng về ngày giờ mà ta
thường sử dụng như : WORKDAY, EDATE, EOMONTH,
NETWORKDAYS, YEARFRAC
Bạn cũng nên chọn cài đủ những phần mềm bổ sung như : Lookup Wizard,
Conditional Sum Wizard ( tương tự hàm Sumif giúp bạn xây dựng công thức
mảng bằng cách đặt ra hàng lọat câu hỏi và hướng dẫn bạn, nên ta sẽ thấy
nhẹ nhàng hơn). Nếu bạn nào đã có A-Tool của Tuanktcdcn giới thiệu, bạn
sẽ thấy A-Tool còn nhiều cái thiết thực và hiệu quả hơn Conditional Sum
Wizard nữa.
On Error GoTo thoat
Phát biểu On Error có tác dụng "bật" trình quản lý lỗi hệ thống. Nghĩa là khi
có lỗi phát sinh, với khai báo này, người lập trình có thể biết được lỗi thông
qua thuộc tính Number của đối tượng Err (Debug.Print Err.Number). Cú
pháp của On Error có thể viết ở các dạng sau:

Syntax
On Error GoTo line
On Error Resume Next
On Error GoTo 0
The On Error statement syntax can have any of the following forms:
StatementDescription
On Error GoTo line Enables the error-handling routine that starts at line
specified in the required line argument. The line argument is any line label
or line number. If a run-time error occurs, control branches to line, making
the error handler active. The specified line must be in the same procedure as
the On Error statement; otherwise, a compile-time error occurs.
On Error Resume NextSpecifies that when a run-time error occurs, control
goes to the statement immediately following the statement where the error
occurred where execution continues. Use this form rather than On Error
GoTo when accessing objects.
On Error GoTo 0 Disables any enabled error handler in the current
procedure.
(Trong code của bạn select phát biểu On Error rồi ấn F1 để biết thêm chi
tiết).
Nếu bạn không khái báo On Error thì khi có lỗi phát sinh trong khi thực thi
một thông điệp hệ thống sẽ đưa ra mã lỗi và mô tả lỗi (bằng tiếng Anh). Một
điều đáng nói ở đây là nếu bạn đang có ý định điều hướng chương trình bằng
việc sử dụng Goto <Label>: (trong đó Label là một nhãn được đặt trước
dòng lệnh bắt đầu xử lý lỗi) thì bạn phải khai báo một phát biểu Exit
Sub/Function/Property (tuỳ thuộc dạng thủ tục) ngay trước <Label>:
Có thể minh hoạ cấu trúc xử lý lỗi như sau:
Sub InitializeMatrix(Var1, Var2, Var3, Var4)
On Error GoTo ErrorHandler
. . .
Exit Sub

ErrorHandler:
. . .
Resume Next
End Sub
Để các bạn dễ hiểu hơn, thủ tục Worksheet_Change có thể được viết lại như
sau:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo thoat
If Target.Value = "" Then Exit Sub
If Target.Column = 1 Then
If WorksheetFunction.CountIf(Columns("A:A"), Target.Value) > 1 Then
MsgBox "Da co roi"
Target.Select
ActiveCell.ClearContents
End If
End If
Exits Sub' Cần chèn thêm khai báo này trước nhãn thoat
thoat:
' Các xử lý lỗi của bạn, ví dụ:
MsgBox "Loi: " & Err.Number & " - " & Err.Description, vbExclamation,
"Loi he thong"
End Sub
Hoặc nếu bạn không muốn xử lý lỗi mà muốn ngưng mọi thực thi khi có lỗi
phát sinh thì sử dụng phát biểu Resume Next như sau:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next 'Thay phát biểu GoTo bằng Resume Next
If Target.Value = "" Then Exit Sub
If Target.Column = 1 Then
If WorksheetFunction.CountIf(Columns("A:A"), Target.Value) > 1 Then
MsgBox "Da co roi"

Target.Select
ActiveCell.ClearContents
End If
End If
End Sub

×