VBA với ký tự số trong Excel
(Thủ thuật VBA trong Excel)
-Trong Excel khi nhập những giá trị số và ấn Enter, Excel sẽ tự động căn chỉnh các giá trị này sang bên phải của ô. Đối với những giá trị số khi nhập xong, Excel sẽ tự động loại bỏ số 0 đằng trước các dãy số, ví dụ như số điện thoại chẳng hạn. Để Excel không loại bỏ số 0 đằng trước, người sử dụng thường thêm dấu ‘ trước khi đánh dãy số. Đối với những dãy số như vậy người ta thường gọi là ký tự số. Hoặc khi ta nhập các số xen lẫn giữa các ký tự thì đây cũng được coi là các ký tự số, hoặc các số được ngăn cách bởi các ký tự đặc biệt.Trong công việc thường ngày ta sẽ phải gặp một số tình huống phải thao tác hoặc xử lý với các ký tự số, nếu như sử dụng các hàm có sẵn trong Excel có thể sẽ không thể giải quyết triệt để được mong muốn của chúng ta. Hôm nay Kênh phần mềm việt xin giới thiệu với mọi người 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ố
Giả sử bạn có 1 chuỗi các số như sau: 17ABC6D8H432
Bây giờ bạn muốn đếm xem trong chuỗi này có bao nhiêu số, để làm được việc này bạn sử dụng hàm VBA dưới đây.
Bây giờ bạn muốn đếm xem trong chuỗi này có bao nhiêu số, để làm được việc này bạn 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 các số như sau: 12,45,66,7888,34,56,39,17,98,25
Bây giờ bạn muốn tìm số lớn nhất trong chuỗi các số này, để làm được việc này bạn 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 các ký tự số trong chuỗi được ngăn cách bởi dấu cách 12 45 66 7888 34 56 39 7 98 25
Thì đoạn Code x = Split(R.Value, ",") được thay thế bằng x = Split(R.Value, " ")
Tin học văn phòng
Nhận xét
Đăng nhận xét