Đếm số lần xuất hiện và tính tổng số lượng cần.

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

soledad_90

Thành viên thường trực
Tham gia
12/1/10
Bài viết
253
Được thích
46
Giới tính
Nam
Em có 1 file theo dõi thủ công, với mẫu dữ liệu tại sheet data và đang cần hiển thị kết quả cần tại sheet ketqua
Chi tiết yêu cầu em có thể hiện tại sheet data
Cảm ơn anh /chị xem và giúp đỡ .
 

File đính kèm

  • TINH TOAN SỐ LƯỢNG CẦN LẤY.xlsx
    27.6 KB · Đọc: 18
Em có 1 file theo dõi thủ công, với mẫu dữ liệu tại sheet data và đang cần hiển thị kết quả cần tại sheet ketqua
Chi tiết yêu cầu em có thể hiện tại sheet data
Cảm ơn anh /chị xem và giúp đỡ .
Kiểm tra lại . . .
Mã:
Sub xyz()
  Dim arr(), res(), po$, st$, co$
  Dim sRow&, i&, r&, fR&, j&, k&, d&
 
  With Sheets("Data")
    i = .Range("AZ" & Rows.Count).End(xlUp).Row
    arr = .Range("D1:AZ" & i + 1).Value
    sRow = Application.Count(.Range("D3:AV" & i))
  End With
  
  ReDim res(1 To sRow, 1 To 5)
  sRow = UBound(arr) - 1
  arr(sRow + 1, 1) = "end"
 
  For i = 3 To sRow
    If arr(i, 1) <> Empty Then
      po = arr(i, 1): st = arr(i, 3): co = arr(i, 5)
      fR = i + 1
    End If
   
    If arr(i + 1, 1) <> Empty Then
      For j = 23 To 45
        d = 0
        For r = fR To i
          If arr(r, 49) <> Empty Then
            If Not (arr(r, 8) Like "c?n l?i") Then
              If arr(r, 8) Like "th?ng ch?n" Then
                d = arr(r, j)
              ElseIf IsNumeric(arr(r, j)) And arr(r, j) <> Empty Then
                d = d + 1
              End If
            End If
          End If
        Next r
        If d > 0 Then
          k = k + 1
          res(k, 1) = po
          res(k, 2) = st
          res(k, 3) = co
          res(k, 4) = arr(1, j)
          res(k, 5) = d
        End If
      Next j
    End If
  Next i
 
  With Sheets("ketqua")
    i = .Range("B" & Rows.Count).End(xlUp).Row
    If i > 2 Then .Range("B3:F" & i).ClearContents
    If k Then
      .Range("B3").Resize(k).NumberFormat = "@"
      .Range("B3").Resize(k, 5) = res
    End If
  End With
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Kiểm tra lại . . .
Mã:
Sub xyz()
  Dim arr(), res(), po$, st$, co$
  Dim sRow&, i&, r&, fR&, j&, k&, d&
 
  With Sheets("Data")
    i = .Range("K" & Rows.Count).End(xlUp).Row
    arr = .Range("D1:AZ" & i + 1).Value
    sRow = Application.Count(.Range("D3:AV" & i))
  End With
  i = UBound(arr, 2)
  ReDim res(1 To sRow, 1 To 5)
  sRow = UBound(arr) - 1
  arr(sRow + 1, 1) = "end"
 
  For i = 3 To sRow
    If arr(i, 1) <> Empty Then
      po = arr(i, 1): st = arr(i, 3): co = arr(i, 5)
      fR = i + 1
    End If
   
    If arr(i + 1, 1) <> Empty Then
      For j = 23 To 45
        d = 0
        For r = fR To i
          If arr(r, 49) <> Empty Then
            If Not (arr(r, 8) Like "c?n l?i") Then
              If arr(r, 8) Like "th?ng ch?n" Then
                d = arr(r, j)
              ElseIf IsNumeric(arr(r, j)) And arr(r, j) <> Empty Then
                d = d + 1
              End If
            End If
          End If
        Next r
        If d > 0 Then
          k = k + 1
          res(k, 1) = po
          res(k, 2) = st
          res(k, 3) = co
          res(k, 4) = arr(1, j)
          res(k, 5) = d
        End If
      Next j
    End If
  Next i
 
  With Sheets("ketqua")
    i = .Range("B" & Rows.Count).End(xlUp).Row
    If i > 2 Then .Range("B3:F" & i).ClearContents
    If k Then
      .Range("B3").Resize(k).NumberFormat = "@"
      .Range("B3").Resize(k, 5) = res
    End If
  End With
End Sub
Em cảm ơn anh đã giúp đỡ.
Code chạy chưa đúng một lô cuối , các lô còn lại kết quả đúng rồi ạ
Em gửi lại hình và file kết quả em nhập tay, anh xem chỉnh code dùm em với
1720111625381.png
 

File đính kèm

  • TINH TOAN SỐ LƯỢNG CẦN LẤY.xlsm
    41.4 KB · Đọc: 5
Upvote 0
Web KT
Back
Top Bottom