Bản thảo sơ qua:Em chào Thầy cô & Anh chị!
Công việc của em nhiều lúc phải đếm số lượng phiếu đã sử dụng, nên em nhờ giúp em tạo hàm tự tạo demso() đa dạng! như đã mô tả trong File
Em cảm ơn!
Function vCount(ByVal sNumber As String) As Long
Dim tmp, Arr, tmpArr, lCount As Long, Item
On Error Resume Next
tmp = Replace(sNumber, ";", ",")
If InStr(1, tmp, ",") Then
Arr = Split(tmp, ",")
lCount = UBound(Arr) + 1
For Each Item In Arr
If InStr(1, Item, "-") Then
tmpArr = Split(Item, "-")
lCount = lCount + tmpArr(1) - tmpArr(0)
End If
Next
Else
If InStr(1, tmp, "-") Then
tmpArr = Split(tmp, "-")
lCount = lCount + tmpArr(1) - tmpArr(0) + 1
End If
End If
vCount = lCount
End Function
Tham gia một phátEm chào Thầy cô & Anh chị!
Công việc của em nhiều lúc phải đếm số lượng phiếu đã sử dụng, nên em nhờ giúp em tạo hàm tự tạo demso() đa dạng! như đã mô tả trong File
Em cảm ơn!
Public Function DemSo(Cll As String) As Variant
Dim I As Long, Tong As Long, Tach, TachTiep
If Cll = "" Then DemSo = "": Exit Function
Cll = Replace(Cll, ".", ",")
Tach = Split(Cll, ";")
For I = LBound(Tach) To UBound(Tach)
If InStr(Tach(I), "-") Then
TachTiep = Split(Tach(I), "-")
Tong = 1 + Tong + (Val(TachTiep(1)) - Val(TachTiep(0)))
Else
Tong = 1 + Tong + (Len(Tach(I)) - Len(Replace(Tach(I), ",", "")))
End If
Next I
DemSo = Tong
End Function
Sửa code thành vầy xem:Em cảm ơn các thầy.
Các thầy giúp em thêm 1 tý nữa, số là vầy, do các anh chị & đồng nghiệp chuyển File cho em, nên có thể họ nhập như thế này, VD: 1-9; sẽ cho KQ là 10 (KQ đúng là 9) hoặc 1,2; sẽ cho KQ là 3 (KQ đúng là 2) ... Mà kg fải lúc nào em chú ý hết tất cả được
Vì thế các thầy loại bỏ dấu phẩy hoặc chấm phẩm hoặc gạch ngang trước khi tính cho KQ
Em xin cảm ơn
Function vCount(ByVal sNumber As String) As Long
Dim tmp, Arr, tmpArr, lCount As Long, Item
On Error Resume Next
tmp = Replace(sNumber, ";", ",")
tmp = Trim(Replace(tmp, ",", " "))
If InStr(1, tmp, " ") Then
Arr = Split(tmp, " ")
lCount = UBound(Arr) + 1
For Each Item In Arr
If InStr(1, Item, "-") Then
tmpArr = Split(Item, "-")
lCount = lCount + tmpArr(1) - tmpArr(0)
End If
Next
Else
If InStr(1, tmp, "-") Then
tmpArr = Split(tmp, "-")
lCount = lCount + tmpArr(1) - tmpArr(0) + 1
End If
End If
vCount = lCount
End Function
Hi nếu chuỗi là 123, hoặc 358 .... thì nó "biến" thành 0!!!Sửa code thành vầy xem:
Thay mọi thứ thành khoảng trắng, xong ta TRIM 1 phát là nó "bay" mất mấy khoảng trắng thừa cuối chuổi (nếu có)PHP:Function vCount(ByVal sNumber As String) As Long Dim tmp, Arr, tmpArr, lCount As Long, Item On Error Resume Next tmp = Replace(sNumber, ";", ",") tmp = Trim(Replace(tmp, ",", " ")) If InStr(1, tmp, " ") Then Arr = Split(tmp, " ") lCount = UBound(Arr) + 1 For Each Item In Arr If InStr(1, Item, "-") Then tmpArr = Split(Item, "-") lCount = lCount + tmpArr(1) - tmpArr(0) End If Next Else If InStr(1, tmp, "-") Then tmpArr = Split(tmp, "-") lCount = lCount + tmpArr(1) - tmpArr(0) + 1 End If End If vCount = lCount End Function
Hi nếu chuỗi là 123, hoặc 358 .... thì nó "biến" thành 0!!!
Em cảm ơn!
Function vCount(ByVal sNumber As String) As Long
Dim tmp, Arr, tmpArr, lCount As Long, Item
On Error Resume Next
tmp = Replace(sNumber, ";", ",")
tmp = WorksheetFunction.Trim(Replace(tmp, ",", " "))
If InStr(1, tmp, " ") Then
Arr = Split(tmp, " ")
lCount = UBound(Arr) + 1
For Each Item In Arr
If InStr(1, Item, "-") Then
tmpArr = Split(Item, "-")
lCount = lCount + tmpArr(1) - tmpArr(0)
End If
Next
ElseIf InStr(1, tmp, "-") Then
tmpArr = Split(tmp, "-")
lCount = lCount + tmpArr(1) - tmpArr(0) + 1
ElseIf IsNumeric(tmp) Then
lCount = 1
End If
vCount = lCount
End Function




Em gởi file lên, trong file em có thuyết minh
Em cảm ơn
Function vCount(ByVal sNumber As String) As Long
Dim tmp, arr, tmpArr, lCount As Long, item
On Error Resume Next
tmp = Replace(sNumber, ",", ";")
tmp = Replace(tmp, ".", ";")
If InStr(1, tmp, ";") Then
arr = Split(tmp, ";")
lCount = UBound(arr) + 1
For Each item In arr
If InStr(1, item, "-") Then
tmpArr = Split(item, "-")
lCount = lCount + tmpArr(1) - tmpArr(0)
End If
Next
ElseIf InStr(1, tmp, "-") Then
tmpArr = Split(tmp, "-")
lCount = lCount + tmpArr(1) - tmpArr(0) + 1
ElseIf Len(tmp) Then
lCount = 1
End If
vCount = lCount
End Function

