ManhDuc1382
Supreme Сasual Dating - Verified Maidens
- Tham gia
- 5/3/20
- Bài viết
- 46
- Được thích
- 16
- Giới tính
- Nam
- Nghề nghiệp
- Health
Chào các bạn. Mình có code của hàm GetNumberIf giúp lấy ra số từ chuỗi, tuy nhiên mình đang muốn cải tiến hàm này với khả năng tách ra các số có điều kiện. Mình có ghi rất chi tiết mong muốn của mình trong file đính kèm, các bạn giúp mình với nhé, mình cảm ơn
Code hàm GetNumberIf cũ
Public Function GetNumberIf(ByVal Text As String, _
Optional ByVal Hyphen As String = "z") As String
Static RE As Object
If RE Is Nothing Then
Set RE = VBA.CreateObject("VBScript.RegExp")
With RE
.Global = 1: .MultiLine = 1
.Pattern = "\D*(\d+(?:[.,]\d+)?)\D*"
End With
End If
If RE.test(Text) Then
Text = RE.Replace(Text, Hyphen & "$1")
GetNumberIf = VBA.Mid(Text, 2)
End If
End Function
Code hàm GetNumberIf cũ
Public Function GetNumberIf(ByVal Text As String, _
Optional ByVal Hyphen As String = "z") As String
Static RE As Object
If RE Is Nothing Then
Set RE = VBA.CreateObject("VBScript.RegExp")
With RE
.Global = 1: .MultiLine = 1
.Pattern = "\D*(\d+(?:[.,]\d+)?)\D*"
End With
End If
If RE.test(Text) Then
Text = RE.Replace(Text, Hyphen & "$1")
GetNumberIf = VBA.Mid(Text, 2)
End If
End Function
Hàm GetNumberIf cải tiến (GetNumberIfNew) | ||||||
Công thức hàm GetNumberIf cải tiến: =GetNumberIfNew(Chuỗi gốc, Ký tự ngăn cách (Optional = "z" nếu không có), Các điều kiện) | ||||||
Trong đó: Chuỗi gốc có thể có các ký tự ngăn cách là , ; . Dấu cách Điều kiện được viết như sau: | ||||||
Số 0 đại diện cho số: Số được tách ra gồm các kiểu: Số nguyên dương ( nếu có dấu trừ, ví dụ -9.6 thì lấy ra 9.6 ), nếu có số trong dấu ngoặc đơn (8.5) thì lấy ra cả số trong dấu ngoặc đơn (8.5) , số ngăn cách bởi dấu phẩy 9,6 số ngăn cách bởi dấu chấm 8.5 Nếu số 0 đứng trước dấu & : (0&"Chuỗi") : Điều kiện là số đứng trước chuỗi Nếu số 0 đứng sau dấu & : ("Chuỗi"&0) : Điều kiện là số đứng sau chuỗi | ||||||
Dấu * biểu thị cho một hoặc nhiều ký tự hoặc không có gì ( >= 0 ký tự ) Dấu ? biểu thị cho một ký tự | ||||||
4.5ac ; 65bc , 7,7ac . c 88 | 4.5z7,7z88 | =GetNumberIfNew(E13 , "z" , 0&"ac" , "c"&0) | ||||
4.5 acb 65 bc , 7,7acx ; (88)bcd | 4.5z7,7z(88) | =GetNumberIfNew(E14 , , 0&"ac?" , 0&"bc?") | ||||
4.5 acbbb 65 bc ; 77acx , acxx -88 | 77z88 | =GetNumberIfNew(E15 , "z" , 0&"ac?" , "ac*"&0) | ||||
-4.5 acbb , 65 bc (7,7) acx . dac 88 | 4.5z(7,7)z88 | =GetNumberIfNew(E16 , "z" , 0&"ac*" , "*ac*&0) | ||||
4.5mnacbb , 65 bc , (7.7) kacx | 4.5z(7.7) | =GetNumberIfNew(E17 , "z" , 0&"*ac*") |
File đính kèm
Lần chỉnh sửa cuối: