xin nhờ các bạn giúp thống kê chuỗi

Liên hệ QC

khoa186

Thành viên chính thức
Tham gia
23/11/07
Bài viết
64
Được thích
4
1572060098379.png
mình chỉ biết làm thống kê các ô màu đen , còn ô màu đỏ nó có --> có nghĩa từ lớp 8a13,8a14,8a15,8a16 , mong các bạn các thầy giúp giùm mình , xin cảm ơn các bạn
 

File đính kèm

View attachment 227193
mình chỉ biết làm thống kê các ô màu đen , còn ô màu đỏ nó có --> có nghĩa từ lớp 8a13,8a14,8a15,8a16 , mong các bạn các thầy giúp giùm mình , xin cảm ơn các bạn
Thử.
Mã:
Function thongke(ByVal lop As String, ByVal ten As String, Optional ByVal phancach As String = ",", Optional ByVal ngancach As String = "-->") As Integer
         Dim a As Long, i As Long, T, b As Integer, T1
         b = Len(lop)
         If b = 0 Then Exit Function
         For Each T In Split(ten, phancach)
             If UCase(lop) = UCase(Left(T, b)) Then
                If InStr(1, T, ngancach) Then
                   T1 = Split(T, ngancach)
                   a = a + CLng(Right(T1(1), Len(T1(1)) - b)) - CLng(Right(T1(0), Len(T1(0)) - b))
                 Else
                   a = a + 1
                 End If
             End If
         Next
         thongke = a
End Function
Mã:
=thongke(C$1,$B2)
 

File đính kèm

Cái này dùng hàm thuần Excel hơi rắc rối. Tốtn hơn là nên viết một hàm VBA

1. Dùng hàm Split tách chuỗi theo dấu phẩy
2. Dùng hàm Val đọc lấy số đầu của mỗi đoạn
2.1 Nếu không có chứa "-->" thì tính là 1 lần
2.2 Nếu có chứa "-->" thì Split nó ra làm 2, và
2.2.1 Dùng hàm phép dọc ngược (xem bên dưới) để lấy số sau của mỗi đoạn
2.2.2 Tính số đếm giữa 2 đoạn
3. Thống kê

' Code đọc ngược số trong chuỗi s
so = Val(StrReverse(Val(StrReverse(s)&"1"))) \ 10 ' & "1" và \10 để giải quyết trường hợp số 0 ở sau
 
Thử.
Mã:
Function thongke(ByVal lop As String, ByVal ten As String, Optional ByVal phancach As String = ",", Optional ByVal ngancach As String = "-->") As Integer
         Dim a As Long, i As Long, T, b As Integer, T1
         b = Len(lop)
         If b = 0 Then Exit Function
         For Each T In Split(ten, phancach)
             If UCase(lop) = UCase(Left(T, b)) Then
                If InStr(1, T, ngancach) Then
                   T1 = Split(T, ngancach)
                   a = a + CLng(Right(T1(1), Len(T1(1)) - b)) - CLng(Right(T1(0), Len(T1(0)) - b))
                 Else
                   a = a + 1
                 End If
             End If
         Next
         thongke = a
End Function
Mã:
=thongke(C$1,$B2)
xin cảm ơn bạn đã giúp mình
 
Web KT

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

Back
Top Bottom