Nhờ giải thích giúp mình đoạn code sau (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

lethanhqs

Thành viên mới
Tham gia
16/9/10
Bài viết
15
Được thích
4
Function KITURASO(ByVal NumStr As String) As Currency
Dim Ketqua, Kitu As String
Dim I, J As Integer
I = Len(NumStr)
J = 1
Ketqua = ""
While J <= I
Kitu = Mid$(NumStr, J, 1)
If Kitu = "0" Or Kitu = "1" Or Kitu = "2" Or Kitu = "3" Or Kitu = "4" Or Kitu = "5" Or Kitu = "6" Or Kitu = "7" Or Kitu = "8" Or Kitu = "9" Then
Ketqua = Ketqua + Kitu
End If
J = J + 1
Wend
KITURASO = Val(Ketqua)
End Function
 
Đây là 1 hàm đổi ký tự ra số. VD với chuỗi 4324kj63454 thì hàm =Kituraso(4324kj63454) cho kết quả 432463454. Có thể giải thích như sau:
NumStr là giá trị tham chiếu của hàm Kituraso.
Ketqua, Kitu là các biến cần cho quá trình tính toán.
I=len(NumStr) cho ra kết quả là số lượng ký tự của chuỗi NumStr
Vòng lặp While sẽ giúp check từng ký tự trong chuỗi Numstr thông qua biến kitu=mid$(Numstr,j,1). Ở đây, biến Kitu được gán cho kí tự thứ j trong chuỗi Numstr. Nếu kitu là số thì nuối vào biến Ketqua.
Cuối cùng, hàm kituraso sẽ cho giá trị bằng cách chuyển biến ketqua từ dạng text sang dạng số thông qua hàm val().
Thật ra đoạn điều kiện if trong vòng lặp không nhất thiết phải nhiều toán tử or đến như thế, và cũng không cần dùng đến biến kitu. Code có thể đơn giản hơn như sau:
PHP:
Function KITURASO(ByVal NumStr As String)
Dim i As Integer
  For i = 1 To Len(NumStr)    
    If IsNumeric(Mid(NumStr, i, 1)) = True Then        
      KITURASO = KITURASO & Mid(NumStr, i, 1)    
    End If
  Next
KITURASO = Val(KITURASO)
End Function
 
Upvote 0
Đây là 1 hàm đổi ký tự ra số. VD với chuỗi 4324kj63454 thì hàm =Kituraso(4324kj63454) cho kết quả 432463454. Có thể giải thích như sau:
NumStr là giá trị tham chiếu của hàm Kituraso.
Ketqua, Kitu là các biến cần cho quá trình tính toán.
I=len(NumStr) cho ra kết quả là số lượng ký tự của chuỗi NumStr
Vòng lặp While sẽ giúp check từng ký tự trong chuỗi Numstr thông qua biến kitu=mid$(Numstr,j,1). Ở đây, biến Kitu được gán cho kí tự thứ j trong chuỗi Numstr. Nếu kitu là số thì nuối vào biến Ketqua.
Cuối cùng, hàm kituraso sẽ cho giá trị bằng cách chuyển biến ketqua từ dạng text sang dạng số thông qua hàm val().
Thật ra đoạn điều kiện if trong vòng lặp không nhất thiết phải nhiều toán tử or đến như thế, và cũng không cần dùng đến biến kitu. Code có thể đơn giản hơn như sau:
PHP:
Function KITURASO(ByVal NumStr As String)
Dim i As Integer
  For i = 1 To Len(NumStr)    
    If IsNumeric(Mid(NumStr, i, 1)) = True Then        
      KITURASO = KITURASO & Mid(NumStr, i, 1)    
    End If
  Next
KITURASO = Val(KITURASO)
End Function
Extract number ta dùng vầy mới ngon:
PHP:
Function ExtractNum(ByVal Text As String) As Double
  With CreateObject("VBScript.RegExp")
    .Global = True: .Pattern = "\D"
    ExtractNum = .Replace(Text, "")
  End With
End Function
Vòng lập gì cho mất công ---> Vì thằng VBScript.RegExp mới là "chuyên gia" về xử lý chuổi đấy nhé
 
Upvote 0
Extract number ta dùng vầy mới ngon:
PHP:
Function ExtractNum(ByVal Text As String) As Double
  With CreateObject("VBScript.RegExp")
    .Global = True: .Pattern = "\D"
    ExtractNum = .Replace(Text, "")
  End With
End Function
Vòng lập gì cho mất công ---> Vì thằng VBScript.RegExp mới là "chuyên gia" về xử lý chuổi đấy nhé

Cái "\D" có tác dụng gì vậy hả anh?
 
Upvote 0
Vòng lập gì cho mất công ---> Vì thằng VBScript.RegExp mới là "chuyên gia" về xử lý chuổi đấy nhé
Hi! Thật ra em gà VBA lắm bác ạ. Gọi là đủ dùng để cải thiện hiệu suất và cải thiện kỹ năng làm việc thôi, chứ không thông tường như IT.
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom