Showing posts with label ký tự số. Show all posts
Showing posts with label ký tự số. Show all posts

Sunday, April 14, 2019

VBA với ký tự số trong Excel

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.
VBA-voi-ky-tu-so-trong-Excel-1
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.

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:
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

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
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!

Over 50 Ebooks Excel and VBA free Download

1. Statistics and Probability for Engineering Applications With Microsoft Excel by W.J. DeCoursey - PDF Free Download Download Siz...