Khi bạn nhập những giá trị số trong Excel và nhấn Enter thì Excel sẽ tự động căn chỉnh các giá trị trên sang bên phải của ô. Trong trường hợp bạn nhập những dãy số mà đằng trước có số 0, ví dụ như số điện thoại, … thì Excel sẽ tự động loại bỏ những số 0 này. Khi đó, người dùng sẽ sử dụng thêm dấu trước khi đánh dãy số để Excel không loại bỏ số 0 đằng trước. Những dãy số như vậy thường được gọi là ký tự số. Một trường hợp khác cũng được coi là các ký tự số đó là khi ta nhập các số xen lẫn giữa các ký tự hoặc các số được ngăn cách bởi các ký tự đặc biệt.
Chắc hẳn trong công việc thường ngày, bạn phải gặp một số trường hợp thao tác, xử lý với các ký tự số nhưng các hàm có sẵn trong Excel không thể giải quyết triệt được vấn đề theo ý muốn. Hôm nay, QuanTriExcel.info xin giới thiệu với các bạn một vài trường hợp sử dụng VBA để thao tác với ký tự số trong Excel.
1. Đếm số chữ số trong chuỗi ký tự số
Ví dụ bạn có 1 chuỗi sau: 17B4HH22TB63
Bạn muốn đếm xem chuỗi trên có bao nhiêu số? Bạn có thể sử dụng hàm VBA dưới đây:
Bạn muốn đếm xem chuỗi trên có bao nhiêu số? Bạn có thể sử dụng hàm VBA dưới đây:
Function CountNumber(str As String)
Dim mlen As Long
Dim i As Long
Dim iCount As Long
‘Neu chuoi =0 thi khong xu ly
If Len(str) = 0 Then Exit Function
‘Xoa bo cac ky tu trang o dau va cuoi
str = Trim(str)
‘Dem so ky tu chuoi
mlen = Len(str)
iCount = 0
For i = 1 To mlen
If IsNumeric(Mid(str, i, 1)) Then
iCount = iCount + 1
End If
Next
CountNumber = iCount
End Function
Dim mlen As Long
Dim i As Long
Dim iCount As Long
‘Neu chuoi =0 thi khong xu ly
If Len(str) = 0 Then Exit Function
‘Xoa bo cac ky tu trang o dau va cuoi
str = Trim(str)
‘Dem so ky tu chuoi
mlen = Len(str)
iCount = 0
For i = 1 To mlen
If IsNumeric(Mid(str, i, 1)) Then
iCount = iCount + 1
End If
Next
CountNumber = iCount
End Function
2. Tìm giá trị lớn nhất trong chuỗi ký tự số
Giả sử bạn có 1 chuỗi sau: 15,67,66,5748,37,59,89,27,99,20
Bạn muốn tìm số lớn nhất trong chuỗi trên? Bạn có thể sử dụng hàm VBA dưới đây:
Function HighestNumber(R As Range)
Dim x As Variant, M As Double, i As Long, ct As Long
Set R = R.CellS(1, 1)
x = Split(R.Value, “,”)
For i = LBound(x) To UBound(x)
If IsNumeric(x(i)) Then
ct = ct + 1
If x(i) > M Then M = x(i)
End If
Next i
If ct = 0 Then
HighestNumber = CVErr(xlErrNA)
Else
HighestNumber = M
End If
End Function
Dim x As Variant, M As Double, i As Long, ct As Long
Set R = R.CellS(1, 1)
x = Split(R.Value, “,”)
For i = LBound(x) To UBound(x)
If IsNumeric(x(i)) Then
ct = ct + 1
If x(i) > M Then M = x(i)
End If
Next i
If ct = 0 Then
HighestNumber = CVErr(xlErrNA)
Else
HighestNumber = M
End If
End Function
Nếu bạn gặp trường hợp các ký tự số trong chuỗi được ngăn cách bởi dấu cách, ví dụ 15 67 66 5748 37 59 89 27 99 20 thì bạn chỉ cần sửa trong đoạn code trên x = Split(R.Value, “,”) được thay thế bằng x = Split(R.Value, ” “).
Hi vọng những thủ thuật VBA trên giúp ích cho các bạn!
?DienDan.Edu.Vn cám ơn bạn đã quan tâm và rất vui vì bài viết đã đem lại thông tin hữu ích cho bạn. https://diendan.edu.vn/
?Thanks
DienDan.Edu.Vn Cám ơn bạn đã quan tâm và rất vui vì bài viết đã đem lại thông tin hữu ích cho bạn.DienDan.Edu.Vn! là một website với tiêu chí chia sẻ thông tin,... Bạn có thể nhận xét, bổ sung hay yêu cầu hướng dẫn liên quan đến bài viết. Vậy nên đề nghị các bạn cũng không quảng cáo trong comment này ngoại trừ trong chính phần tên của bạn.Cám ơn.