Tìm hàm có điều kiện (2 người xem)

Liên hệ QC

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

Cũng có ý nghĩ giống anh @HieuCD:
  • Cùng số xe, nhưng nếu có chở cả "Ngô" và "Khoai", cứ lên xuống hàng cách nhau trong vòng 2 tiếng thì tính là 1 chuyến.
  • Do yêu cầu của chủ thớt không rõ ràng nên nếu tính chuyến là 19, tính đầu xe chở thì thành 17
Cũng làm cột phụ: với quy đổi chung 1 giờ giống nhau, nếu cùng số xe có lên xuống hàng trong vòng 2 tiếng, và giữ công thức bài #5 của @excel_lv1.5

Chúc anh em ngày vui.
Nếu tính số chuyến thì có thể bỏ điều kiện>0 =SUM((COUNTIF(OFFSET(E8,,,ROW(E8:E74)-7),E8:E74)=1)*V8:V74) Ctrl+Shift+Enter!
Một số ít trường hợp vẫn có thể bị sai.
Chúc bạn 1 ngày vui !
Trong 2 giờ làm 2 chuyến chắc không xảy ra, góp công thức cho vui :)
Dùng cột phụ hơi dài một chút :p
Nếu trong 2 giờ có nhiều chuyến, dùng VBA cho dể
Mã:
Sub GPE()
  Dim sArr(), Res(1 To 3, 1 To 1)
  Dim i As Long, sRow As Long, k As Long
  Dim SoXe, LoaiHang, Ngay
  sArr = Range("E8:T" & Range("E1000000").End(xlUp).Row + 1).Value2
  sRow = UBound(sArr)
  For i = 1 To sRow - 1
    SoXe = sArr(i, 1)
    If SoXe <> Empty Then
      LoaiHang = sArr(i, 6):      Ngay = sArr(i, 16)
      For k = i + 1 To sRow
        If Ngay > sArr(k, 16) + 2 / 24 Then Exit For
        If sArr(k, 1) = SoXe Then
          If sArr(k, 6) = LoaiHang Then Exit For
          Res(1, 1) = Res(1, 1) + 1
          If LoaiHang = "Khoai" Then
            Res(2, 1) = Res(2, 1) + sArr(i, 12)
            Res(3, 1) = Res(3, 1) + sArr(k, 12)
          Else
            Res(2, 1) = Res(2, 1) + sArr(k, 12)
            Res(3, 1) = Res(3, 1) + sArr(i, 12)
          End If
          sArr(k, 1) = Empty
          Exit For
        End If
      Next k
    End If
  Next i
  Range("Y2:Y4") = Res
End Sub
 

File đính kèm

Trong 2 giờ làm 2 chuyến chắc không xảy ra, góp công thức cho vui :)
Dùng cột phụ hơi dài một chút :p
Nếu trong 2 giờ có nhiều chuyến, dùng VBA cho dể
Mã:
Sub GPE()
  Dim sArr(), Res(1 To 3, 1 To 1)
  Dim i As Long, sRow As Long, k As Long
  Dim SoXe, LoaiHang, Ngay
  sArr = Range("E8:T" & Range("E1000000").End(xlUp).Row + 1).Value2
  sRow = UBound(sArr)
  For i = 1 To sRow - 1
    SoXe = sArr(i, 1)
    If SoXe <> Empty Then
      LoaiHang = sArr(i, 6):      Ngay = sArr(i, 16)
      For k = i + 1 To sRow
        If Ngay > sArr(k, 16) + 2 / 24 Then Exit For
        If sArr(k, 1) = SoXe Then
          If sArr(k, 6) = LoaiHang Then Exit For
          Res(1, 1) = Res(1, 1) + 1
          If LoaiHang = "Khoai" Then
            Res(2, 1) = Res(2, 1) + sArr(i, 12)
            Res(3, 1) = Res(3, 1) + sArr(k, 12)
          Else
            Res(2, 1) = Res(2, 1) + sArr(k, 12)
            Res(3, 1) = Res(3, 1) + sArr(i, 12)
          End If
          sArr(k, 1) = Empty
          Exit For
        End If
      Next k
    End If
  Next i
  Range("Y2:Y4") = Res
End Sub
Công thức của bạn hay, có thể gom lại đơn giản hơn được :)!
 
Mấy công thức mảng nhức đầu quá, bạn và bạn @Phan Thế Hiệp ra tay nhé
Chúc các bạn 1 ngày vui:)
Quan trọng thuật toán như thế nào, công thức của bạn có thể viết lại như vầy:
=SUM((J8={"Ngô","Khoai"})*($E$8:$E$74=E8)*($J$8:$J$74={"Khoai","Ngô"})*(ABS($T$8:$T$74-T8)<=2/24))

Giải quyết bài này bằng một công thức:
Đếm chuyến :
=SUM(N(MMULT(N(COUNTIFS($E$8:$E$74,$E$8:$E$74,$T$8:$T$74,">="&$T$8:$T$74-2/24,$T$8:$T$74,"<="&$T$8:$T$74+2/24,$J$8:$J$74,{"Ngô","Khoai"})>0),{1;1})=2))/2
Tính tổng:
=SUM((MMULT(N(COUNTIFS($E$8:$E$74,$E$8:$E$74,$T$8:$T$74,">="&$T$8:$T$74-2/24,$T$8:$T$74,"<="&$T$8:$T$74+2/24,$J$8:$J$74,{"Ngô","Khoai"})>0),{1;1})=2)*($J$8:$J$74="Khoai")*$P$8:$P$74)
Tất cả công thức bấm Ctrl+Shift+Enter!!!
Chúc bạn ngày vui :)!!
 
Quan trọng thuật toán như thế nào, công thức của bạn có thể viết lại như vầy:
=SUM((J8={"Ngô","Khoai"})*($E$8:$E$74=E8)*($J$8:$J$74={"Khoai","Ngô"})*(ABS($T$8:$T$74-T8)<=2/24))

Giải quyết bài này bằng một công thức:
Đếm chuyến :
=SUM(N(MMULT(N(COUNTIFS($E$8:$E$74,$E$8:$E$74,$T$8:$T$74,">="&$T$8:$T$74-2/24,$T$8:$T$74,"<="&$T$8:$T$74+2/24,$J$8:$J$74,{"Ngô","Khoai"})>0),{1;1})=2))/2
Tính tổng:
=SUM((MMULT(N(COUNTIFS($E$8:$E$74,$E$8:$E$74,$T$8:$T$74,">="&$T$8:$T$74-2/24,$T$8:$T$74,"<="&$T$8:$T$74+2/24,$J$8:$J$74,{"Ngô","Khoai"})>0),{1;1})=2)*($J$8:$J$74="Khoai")*$P$8:$P$74)
Tất cả công thức bấm Ctrl+Shift+Enter!!!
Chúc bạn ngày vui :)!!
Chuyên gia có khác :) công thức rất hay, nhìn hoa cả mắt :)
Dùng SumProduct thay thế Sum chỉ Enter bình thường
Chúc các bạn vui cả ngày :):):)
 
Web KT

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

Back
Top Bottom