VBA Excel Cấp Tốc Bài 9 - Tự Tạo Hàm Excel Riêng
Khi sử dụng Excel, chúng ta thấy có rất nhiều hàm có được viết sẵn. Nhưng bấy nhiêu hàm đó có đủ để phục vụ cho công việc của bạn. Bạn cần một hàm thích hợp với công việc của mình hơn tại sao ta không tự viết chúng. Bài viết này sẽ hướng dẫn bạn cách viết hàm trong Excel đơn giản nhất.
Xem bài học trước
>> VBA Excel Cấp Tốc Bài 1 - Lọc Dữ Liệu Nhiều Điều Kiện Với Advanced Filter
>> VBA Excel Cấp Tốc Bài 2 - In Bảng Cửu Chương
>> VBA Excel Cấp Tốc Bài 3 - In Ấn Nhanh Hàng Loạt
>> VBA Excel Cấp Tốc Bài 4 - Xóa Tự Động Hàng Loạt Sheets Không Active
>> VBA Excel Cấp Tốc Bài 5 - Copy File Từ Một Thư Mục Sang Thư Mục Khác
>> VBA Excel Cấp Tốc Bài 6 - Hướng Dẫn Sử Dụng Record Macro Trong Excel Từ Cơ Bản Đến Nâng Cao
>> VBA Excel Cấp Tốc Bài 7 - Cách Gộp Nhiều File Excel Vào Một File Duy Nhất
>> VBA Excel Cấp Tốc Bài 8 - Cách Tạo Checkbox Hàng Loạt Trong Excel
Video hướng dẫn
Viết hàm nối chuỗi
Đầu tiên là một File trắng bạn cần phải lưu File trước khi thực hành: vào thẻ File ở góc trên màn hình -> Save As -> chọn nơi lưu File -> đặt tên -> ô bên dưới ô đặt tên chọn Excel Macro -> Save
Mở Visual Basic lên: Vào Developer -> Visual Basic -> Insert -> Module.
Mở đầu chương trình là: Function tên chương trình(chuỗi As Range, ký tự giữa các chuỗi As String) Enter xuống dòng tự sinh ra End Function.
Vd: Function noi_chuoi(chuoi As Range, ky_tu_giua_cac_chuoi As String)
End Function
Khai báo biến mỗi ký tự: Dim moi_ky_tu As Range
Dùng vòng lặp For để quét từng ô một trong phạm vi: For Each moi_ky_tu In chuoi và nên xuống hàng gõ Next đề kết thúc vòng For tránh trường hợp bị quên.
Tiếp theo trong vòng lặp For bạn viết lệnh nối chuỗi: tên chương trình = tên chương trình và khai báo mỗi ký tự ban đầu và ký tự giữa các chuỗi. vd: noi_chuoi = noi_chuoi & moi_ky_tu & ky_tu_giua_cac_chuoi
Nhưng khi hoàn thành vòng lặp For thì bạn sẽ bị dư một ký tự nối chuỗi ở cuối để xóa nó đi dùng lệnh: noi_chuoi = Left(noi_chuoi, Len(noi_chuoi) - Len(ky_tu_giua_cac_chuoi)). Trong đó Left là hàm xóa còn Len là hàm tính độ dài.
Giờ bạn có thể dùng hàm noi_chuoi bằng cách bạn tích vào 1 ô bạn muốn chứa chuỗi đó gõ noi_chuoi(bôi đen vùng dữ liệu muốn nối vào nhau;"khoản cách giữa các chuỗi sắp được nối vào nhau")
Đoạn code hàm nối chuỗi:
Function noi_chuoi(chuoi As Range, ky_tu_giua_cac_chuoi As String)
Dim moi_ky_tu As Range
For Each moi_ky_tu In chuoi
noi_chuoi = noi_chuoi & moi_ky_tu & ky_tu_giua_cac_chuoi
Next
noi_chuoi = Left(noi_chuoi, Len(noi_chuoi) - Len(ky_tu_giua_cac_chuoi))End Function
Kết quả.
Viết hàm tính tổng
Đầu tiên ta cũng bắt đầu với tên chương trình: Function tên chương trình(chuỗi As String) Enter xuống dòng tự sinh ra End Function.
vd: Function tinh_tong(chuoi As String)
End Function
Gán giá trị cho tinh_tong bằng không(tinh_tong = 0), khai báo biến i để tách và quét từ ký tự đầu tiên đến ký tự cuối cùng: Dim i As Integer
Khai báo thêm hàng từng ký tự để mình tính tổng: Dim tung_ky_tu As String.
Tiếp đến là vòng lặp For để cho i quét từng ký tự trong chuỗi: For i = 1 To Len(chuoi) và Next để kết thúc vòng lặp.
Tiếp theo mình sẽ gán tung_ky_tu bằng mid(chuoi, i, 1). Hàm mid là để tách từng ký tự trong chuỗi. Vd tung_ky_tu = Mid(chuoi, i, 1)
Dùng hàm If để xác định là số hay chữ nếu là số thì hàm sẽ đưa số đó và tính tổng nếu không phải thì nó bỏ qua và quay lại vòng lập For.
vd: If tung_ky_tu >= "0" And tung_ky_tu <= "9" Then
tinh_tong = tinh_tong + tung_ky_tu
End If
Giờ bạn có thể tính tổng bất cứ ô nào trong File Excel.
Đoạn code tính tổng:
Function tinh_tong(chuoi As String)
tinh_tong = 0
Dim i As Integer
Dim tung_ky_tu As String
For i = 1 To Len(chuoi)
tung_ky_tu = Mid(chuoi, i, 1)
If tung_ky_tu >= "0" And tung_ky_tu <= "9" Then
tinh_tong = tinh_tong + tung_ky_tu
End If
Next
End Function
CHO ĐIỂM BÀI VIẾT NÀY