Hàm NGAYTHANG Viết một hàm không có đối số, hàm trả về một giá trị mang kiểu chuỗi với ý nghĩa là thứ, ngày, tháng, năm của hệ thống.. Hàm có một đối số mang kiểu ngày tháng Date Hà
Trang 1BÀI TẬP CHƯƠNG III
KỸ THUẬT LẬP TRÌNH VBA Bài tập 3.1 Hàm NGAYTHANG()
Viết một hàm không có đối số, hàm trả về một giá trị mang kiểu chuỗi với ý nghĩa là thứ,
ngày, tháng, năm của hệ thống
Hướng dẫn:
'Ham tra ve thu, ngay thang nam cua he thong
Public Function Ngaythang() As String
'Khai bao bien cuc bo
Dim Thu As String
Dim Ngay, Thang, Nam, Tam As Integer
'Lay gia tri ngay, thang, nam
………
'Lay gia tri thu trong tuan
………
'Gan ten ham voi gia tri tra ve gom thu, ngay, thang, nam
End Function
Bài tập 3.2 Hàm AMLICH()
Viết một hàm dùng để trả về một năm âm lịch
Hàm có một đối số mang kiểu ngày tháng (Date)
Hàm trả về một giá trị mang kiểu chuỗi (String) với nghĩa là năm âm lịch tương ứng
Hướng dẫn:
B1: Tính dư can và dư chi
Dư can là dư số của phép chia năm cho 10
Dư chi là dư số của phép chia năm cho 12
B2: Tính can và chi theo bảng sau:
Trang 23 Quý 3 Hợi
'Ham tra ve nam am lich
Public Function Amlich(ByVal Bienngay As Date) As String
'Khai bao bien cuc bo
Dim Ducan, Duchi As Byte
Dim Can, Chi, Namamlich As String
'Tinh du can va du chi
'Xac dinh can, chi
………
'Lay ten ham gan voi gia tri tra ve
………
End Function
Bài tập 3.3 Hàm KHOANGTRANG()
Viết một hàm dùng để cắt các khoảng trắng thừa trong một chuỗi
Hàm có một đối số mang kiểu chuỗi (là chuỗi muốn kiểm tra)
Hàm trả về một giá trị mang kiểu chuỗi với ý nghĩa là chuỗi đã được cắt bỏ các khoảng trắng
thừa (mỗi từ cách nhau đúng một khoảng trắng)
Hướng dẫn:
B1: Viết một hàm tìm hai khoảng trắng trong chuỗi
Hàm có một đối số (Argument) mang kiểu chuỗi
Hàm trả về một giá trị mang kiểu số với ý nghĩa là vị trí bắt đầu xuất hiện (tính từ bên trái) của
hai khoảng trắng trong chuỗi; nếu chuỗi không chứa hai khoảng trắng thì hàm trả về trị 0
Trang 3B2: Viết hàm cắt các khoảng trắng thừa trong chuỗi
B2.1 Tìm 2 khoảng trắng trong chuỗi (lưu vào biến VITRI)
B2.2 Lặp lại những thao tác sau khi vẫn còn 2 khoảng trắng
(biến VITRI>0)
Cắt từ bên trái chuỗi cho đến vị trí bắt đầu xuất hiện 2 khoảng trắng
Cắt chuỗi gốc từ vị trí bắt đầu xuất hiện 2 khoảng trắng cho đến cuối chuỗi cắt bỏ
khoảng trắng hai bên
Tìm 2 khoảng trắng trong chuỗi gốc và lưu vào biến VITRI
Bài tập 3.4 Hàm SONGAY()
Viết một hàm trả về số ngày trong một tháng
Hàm có một đối số (Argument) mang kiểu ngày tháng
Hàm trả về một giá trị mang kiểu số, với ý nghĩa là số ngày của tháng tương ứng
Biết rằng:
Các tháng 4, 6, 9, 11 có số ngày là 30
Các tháng 1, 3, 5, 7, 8, 10, 12 có số ngày là 31
Số ngày của tháng 2 tùy thuộc vào năm nhuận:
Nếu năm MOD 4 bằng 0 thì số ngày là 28
Ngược lại số ngày là 29
Bài tập 3.5 Hàm DOIHE16()
Viết một hàm đổi một số hệ thập phân ra hệ thập lục phân
Hàm có một đối số mang kiểu số nguyên, với ý nghĩa là số hệ thập lục phân
Hàm trả về một gia trị mang kiểu chuỗi, với ý nghĩa là số được biểu diễn trên hệ thập lục phân
tương ứng
Thí dụ:
Bài tập 3.6 Hàm MAHOA()
Viết một hàm mã hóa dữ liệu theo nguyên tắc:
Lấy mã ASCII của từng ký tự từ trái sang phải
Nối các dãy số của mã ASCII vào chuỗi số
Đổi chuỗi số từ hệ 10 sang hệ 16
Trang 4 Thí dụ:
Bài tập 3.7 Hàm PerfectNumber()
Một số gọi là hoàn hảo (Perfect Number) khi tổng các ước số thực sự của nó bằng chính nó
Viết một hàm kiểm tra một số xem có phải là số hoàn hảo hay không?
Hàm có một đối số mang kiểu số (là số muốn kiểm tra)
Hàm trả về một giá trị mang kiểu Boolean với ý nghĩa là kết quả kiểm tra
Bài tập 3.8 Hàm Palindrom()
Một số gọi là Palindrom (Palindrom Number) khi đọc xuôi hoặc ngược số đó đều cho kết
quả như nhau, thí dụ các số sau là số Palindrom: 22, 121, 12321, 2345432, … Viết một hàm kiểm
tra một số xem có phải là số Palindrom hay không?
Hàm có một đối số mang kiểu số (là số muốn kiểm tra)
Hàm trả về một giá trị mang kiểu Boolean với ý nghĩa là kết quả kiểm tra
Bài tập 3.9 Hàm DOIHETP()
Viết hàm dùng để đổi một số từ hệ bất kỳ (2 - 16) ra hệ thập phân
Hàm có 2 đối số:
Đối số thứ nhất mang kiểu chuỗi với ý nghĩa là số của hệ bất kỳ
Đối số thứ hai mang kiểu số với ý nghĩa là hệ đếm đang được biểu diễn
Hàm trả về một giá trị mang kiểu số với ý nghĩa là số hệ thập phân được chuyển đổi trên
hệ đếm tương ứng
Bài tập 3.10 Hàm THUETHUNHAP()
Viết hàm dùng để tính thuế thu nhập cá nhân với những yêu cầu sau:
Hàm có 4 đối số (Arguments):
Đối số thứ 1: là thu nhập hàng tháng của một người
Đối số thứ 2: mức miễn thuế (mức thu nhập không phải nộp thuế thu nhập)
Đối số thứ 3: là số suất giảm trừ gia cảnh
Trang 5 Đối số thứ 4: mức giảm trừ gia cảnh/suất
Hàm trả về một giá trị mang kiểu số thực, là số tiền thuế thu nhập phải nộp (nếu có)
Thuế thu nhập cá nhân được tính theo phương pháp lũy tiến với biểu thuế suất như sau:
Mức thu nhập tính thuế/tháng
Trên 5.000.000 đến 10.000.000 10%
Trên 10.000.000 đến 18.000.000 15%
Trên 18.000.000 đến 32.000.000 20%
Trên 32.000.000 đến 52.000.000 25%
Trên 52.000.000 đến 80.000.000 30%
Mức miễn thuế: 9.000.000 đồng/người/tháng
Mức giảm trừ gia cảnh: 3.600.000 đồng/suất/tháng
Bài tập 3.11 Hàm TINHTHUONG()
Một đơn vị X đưa ra chế độ tính thưởng để khuyến khích công nhân nâng cao năng suất lao
động, chế độ thưởng được xác định như sau:
Số lượng sản phẩm hoàn thành Mức thưởng
(tính trên đơn giá lương sản phẩm)
Vượt trên 30% so với định mức 30%
Viết một hàm xử lý cách tính thưởng như trên
Hàm nhận vào 3 đối số (Arguments):
Đối số thứ 1: định mức sản phẩm hoàn thành
Đối số thứ 2: số lượng sản phẩm thực tế hoàn thành
Đối số thứ 3: đơn giá lương sản phẩm
Hàm trả về một giá trị mang kiểu số, với ý nghĩa là số tiền thưởng của công nhân
Thí dụ:
Công nhân A sản xuất sản phẩm SP1 có định mức 100 sản phẩm/tháng và đơn giá lương
sản phẩm là 10 đồng/sản phẩm; trong tháng, công nhân A hoàn thành 145 sản phẩm, vậy
phương án tính thưởng được xác định như sau:
Trang 6 Phần vượt <=10% (so ĐM): 10 SP * (10 đồng/SP * 10%)
Phần vượt >10% và <=20%: 10 SP * (10 đồng/SP * 15% )
……… v.v…………
Bài tập 3.12 Hàm TINHLUONGSP()
Viết hàm dùng để tính lương sản phẩm có thưởng theo phương pháp lũy tiến với những yêu
cầu sau:
Hàm được dùng để tính lương sản phẩm cho công nhân trực tiếp sản xuất
Hàm có 2 đối số:
Đối số thứ 1 mang kiểu chuỗi, với ý nghĩa là mã sản phẩm hoàn thành
Đối số thứ 2 mang kiểu số, với ý nghĩa là số lượng sản phẩm hoàn thành
Hàm trả về một giá trị mang kiểu số với ý nghĩa là đơn giá lương sản phẩm Cho biết:
Mã
sản
phẩm
Định mức (sản phẩm/tháng)
Đơn giá lương sản phẩm (đồng/sản phẩm)
Để khuyến khích công nhân nâng cao năng suất lao động, công ty áp dụng chế độ tính lương
sản phẩm như sau:
Sản phẩm hoàn thành Đơn giá lương sản phẩm
(đồng/sản phẩm)
<= định mức Không tăng
Vượt <=10% định mức Tăng thêm 10% trên đơn giá LSP
Vượt <=20% định mức Tăng thêm 15% trên đơn giá LSP
Vượt >20% định mức Tăng thêm 20% trên đơn giá LSP
Bài tập 3.13 Hàm FutureValue()
Một người gửi số tiền tiết kiệm 50.000.000 đồng với lãi suất 14%/năm, với kỳ hạn 5 năm Hãy
xác định số tiền đáo hạn sau 5 năm?
Ta có công thức:
Với n = 1: FV1 = PV + PV.k = PV(1+k)
Trang 7Với n = 2: FV2 = FV1 + FV1.k = FV1.(1+k) = PV(1+k)2
Với n = 3: FV3 = FV2 + FV2.k = FV2.(1+k) = PV(1+k)3
………
Một cách tổng quát, ta có:
n
FV ( 1 ) (1)
Áp dụng công thức (1), ta có số tiền đáo hạn sau 5 năm là:
FVn = 50.000.000(1+0,14)5 = 96.270.729 đồng
Viết hàm FutureValue() dùng để tính giá trị tương lai của một số tiền với phương pháp
tính lãi nhập vốn
Hàm có 2 đối số mang kiểu số thực:
Đối số thứ nhất mang kiểu số thực với ý nghĩa là số tiền hiện tại (Present Value)
Đối số thứ hai mang kiểu số thực với ý nghĩa là lãi suất (Rate)
Đối số thứ ba mang kiểu số nguyên với ý nghĩa là kỳ hạn (Period)
Hàm trả về một giá trị mang kiểu số với ý nghĩa là giá trị tương lai của một số tiền với lãi suất
và kỳ hạn tương ứng
Bài tập 3.14 Hàm RATE()
Sinh viên A vay ngân hàng 25.000.000 đồng để mua máy tính học tập và phải trả ngân hàng
số tiền gốc và lãi là 29.500.000 đồng sau một năm Xác định lãi suất của khoản vay trên?
Ta có công thức:
1 1
) 1
PV
FV k PV
FV k k
PV FV
Lãi suất của khoản vay là: 1 0,18 18%
000 000 25
000 500 29
Viết hàm Rate1() dùng để tính lãi suất của một khoản vay có thời hạn bằng một kỳ hạn
Hàm có 2 đối số mang kiểu số thực:
Đối số thứ nhất mang kiểu số thực với ý nghĩa là khoản vay
Đối số thứ hai mang kiểu số thực với ý nghĩa là số phải thanh toán khi đến hạn
Hàm trả về một giá trị mang kiểu số với ý nghĩa là lãi suất của một khoản vay có thời hạn
bằng một kỳ hạn
Bài tập 3.15 Hàm Vonlaidon()
Lãi suất là tỷ lệ phần trăm (%) của tiền lãi thu được trong một đơn vị thời gian so với số tiền
vốn ban đầu
Trang 8 Khi tiền lãi của thời đoạn trước không được nhập vốn để tính lãi cho thời đoạn sau, ta gọi đó
là lãi đơn
Thí dụ: Sinh viên A vay ngân hàng 5.000.000 đồng trong thời hạn 6 tháng, lãi suất 0,5%/tháng
Sau 6 tháng, sinh viên đó phải trả ngân hàng bao nhiêu tiền?
Số tiền lãi và vốn gốc phải thanh toán:
5.000.000 x (1 + (0.5% x 6))= 5.150.000
Viết hàm Vonlaidon() dùng để tính số thanh toán của một khoản vay theo hình thức lãi
đơn
Hàm có 3 đối số:
Đối số thứ nhất mang kiểu số thực với ý nghĩa là khoản vay
Đối số thứ 2 mang kiểu số thực với ý nghĩa là lãi suất trong một kỳ hạn của khoản vay
Đối số thứ 3 mang kiểu số nguyên với ý nghĩa là kỳ hạn vay
Hàm trả về một giá trị mang kiểu số với ý nghĩa là số thanh toán của một khoản vay với
hình thức tính lãi theo lãi đơn
Lưu ý: lãi suất vay và kỳ hạn vay phải tương ứng với nhau, có nghĩa nếu lãi suất tính theo
tháng thì kỳ hạn cũng phải tính theo tháng, …v.v…
Bài tập 3.16 Hàm Vonlaikep()
Khi tiền lãi của thời đoạn trước được nhập vốn để tính lãi cho thời đoạn sau, ta gọi đó là lãi
kép
Thí dụ: Sinh viên A vay ngân hàng 5.000.000 đồng trong thời hạn 6 tháng, lãi suất 0,5%/tháng
Sau 6 tháng, sinh viên đó phải trả ngân hàng bao nhiêu tiền?
Số tiền lãi và vốn gốc phải thanh toán:
5.000.000 x (1 + 0.5% )6 = 5.151.888
Viết hàm Vonlaikep() dùng để tính số thanh toán của một khoản vay theo hình thức lãi kép
Hàm có 3 đối số:
Đối số thứ nhất mang kiểu số thực với ý nghĩa là khoản vay
Đối số thứ hai mang kiểu số thực với ý nghĩa là lãi suất
Đối số thứ ba mang kiểu số nguyên với ý nghĩa là kỳ hạn vay
Hàm trả về một giá trị mang kiểu số với ý nghĩa là số thanh toán của một khoản vay với
hình thức tính lãi theo lãi kép