1. Hàm Isnumeric:
Hàm này sẽ phán đoán đối số bên trong là số hay không.
Chẳng hạn, dù cho cells của các bạn đang để định dạng là văn bản (text) nhưng nội dung bên trong ghi là "1.5" thì giá trị trả về của hàm này vẫn là True (xác nhận đây là số). Nếu không phải là số, trả giá trả về của hàm là False.
Function IsNumeric(Expression) As Boolean
3. Phạm Vi Hoạt Động:
Hàm Isnumeric có thể vẫn hoạt động dù cho tham số truyền vào là kiểu dữ liệu không rõ ràng.
Ví dụ: "-1.5" thì nó phán đoán là số. Nhưng nếu bạn thêm khoảng trống bằng dấu cách vào "-1.5 " thì nó vẫn trả về là TRUE.
Bạn thêm khoảng trống đằng trước hay sau, hàm này vẫn hoạt động.
Đối với các bạn Việt Nam thì không sao, nhưng với các bạn làm trong công ty Nhật, chúng ta biết tới chế độ gõ Zenkaku. Nếu bạn lo lắng Zenkaku có hoạt động hay không, câu trả lời là có. ”123” vẫn cho giá trị là TRUE.
Hoặc cách viết lũy thừa 10 như là "10e8", hàm này vẫn trả giá trị là TRUE.
Hoặc hệ Hexa "&H123", hàm này vẫn trả giá trị là TRUE...
Vì vậy, phải hiểu rõ phạm vi hoạt động của hàm này để đưa ra đối sách hợp lý, nếu không nó sẽ cho ra kết quả ngoài ý đồ của chúng ta.
4. Code mẫu:
Kết quả:
Có lẽ bạn maiban2068 (đã bị xóa nick) hiểu được tầm hoạt động này, và vận dụng vào dữ liệu mà bạn @hocmoi đã cho
Tham khảo ở:
Hàm này sẽ phán đoán đối số bên trong là số hay không.
Chẳng hạn, dù cho cells của các bạn đang để định dạng là văn bản (text) nhưng nội dung bên trong ghi là "1.5" thì giá trị trả về của hàm này vẫn là True (xác nhận đây là số). Nếu không phải là số, trả giá trả về của hàm là False.
- Isnumeric(a) = True nếu a là số
- Isnumeric(a) = False nếu a không phải là số
Function IsNumeric(Expression) As Boolean
Expression | Là dữ liệu bạn chỉ định cho hàm để phán đoán dữ liệu này là số hay không |
Giá trị trả về là kiểu Boolean | Là True nếu Expression là số, là False nếu không phải là số. |
3. Phạm Vi Hoạt Động:
Hàm Isnumeric có thể vẫn hoạt động dù cho tham số truyền vào là kiểu dữ liệu không rõ ràng.
Ví dụ: "-1.5" thì nó phán đoán là số. Nhưng nếu bạn thêm khoảng trống bằng dấu cách vào "-1.5 " thì nó vẫn trả về là TRUE.
Mã:
Sub test()
If IsNumeric("-1.5 ") Then MsgBox "OK"
End Sub
Bạn cần đăng nhập để thấy đính kèm
Bạn thêm khoảng trống đằng trước hay sau, hàm này vẫn hoạt động.
Đối với các bạn Việt Nam thì không sao, nhưng với các bạn làm trong công ty Nhật, chúng ta biết tới chế độ gõ Zenkaku. Nếu bạn lo lắng Zenkaku có hoạt động hay không, câu trả lời là có. ”123” vẫn cho giá trị là TRUE.
Hoặc cách viết lũy thừa 10 như là "10e8", hàm này vẫn trả giá trị là TRUE.
Hoặc hệ Hexa "&H123", hàm này vẫn trả giá trị là TRUE...
Vì vậy, phải hiểu rõ phạm vi hoạt động của hàm này để đưa ra đối sách hợp lý, nếu không nó sẽ cho ra kết quả ngoài ý đồ của chúng ta.
4. Code mẫu:
Mã:
Sub IsNumericTest()
Dim ar()
Dim s
Dim ret As Boolean
ret = IsNumeric("123456")
If ret = True Then
Debug.Print "La So"
Else
Debug.Print "Khong phai So"
End If
ReDim ar(6)
ar(0) = "12345" '// Kiểu gõ hankaku-người dùng tiếng nhật
ar(1) = "123" '// Kiểu gõ zenkaku-người dùng tiếng nhật
ar(2) = "10e8" '// Kiểu lũy thừa 10
ar(3) = "&O123" '// Hệ cơ số 8
ar(4) = "&H123" '// Hệ cơ số 16
ar(5) = "\123,456.789" '// Số tiền
ar(6) = "123a" '// Ký tự thông thường
For Each s In ar
ret = IsNumeric(s)
'// Nếu là số
If ret = True Then
Debug.Print "True : " & s
'// Không phải là số
Else
Debug.Print "False: " & s
End If
Next
End Sub
Mã:
La So
True : 12345
True : 123
True : 10e8
True : &O123
True : &H123
True : \123,456.789
False: 123a
Bạn cần đăng nhập để thấy link
nên đã có xử lý trông có vẻ dài hơn bạn @NhanSu , nhưng thực ra theo tôi là rất có ý đồ.Tham khảo ở:
Bạn cần đăng nhập để thấy link