Lấy dữ liệu theo nhiều điều kiện (1 người xem)

Liên hệ QC

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

Bích Tỷ

Thành viên chính thức
Tham gia
17/5/21
Bài viết
86
Được thích
19
Chào anh chị trên diễn đàn, nhờ anh chị hỗ trợ em một vấn đề như này ạ.
Lấy dữ liệu theo nhiều điều kiện:
1. Dựa vào ngày ở sheet SUMMARY (từ ngày- đến ngày) để lấy dữ liệu theo "CHUYỀN" ( Hình thể, kiểu giày, số lượng (1.1), đôi/h) từ sheets"0219" (loại bỏ dữ liệu trùng)
1.1. Cột số lượng thì tính tổng theo "Hình thể"
2. Cột "số người" thì dựa vào "tiêu chuẩn số đôi/ngày" và "hình thể" để lấy dữ liệu tương ứng từ sheet "STD"
3. Lấy dữ liệu tương tự cho những cột tương tự phía sau
=> Mình có kết quả mẫu như trong sheet Summary, mong anh chị giúp đỡ. Em cảm ơn
 

File đính kèm

Chào anh chị trên diễn đàn, nhờ anh chị hỗ trợ em một vấn đề như này ạ.
Lấy dữ liệu theo nhiều điều kiện:
1. Dựa vào ngày ở sheet SUMMARY (từ ngày- đến ngày) để lấy dữ liệu theo "CHUYỀN" ( Hình thể, kiểu giày, số lượng (1.1), đôi/h) từ sheets"0219" (loại bỏ dữ liệu trùng)
1.1. Cột số lượng thì tính tổng theo "Hình thể"
2. Cột "số người" thì dựa vào "tiêu chuẩn số đôi/ngày" và "hình thể" để lấy dữ liệu tương ứng từ sheet "STD"
3. Lấy dữ liệu tương tự cho những cột tương tự phía sau
=> Mình có kết quả mẫu như trong sheet Summary, mong anh chị giúp đỡ. Em cảm ơn
Anh chị ơi, giúp đỡ em vấn đề này với ạ.
 
Upvote 0
Thử xem sao. Hy vọng đúng ý
Nhắn bạn : không nên nối thông MergeCell
Hi anh/chị,
sau khi xem thì em thấy còn một số vấn đề như sau:
  • Cột số người chưa đúng (Cột số người dựa vào: Hình thể và số đôi tiêu chuẩn/ngày để lấy kết quả tương ứng)1645790202346.png
  • Dữ liệu hình thể theo chuyền chưa hiển thị hết (Chuyền CA còn hình thể 11211).1645789976542.png
  • Ngày 02/28 ở sheet "0219" vẫn có dữ liệu ở chuyền CA nhưng sheet "summary" lại không có
  • 1645790085498.png
  • Có thể giữ lại cái mẫu như ban đầu không (có thể bỏ MergeCell) và bỏ chữ TỔNG CỘNG (giữ lại Total)
  • Em cảm ơn ạ.
 
Upvote 0
Hi anh/chị,
sau khi xem thì em thấy còn một số vấn đề như sau:
  • Cột số người chưa đúng (Cột số người dựa vào: Hình thể và số đôi tiêu chuẩn/ngày để lấy kết quả tương ứng)View attachment 272481
  • Dữ liệu hình thể theo chuyền chưa hiển thị hết (Chuyền CA còn hình thể 11211).View attachment 272479
  • Ngày 02/28 ở sheet "0219" vẫn có dữ liệu ở chuyền CA nhưng sheet "summary" lại không có
  • View attachment 272480
  • Có thể giữ lại cái mẫu như ban đầu không (có thể bỏ MergeCell) và bỏ chữ TỔNG CỘNG (giữ lại Total)
  • Em cảm ơn ạ.
Có những nguyên tắc mà bạn phải theo vba chứ không không phải VBA theo ý của bạn. Chứ làm như bạn. Trước sau gì cũng xảy ra sự cố
 
Upvote 0
Hi anh/chị,
sau khi xem thì em thấy còn một số vấn đề như sau:
  • Cột số người chưa đúng (Cột số người dựa vào: Hình thể và số đôi tiêu chuẩn/ngày để lấy kết quả tương ứng)View attachment 272481
  • Dữ liệu hình thể theo chuyền chưa hiển thị hết (Chuyền CA còn hình thể 11211).View attachment 272479
  • Ngày 02/28 ở sheet "0219" vẫn có dữ liệu ở chuyền CA nhưng sheet "summary" lại không có
  • View attachment 272480
  • Có thể giữ lại cái mẫu như ban đầu không (có thể bỏ MergeCell) và bỏ chữ TỔNG CỘNG (giữ lại Total)
  • Em cảm ơn ạ.
Tải lại file. Chạy code, Kiểm tra và cho biết kết quả
 

File đính kèm

Upvote 0
Tải lại file. Chạy code, Kiểm tra và cho biết kết quả
Chào anh chị,
Sau khi chạy dữ liệu em thấy rằng
+ nếu tắt dòng code TOTAL này đi thì dữ liệu lấy ra đúng.
1645836131491.png
+ nhưng khi dòng này chạy luôn thì kết quả vừa xuất ra lại bị thay thế bằng dòng tính tổng nên kết quả bị sai.
1645836195633.png
Phiền anh chị xem giúp em chỗ này và trong dòng total ở cột "Đôi/h" tính trung bình và cột số người lấy MAX giúp em, em cảm ơn
 
Upvote 0
Chào anh chị,
Sau khi chạy dữ liệu em thấy rằng
+ nếu tắt dòng code TOTAL này đi thì dữ liệu lấy ra đúng.
View attachment 272483
+ nhưng khi dòng này chạy luôn thì kết quả vừa xuất ra lại bị thay thế bằng dòng tính tổng nên kết quả bị sai.
View attachment 272484
Phiền anh chị xem giúp em chỗ này và trong dòng total ở cột "Đôi/h" tính trung bình và cột số người lấy MAX giúp em, em cảm ơn
Tôi không kiểm tra kỹ nên để xảy ra thiếu sót, bạn thông cảm nhé. Thế cho nên mới nói bạn phải kiểm tra thật kỹ.
1/Bạn thay dòng erow = Rng.Rows.Count (ở gần cuối Sub) thành erow = Rng.Rows.Count + 1 và chạy thử.
2/Còn chỗ Trung bình của "Đôi/h" thì có phải là Tổng "Số lượng"/ Tổng "Đôi/h" không?
Số người lấy Max thì tính thế nào?
Bạn thử mô tả chi tiết cách lấy 2 chỉ tiêu này thì code mới làm đúng được tránh làm đi làm lại nhiều lần.
 
  • Thích
Reactions: th7
Upvote 0
Tôi không kiểm tra kỹ nên để xảy ra thiếu sót, bạn thông cảm nhé. Thế cho nên mới nói bạn phải kiểm tra thật kỹ.
1/Bạn thay dòng erow = Rng.Rows.Count (ở gần cuối Sub) thành erow = Rng.Rows.Count + 1 và chạy thử.
2/Còn chỗ Trung bình của "Đôi/h" thì có phải là Tổng "Số lượng"/ Tổng "Đôi/h" không?
Số người lấy Max thì tính thế nào?
Bạn thử mô tả chi tiết cách lấy 2 chỉ tiêu này thì code mới làm đúng được tránh làm đi làm lại nhiều lần.
Cảm ơn anh/Chị,
+ tính trung bình cho cột "Đôi/h" thì lấy trung bình của cột đó.
+ Tính max thì tính max ở cột số người thôi ạ.
1645840017245.png
 
Upvote 0
Cảm ơn anh/Chị,
+ tính trung bình cho cột "Đôi/h" thì lấy trung bình của cột đó.
+ Tính max thì tính max ở cột số người thôi ạ.
View attachment 272489
Bạn thay code cũ bằng code này nhé.
Mã:
Sub XYZ()
Dim i&, j&, k&, Lr&, R&, C&, DongTong&
Dim Arr(), KQ(), HT(), CONG()
Dim Tu As Date, Den As Date
Dim Key, Tmp, Keys
Dim Dic As Object, DicH  As Object, DicChuyen As Object
Dim Sh As Worksheet, Ws As Worksheet

Set Sh = Sheets("0219")
Lr = Sh.Cells(Rows.Count, 2).End(3).Row
Arr = Sh.Range("B6:G" & Lr).Value
R = UBound(Arr)
Set DicChuyen = CreateObject("Scripting.Dictionary")
For i = 1 To R
    If Not DicChuyen.Exists(Arr(i, 1)) Then n = n + 1: DicChuyen.Add (Arr(i, 1)), n
Next i

Set Ws = Sheets("STD")
Ld = Ws.Cells(Rows.Count, 2).End(3).Row
ArrN = Ws.Range("B4:I" & Ld).Value
Set DicH = CreateObject("Scripting.Dictionary")
ReDim HT(1 To UBound(ArrN), 1 To 2)
For i = 1 To UBound(ArrN)
Tmp = ArrN(i, 1) & "\" & ArrN(i, 7)
    If Not DicH.Exists(Tmp) Then
        k = k + 1: DicH.Add (Tmp), k
        HT(k, 1) = ArrN(i, 1)
        HT(k, 2) = ArrN(i, 8)
    End If
Next i
 Set WsS = Sheets("summary")
C = WsS.Cells(2, Columns.Count).End(xlToLeft).Column
WsS.Cells(4, 1).Resize(1000, C).ClearContents
WsS.Cells(4, 1).Resize(1000, C).Font.Bold = False
For Each Keys In DicChuyen.Keys
    Set Rng = WsS.Range("B2").CurrentRegion
    irow = Rng.Rows.Count + 1
    WsS.Cells(irow, 1) = Keys
        ReDim CONG(1 To 1, 1 To C)
            For j = 2 To C Step 5
                ReDim KQ(1 To R, 1 To 5)
                Tu = CDate(WsS.Cells(2, j + 1)) - 1
                Den = CDate(WsS.Cells(2, j + 4)) + 1
                t = 0
                Set Dic = CreateObject("Scripting.Dictionary")
                For i = 1 To R
                    If CDate(Arr(i, 4)) > Tu And CDate(Arr(i, 4)) < Den Then
                        If Arr(i, 1) = Keys Then
                            Key = Arr(i, 1) & Arr(i, 2)
                            Temp = Arr(i, 2) & "\" & WsS.[G1]
                            If Not Dic.Exists(Key) Then
                                t = t + 1: Dic.Add (Key), t
                                KQ(t, 1) = Arr(i, 2)
                                KQ(t, 2) = Arr(i, 6)
                                KQ(t, 3) = Arr(i, 3)
                                KQ(t, 4) = Arr(i, 5)
                                If DicH.Exists(Temp) Then KQ(t, 5) = HT(DicH.Item(Temp), 2)
                            Else
                                k = Dic.Item(Key)
                                KQ(k, 3) = KQ(k, 3) + Arr(i, 3)
                            End If
                        End If
                    End If
                Next i
                If t Then
                    WsS.Cells(irow, j).Resize(t, 5) = KQ
                    CONG(1, j) = "Total"
                    CONG(1, j + 1) = Application.Sum(WsS.Cells(irow, j + 2).Resize(t))
                    CONG(1, j + 2) = Application.Sum(WsS.Cells(irow, j + 3).Resize(t)) / t
                    CONG(1, j + 3) = Application.Max(WsS.Cells(irow, j + 4).Resize(t))
                End If
                Set Dic = Nothing
            Next j
            
            Set Rng = WsS.Range("B2").CurrentRegion
                      erow = Rng.Rows.Count + 1
            WsS.Cells(erow, 2).Resize(1, C) = CONG
            WsS.Cells(erow, 1).Resize(1, C).Font.Bold = True
Next Keys
Set DicH = Nothing
Set DicChuyen = Nothing
MsgBox "Xong", vbInformation, "THONG BÁO"
End Sub
Thay đổi dữ liệu (thêm bớt, sửa) ==>chạy thử===> kiểm tra kết quả.
 
Upvote 0
Bạn thay code cũ bằng code này nhé.
Mã:
Sub XYZ()
Dim i&, j&, k&, Lr&, R&, C&, DongTong&
Dim Arr(), KQ(), HT(), CONG()
Dim Tu As Date, Den As Date
Dim Key, Tmp, Keys
Dim Dic As Object, DicH  As Object, DicChuyen As Object
Dim Sh As Worksheet, Ws As Worksheet

Set Sh = Sheets("0219")
Lr = Sh.Cells(Rows.Count, 2).End(3).Row
Arr = Sh.Range("B6:G" & Lr).Value
R = UBound(Arr)
Set DicChuyen = CreateObject("Scripting.Dictionary")
For i = 1 To R
    If Not DicChuyen.Exists(Arr(i, 1)) Then n = n + 1: DicChuyen.Add (Arr(i, 1)), n
Next i

Set Ws = Sheets("STD")
Ld = Ws.Cells(Rows.Count, 2).End(3).Row
ArrN = Ws.Range("B4:I" & Ld).Value
Set DicH = CreateObject("Scripting.Dictionary")
ReDim HT(1 To UBound(ArrN), 1 To 2)
For i = 1 To UBound(ArrN)
Tmp = ArrN(i, 1) & "\" & ArrN(i, 7)
    If Not DicH.Exists(Tmp) Then
        k = k + 1: DicH.Add (Tmp), k
        HT(k, 1) = ArrN(i, 1)
        HT(k, 2) = ArrN(i, 8)
    End If
Next i
 Set WsS = Sheets("summary")
C = WsS.Cells(2, Columns.Count).End(xlToLeft).Column
WsS.Cells(4, 1).Resize(1000, C).ClearContents
WsS.Cells(4, 1).Resize(1000, C).Font.Bold = False
For Each Keys In DicChuyen.Keys
    Set Rng = WsS.Range("B2").CurrentRegion
    irow = Rng.Rows.Count + 1
    WsS.Cells(irow, 1) = Keys
        ReDim CONG(1 To 1, 1 To C)
            For j = 2 To C Step 5
                ReDim KQ(1 To R, 1 To 5)
                Tu = CDate(WsS.Cells(2, j + 1)) - 1
                Den = CDate(WsS.Cells(2, j + 4)) + 1
                t = 0
                Set Dic = CreateObject("Scripting.Dictionary")
                For i = 1 To R
                    If CDate(Arr(i, 4)) > Tu And CDate(Arr(i, 4)) < Den Then
                        If Arr(i, 1) = Keys Then
                            Key = Arr(i, 1) & Arr(i, 2)
                            Temp = Arr(i, 2) & "\" & WsS.[G1]
                            If Not Dic.Exists(Key) Then
                                t = t + 1: Dic.Add (Key), t
                                KQ(t, 1) = Arr(i, 2)
                                KQ(t, 2) = Arr(i, 6)
                                KQ(t, 3) = Arr(i, 3)
                                KQ(t, 4) = Arr(i, 5)
                                If DicH.Exists(Temp) Then KQ(t, 5) = HT(DicH.Item(Temp), 2)
                            Else
                                k = Dic.Item(Key)
                                KQ(k, 3) = KQ(k, 3) + Arr(i, 3)
                            End If
                        End If
                    End If
                Next i
                If t Then
                    WsS.Cells(irow, j).Resize(t, 5) = KQ
                    CONG(1, j) = "Total"
                    CONG(1, j + 1) = Application.Sum(WsS.Cells(irow, j + 2).Resize(t))
                    CONG(1, j + 2) = Application.Sum(WsS.Cells(irow, j + 3).Resize(t)) / t
                    CONG(1, j + 3) = Application.Max(WsS.Cells(irow, j + 4).Resize(t))
                End If
                Set Dic = Nothing
            Next j
           
            Set Rng = WsS.Range("B2").CurrentRegion
                      erow = Rng.Rows.Count + 1
            WsS.Cells(erow, 2).Resize(1, C) = CONG
            WsS.Cells(erow, 1).Resize(1, C).Font.Bold = True
Next Keys
Set DicH = Nothing
Set DicChuyen = Nothing
MsgBox "Xong", vbInformation, "THONG BÁO"
End Sub
Thay đổi dữ liệu (thêm bớt, sửa) ==>chạy thử===> kiểm tra kết quả.
cảm ơn anh/chị rất nhiều.
 
Upvote 0
Bạn thay code cũ bằng code này nhé.
Mã:
Sub XYZ()
Dim i&, j&, k&, Lr&, R&, C&, DongTong&
Dim Arr(), KQ(), HT(), CONG()
Dim Tu As Date, Den As Date
Dim Key, Tmp, Keys
Dim Dic As Object, DicH  As Object, DicChuyen As Object
Dim Sh As Worksheet, Ws As Worksheet

Set Sh = Sheets("0219")
Lr = Sh.Cells(Rows.Count, 2).End(3).Row
Arr = Sh.Range("B6:G" & Lr).Value
R = UBound(Arr)
Set DicChuyen = CreateObject("Scripting.Dictionary")
For i = 1 To R
    If Not DicChuyen.Exists(Arr(i, 1)) Then n = n + 1: DicChuyen.Add (Arr(i, 1)), n
Next i

Set Ws = Sheets("STD")
Ld = Ws.Cells(Rows.Count, 2).End(3).Row
ArrN = Ws.Range("B4:I" & Ld).Value
Set DicH = CreateObject("Scripting.Dictionary")
ReDim HT(1 To UBound(ArrN), 1 To 2)
For i = 1 To UBound(ArrN)
Tmp = ArrN(i, 1) & "\" & ArrN(i, 7)
    If Not DicH.Exists(Tmp) Then
        k = k + 1: DicH.Add (Tmp), k
        HT(k, 1) = ArrN(i, 1)
        HT(k, 2) = ArrN(i, 8)
    End If
Next i
 Set WsS = Sheets("summary")
C = WsS.Cells(2, Columns.Count).End(xlToLeft).Column
WsS.Cells(4, 1).Resize(1000, C).ClearContents
WsS.Cells(4, 1).Resize(1000, C).Font.Bold = False
For Each Keys In DicChuyen.Keys
    Set Rng = WsS.Range("B2").CurrentRegion
    irow = Rng.Rows.Count + 1
    WsS.Cells(irow, 1) = Keys
        ReDim CONG(1 To 1, 1 To C)
            For j = 2 To C Step 5
                ReDim KQ(1 To R, 1 To 5)
                Tu = CDate(WsS.Cells(2, j + 1)) - 1
                Den = CDate(WsS.Cells(2, j + 4)) + 1
                t = 0
                Set Dic = CreateObject("Scripting.Dictionary")
                For i = 1 To R
                    If CDate(Arr(i, 4)) > Tu And CDate(Arr(i, 4)) < Den Then
                        If Arr(i, 1) = Keys Then
                            Key = Arr(i, 1) & Arr(i, 2)
                            Temp = Arr(i, 2) & "\" & WsS.[G1]
                            If Not Dic.Exists(Key) Then
                                t = t + 1: Dic.Add (Key), t
                                KQ(t, 1) = Arr(i, 2)
                                KQ(t, 2) = Arr(i, 6)
                                KQ(t, 3) = Arr(i, 3)
                                KQ(t, 4) = Arr(i, 5)
                                If DicH.Exists(Temp) Then KQ(t, 5) = HT(DicH.Item(Temp), 2)
                            Else
                                k = Dic.Item(Key)
                                KQ(k, 3) = KQ(k, 3) + Arr(i, 3)
                            End If
                        End If
                    End If
                Next i
                If t Then
                    WsS.Cells(irow, j).Resize(t, 5) = KQ
                    CONG(1, j) = "Total"
                    CONG(1, j + 1) = Application.Sum(WsS.Cells(irow, j + 2).Resize(t))
                    CONG(1, j + 2) = Application.Sum(WsS.Cells(irow, j + 3).Resize(t)) / t
                    CONG(1, j + 3) = Application.Max(WsS.Cells(irow, j + 4).Resize(t))
                End If
                Set Dic = Nothing
            Next j
          
            Set Rng = WsS.Range("B2").CurrentRegion
                      erow = Rng.Rows.Count + 1
            WsS.Cells(erow, 2).Resize(1, C) = CONG
            WsS.Cells(erow, 1).Resize(1, C).Font.Bold = True
Next Keys
Set DicH = Nothing
Set DicChuyen = Nothing
MsgBox "Xong", vbInformation, "THONG BÁO"
End Sub
Thay đổi dữ liệu (thêm bớt, sửa) ==>chạy thử===> kiểm tra kết quả.
Chào anh/chị, em có một vấn đề muốn nhờ anh/chị xem giúp em là:
- Nếu số đôi tiêu chuẩn/Ngày không có trong sheet tiêu chuẩn thì sẽ lấy số người theo tiêu chuẩn lớn hơn gần nhất với điều kiện ở ô G1.
1646191992984.png
- em không biết sửa như thế nào cho đúng. em cảm ơn
 
Lần chỉnh sửa cuối:
Upvote 0
Chào anh/chị, em có một vấn đề muốn nhờ anh/chị xem giúp em là:
- Nếu số đôi tiêu chuẩn/Ngày không có trong sheet tiêu chuẩn thì sẽ lấy số người theo tiêu chuẩn lớn hơn gần nhất với điều kiện ở ô G1.
View attachment 272618
- em không biết sửa như thế nào cho đúng. em cảm ơn
Bạn thay code cũ bằng code này:
Mã:
Sub XYZ()
Dim i&, j&, k&, Lr&, R&, C&, DongTong&, M&
Dim Arr(), KQ(), HT(), CONG()
Dim Tu As Date, Den As Date
Dim Key, Tmp, Keys
Dim Dic As Object, DicH  As Object, DicChuyen As Object
Dim Sh As Worksheet, Ws As Worksheet

Set Sh = Sheets("0219")
Lr = Sh.Cells(Rows.Count, 2).End(3).Row
Arr = Sh.Range("B6:G" & Lr).Value
R = UBound(Arr)
Set DicChuyen = CreateObject("Scripting.Dictionary")
For i = 1 To R
    If Not DicChuyen.Exists(Arr(i, 1)) Then n = n + 1: DicChuyen.Add (Arr(i, 1)), n
Next i

Set Ws = Sheets("STD")
Ld = Ws.Cells(Rows.Count, 2).End(3).Row
ArrN = Ws.Range("B4:I" & Ld).Value
Set DicH = CreateObject("Scripting.Dictionary")
ReDim HT(1 To UBound(ArrN), 1 To 2)
For i = 1 To UBound(ArrN)
Tmp = ArrN(i, 1) & "|" & ArrN(i, 7)
    If Not DicH.Exists(Tmp) Then
        k = k + 1: DicH.Add (Tmp), k
        HT(k, 1) = ArrN(i, 1)
        HT(k, 2) = ArrN(i, 8)
    End If
Next i
 Set WsS = Sheets("summary")
C = WsS.Cells(2, Columns.Count).End(xlToLeft).Column
WsS.Cells(4, 1).Resize(1000, C).ClearContents
WsS.Cells(4, 1).Resize(1000, C).Font.Bold = False
For Each Keys In DicChuyen.Keys
    Set Rng = WsS.Range("B2").CurrentRegion
    irow = Rng.Rows.Count + 1
    WsS.Cells(irow, 1) = Keys
        ReDim CONG(1 To 1, 1 To C)
            For j = 2 To C Step 5
                ReDim KQ(1 To R, 1 To 5)
                Tu = CDate(WsS.Cells(2, j + 1)) - 1
                Den = CDate(WsS.Cells(2, j + 4)) + 1
                t = 0
                Set Dic = CreateObject("Scripting.Dictionary")
                For i = 1 To R
                    If CDate(Arr(i, 4)) > Tu And CDate(Arr(i, 4)) < Den Then
                        If Arr(i, 1) = Keys Then
                            Key = Arr(i, 1) & Arr(i, 2)
                            M = WsS.[G1]
                            Temp = Arr(i, 2) & "|" & WsS.[G1]
                            If Not Dic.Exists(Key) Then
                                t = t + 1: Dic.Add (Key), t
                                KQ(t, 1) = Arr(i, 2)
                                KQ(t, 2) = Arr(i, 6)
                                KQ(t, 3) = Arr(i, 3)
                                KQ(t, 4) = Arr(i, 5)
                                 If DicH.Exists(Temp) Then
                                     KQ(t, 5) = HT(DicH.Item(Temp), 2)
                                 Else
                                    For ii = 1 To UBound(ArrN, 1)
                                        If ArrN(ii, 1) = Arr(i, 2) Then
                                            If Abs(ArrN(ii, 7) - WsS.[G1]) < M Then
                                                M = Abs(ArrN(ii, 7) - WsS.[G1])
                                                KQ(t, 5) = ArrN(ii, 8)
                                            End If
                                        End If
                                    Next ii
                                 End If
                            Else
                                k = Dic.Item(Key)
                                KQ(k, 3) = KQ(k, 3) + Arr(i, 3)
                            End If
                        End If
                    End If
                Next i
                If t Then
                    WsS.Cells(irow, j).Resize(t, 5) = KQ
                    CONG(1, j) = "Total"
                    CONG(1, j + 1) = Application.Sum(WsS.Cells(irow, j + 2).Resize(t))
                    CONG(1, j + 2) = Application.Sum(WsS.Cells(irow, j + 3).Resize(t)) / t
                    CONG(1, j + 3) = Application.Max(WsS.Cells(irow, j + 4).Resize(t))
                End If
                Set Dic = Nothing
            Next j
            
            Set Rng = WsS.Range("B2").CurrentRegion
                      erow = Rng.Rows.Count + 1
            WsS.Cells(erow, 2).Resize(1, C) = CONG
            WsS.Cells(erow, 1).Resize(1, C).Font.Bold = True
Next Keys
Set DicH = Nothing
Set DicChuyen = Nothing
MsgBox "Xong", vbInformation, "THONG BÁO"
End Sub
 
Upvote 0
Bạn thay code cũ bằng code này:
Mã:
Sub XYZ()
Dim i&, j&, k&, Lr&, R&, C&, DongTong&, M&
Dim Arr(), KQ(), HT(), CONG()
Dim Tu As Date, Den As Date
Dim Key, Tmp, Keys
Dim Dic As Object, DicH  As Object, DicChuyen As Object
Dim Sh As Worksheet, Ws As Worksheet

Set Sh = Sheets("0219")
Lr = Sh.Cells(Rows.Count, 2).End(3).Row
Arr = Sh.Range("B6:G" & Lr).Value
R = UBound(Arr)
Set DicChuyen = CreateObject("Scripting.Dictionary")
For i = 1 To R
    If Not DicChuyen.Exists(Arr(i, 1)) Then n = n + 1: DicChuyen.Add (Arr(i, 1)), n
Next i

Set Ws = Sheets("STD")
Ld = Ws.Cells(Rows.Count, 2).End(3).Row
ArrN = Ws.Range("B4:I" & Ld).Value
Set DicH = CreateObject("Scripting.Dictionary")
ReDim HT(1 To UBound(ArrN), 1 To 2)
For i = 1 To UBound(ArrN)
Tmp = ArrN(i, 1) & "|" & ArrN(i, 7)
    If Not DicH.Exists(Tmp) Then
        k = k + 1: DicH.Add (Tmp), k
        HT(k, 1) = ArrN(i, 1)
        HT(k, 2) = ArrN(i, 8)
    End If
Next i
 Set WsS = Sheets("summary")
C = WsS.Cells(2, Columns.Count).End(xlToLeft).Column
WsS.Cells(4, 1).Resize(1000, C).ClearContents
WsS.Cells(4, 1).Resize(1000, C).Font.Bold = False
For Each Keys In DicChuyen.Keys
    Set Rng = WsS.Range("B2").CurrentRegion
    irow = Rng.Rows.Count + 1
    WsS.Cells(irow, 1) = Keys
        ReDim CONG(1 To 1, 1 To C)
            For j = 2 To C Step 5
                ReDim KQ(1 To R, 1 To 5)
                Tu = CDate(WsS.Cells(2, j + 1)) - 1
                Den = CDate(WsS.Cells(2, j + 4)) + 1
                t = 0
                Set Dic = CreateObject("Scripting.Dictionary")
                For i = 1 To R
                    If CDate(Arr(i, 4)) > Tu And CDate(Arr(i, 4)) < Den Then
                        If Arr(i, 1) = Keys Then
                            Key = Arr(i, 1) & Arr(i, 2)
                            M = WsS.[G1]
                            Temp = Arr(i, 2) & "|" & WsS.[G1]
                            If Not Dic.Exists(Key) Then
                                t = t + 1: Dic.Add (Key), t
                                KQ(t, 1) = Arr(i, 2)
                                KQ(t, 2) = Arr(i, 6)
                                KQ(t, 3) = Arr(i, 3)
                                KQ(t, 4) = Arr(i, 5)
                                 If DicH.Exists(Temp) Then
                                     KQ(t, 5) = HT(DicH.Item(Temp), 2)
                                 Else
                                    For ii = 1 To UBound(ArrN, 1)
                                        If ArrN(ii, 1) = Arr(i, 2) Then
                                            If Abs(ArrN(ii, 7) - WsS.[G1]) < M Then
                                                M = Abs(ArrN(ii, 7) - WsS.[G1])
                                                KQ(t, 5) = ArrN(ii, 8)
                                            End If
                                        End If
                                    Next ii
                                 End If
                            Else
                                k = Dic.Item(Key)
                                KQ(k, 3) = KQ(k, 3) + Arr(i, 3)
                            End If
                        End If
                    End If
                Next i
                If t Then
                    WsS.Cells(irow, j).Resize(t, 5) = KQ
                    CONG(1, j) = "Total"
                    CONG(1, j + 1) = Application.Sum(WsS.Cells(irow, j + 2).Resize(t))
                    CONG(1, j + 2) = Application.Sum(WsS.Cells(irow, j + 3).Resize(t)) / t
                    CONG(1, j + 3) = Application.Max(WsS.Cells(irow, j + 4).Resize(t))
                End If
                Set Dic = Nothing
            Next j
           
            Set Rng = WsS.Range("B2").CurrentRegion
                      erow = Rng.Rows.Count + 1
            WsS.Cells(erow, 2).Resize(1, C) = CONG
            WsS.Cells(erow, 1).Resize(1, C).Font.Bold = True
Next Keys
Set DicH = Nothing
Set DicChuyen = Nothing
MsgBox "Xong", vbInformation, "THONG BÁO"
End Sub
cảm ơn anh rất nhiều
 
Upvote 0
Bạn thay code cũ bằng code này:
Mã:
Sub XYZ()
Dim i&, j&, k&, Lr&, R&, C&, DongTong&, M&
Dim Arr(), KQ(), HT(), CONG()
Dim Tu As Date, Den As Date
Dim Key, Tmp, Keys
Dim Dic As Object, DicH  As Object, DicChuyen As Object
Dim Sh As Worksheet, Ws As Worksheet

Set Sh = Sheets("0219")
Lr = Sh.Cells(Rows.Count, 2).End(3).Row
Arr = Sh.Range("B6:G" & Lr).Value
R = UBound(Arr)
Set DicChuyen = CreateObject("Scripting.Dictionary")
For i = 1 To R
    If Not DicChuyen.Exists(Arr(i, 1)) Then n = n + 1: DicChuyen.Add (Arr(i, 1)), n
Next i

Set Ws = Sheets("STD")
Ld = Ws.Cells(Rows.Count, 2).End(3).Row
ArrN = Ws.Range("B4:I" & Ld).Value
Set DicH = CreateObject("Scripting.Dictionary")
ReDim HT(1 To UBound(ArrN), 1 To 2)
For i = 1 To UBound(ArrN)
Tmp = ArrN(i, 1) & "|" & ArrN(i, 7)
    If Not DicH.Exists(Tmp) Then
        k = k + 1: DicH.Add (Tmp), k
        HT(k, 1) = ArrN(i, 1)
        HT(k, 2) = ArrN(i, 8)
    End If
Next i
 Set WsS = Sheets("summary")
C = WsS.Cells(2, Columns.Count).End(xlToLeft).Column
WsS.Cells(4, 1).Resize(1000, C).ClearContents
WsS.Cells(4, 1).Resize(1000, C).Font.Bold = False
For Each Keys In DicChuyen.Keys
    Set Rng = WsS.Range("B2").CurrentRegion
    irow = Rng.Rows.Count + 1
    WsS.Cells(irow, 1) = Keys
        ReDim CONG(1 To 1, 1 To C)
            For j = 2 To C Step 5
                ReDim KQ(1 To R, 1 To 5)
                Tu = CDate(WsS.Cells(2, j + 1)) - 1
                Den = CDate(WsS.Cells(2, j + 4)) + 1
                t = 0
                Set Dic = CreateObject("Scripting.Dictionary")
                For i = 1 To R
                    If CDate(Arr(i, 4)) > Tu And CDate(Arr(i, 4)) < Den Then
                        If Arr(i, 1) = Keys Then
                            Key = Arr(i, 1) & Arr(i, 2)
                            M = WsS.[G1]
                            Temp = Arr(i, 2) & "|" & WsS.[G1]
                            If Not Dic.Exists(Key) Then
                                t = t + 1: Dic.Add (Key), t
                                KQ(t, 1) = Arr(i, 2)
                                KQ(t, 2) = Arr(i, 6)
                                KQ(t, 3) = Arr(i, 3)
                                KQ(t, 4) = Arr(i, 5)
                                 If DicH.Exists(Temp) Then
                                     KQ(t, 5) = HT(DicH.Item(Temp), 2)
                                 Else
                                    For ii = 1 To UBound(ArrN, 1)
                                        If ArrN(ii, 1) = Arr(i, 2) Then
                                            If Abs(ArrN(ii, 7) - WsS.[G1]) < M Then
                                                M = Abs(ArrN(ii, 7) - WsS.[G1])
                                                KQ(t, 5) = ArrN(ii, 8)
                                            End If
                                        End If
                                    Next ii
                                 End If
                            Else
                                k = Dic.Item(Key)
                                KQ(k, 3) = KQ(k, 3) + Arr(i, 3)
                            End If
                        End If
                    End If
                Next i
                If t Then
                    WsS.Cells(irow, j).Resize(t, 5) = KQ
                    CONG(1, j) = "Total"
                    CONG(1, j + 1) = Application.Sum(WsS.Cells(irow, j + 2).Resize(t))
                    CONG(1, j + 2) = Application.Sum(WsS.Cells(irow, j + 3).Resize(t)) / t
                    CONG(1, j + 3) = Application.Max(WsS.Cells(irow, j + 4).Resize(t))
                End If
                Set Dic = Nothing
            Next j
          
            Set Rng = WsS.Range("B2").CurrentRegion
                      erow = Rng.Rows.Count + 1
            WsS.Cells(erow, 2).Resize(1, C) = CONG
            WsS.Cells(erow, 1).Resize(1, C).Font.Bold = True
Next Keys
Set DicH = Nothing
Set DicChuyen = Nothing
MsgBox "Xong", vbInformation, "THONG BÁO"
End Sub
Dạ chào anh, sau thì áp dụng đoạn code mà anh hỗ trợ rất tốt. và e có cải tiến thêm báo cáo nhưng không biết sửa để lấy tiêu chuẩn về số người:
+ lấy chuyền/ hình thể/kiểu giày/số lượng, đôi/h thì vẫn giữ như cũ.
+ em lược bỏ đi tiêu chuẩn đôi ở ô G1.
+ Thay đổi cách lấy tiêu chuẩn: dựa vào số đôi/h vừa lấy ra để dò trong sheet Standard_2 lớn hơn gần nhất, sheet "May" thì lấy tiêu chuẩn cột May, sheet "Thanh Pham" thi lấy tiêu chuẩn cột thành phẩm tương ứng với hình thể.

Chân thành cảm ơn anh ạ.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Bạn thay code cũ bằng code này:
Mã:
Sub XYZ()
Dim i&, j&, k&, Lr&, R&, C&, DongTong&, M&
Dim Arr(), KQ(), HT(), CONG()
Dim Tu As Date, Den As Date
Dim Key, Tmp, Keys
Dim Dic As Object, DicH  As Object, DicChuyen As Object
Dim Sh As Worksheet, Ws As Worksheet

Set Sh = Sheets("0219")
Lr = Sh.Cells(Rows.Count, 2).End(3).Row
Arr = Sh.Range("B6:G" & Lr).Value
R = UBound(Arr)
Set DicChuyen = CreateObject("Scripting.Dictionary")
For i = 1 To R
    If Not DicChuyen.Exists(Arr(i, 1)) Then n = n + 1: DicChuyen.Add (Arr(i, 1)), n
Next i

Set Ws = Sheets("STD")
Ld = Ws.Cells(Rows.Count, 2).End(3).Row
ArrN = Ws.Range("B4:I" & Ld).Value
Set DicH = CreateObject("Scripting.Dictionary")
ReDim HT(1 To UBound(ArrN), 1 To 2)
For i = 1 To UBound(ArrN)
Tmp = ArrN(i, 1) & "|" & ArrN(i, 7)
    If Not DicH.Exists(Tmp) Then
        k = k + 1: DicH.Add (Tmp), k
        HT(k, 1) = ArrN(i, 1)
        HT(k, 2) = ArrN(i, 8)
    End If
Next i
 Set WsS = Sheets("summary")
C = WsS.Cells(2, Columns.Count).End(xlToLeft).Column
WsS.Cells(4, 1).Resize(1000, C).ClearContents
WsS.Cells(4, 1).Resize(1000, C).Font.Bold = False
For Each Keys In DicChuyen.Keys
    Set Rng = WsS.Range("B2").CurrentRegion
    irow = Rng.Rows.Count + 1
    WsS.Cells(irow, 1) = Keys
        ReDim CONG(1 To 1, 1 To C)
            For j = 2 To C Step 5
                ReDim KQ(1 To R, 1 To 5)
                Tu = CDate(WsS.Cells(2, j + 1)) - 1
                Den = CDate(WsS.Cells(2, j + 4)) + 1
                t = 0
                Set Dic = CreateObject("Scripting.Dictionary")
                For i = 1 To R
                    If CDate(Arr(i, 4)) > Tu And CDate(Arr(i, 4)) < Den Then
                        If Arr(i, 1) = Keys Then
                            Key = Arr(i, 1) & Arr(i, 2)
                            M = WsS.[G1]
                            Temp = Arr(i, 2) & "|" & WsS.[G1]
                            If Not Dic.Exists(Key) Then
                                t = t + 1: Dic.Add (Key), t
                                KQ(t, 1) = Arr(i, 2)
                                KQ(t, 2) = Arr(i, 6)
                                KQ(t, 3) = Arr(i, 3)
                                KQ(t, 4) = Arr(i, 5)
                                 If DicH.Exists(Temp) Then
                                     KQ(t, 5) = HT(DicH.Item(Temp), 2)
                                 Else
                                    For ii = 1 To UBound(ArrN, 1)
                                        If ArrN(ii, 1) = Arr(i, 2) Then
                                            If Abs(ArrN(ii, 7) - WsS.[G1]) < M Then
                                                M = Abs(ArrN(ii, 7) - WsS.[G1])
                                                KQ(t, 5) = ArrN(ii, 8)
                                            End If
                                        End If
                                    Next ii
                                 End If
                            Else
                                k = Dic.Item(Key)
                                KQ(k, 3) = KQ(k, 3) + Arr(i, 3)
                            End If
                        End If
                    End If
                Next i
                If t Then
                    WsS.Cells(irow, j).Resize(t, 5) = KQ
                    CONG(1, j) = "Total"
                    CONG(1, j + 1) = Application.Sum(WsS.Cells(irow, j + 2).Resize(t))
                    CONG(1, j + 2) = Application.Sum(WsS.Cells(irow, j + 3).Resize(t)) / t
                    CONG(1, j + 3) = Application.Max(WsS.Cells(irow, j + 4).Resize(t))
                End If
                Set Dic = Nothing
            Next j
           
            Set Rng = WsS.Range("B2").CurrentRegion
                      erow = Rng.Rows.Count + 1
            WsS.Cells(erow, 2).Resize(1, C) = CONG
            WsS.Cells(erow, 1).Resize(1, C).Font.Bold = True
Next Keys
Set DicH = Nothing
Set DicChuyen = Nothing
MsgBox "Xong", vbInformation, "THONG BÁO"
End Sub
Chào bạn @HUONGHCKT . Vẫn tích cực với diễn đàn như ngày nào nhỉ.
 
Upvote 0
Dạ chào anh, sau thì áp dụng đoạn code mà anh hỗ trợ rất tốt. và e có cải tiến thêm báo cáo nhưng không biết sửa để lấy tiêu chuẩn về số người:
+ lấy chuyền/ hình thể/kiểu giày/số lượng, đôi/h thì vẫn giữ như cũ.
+ em lược bỏ đi tiêu chuẩn đôi ở ô G1.
+ Thay đổi cách lấy tiêu chuẩn: dựa vào số đôi/h vừa lấy ra để dò trong sheet Standard_2 lớn hơn gần nhất, sheet "May" thì lấy tiêu chuẩn cột May, sheet "Thanh Pham" thi lấy tiêu chuẩn cột thành phẩm tương ứng với hình thể.

Chân thành cảm ơn anh ạ.
Bạn chạy code cũ của tôi thấy thế nào?Có đúng kết quả mong muốn không mà không hấy báo lại?
Còn giờ thì tôi đã xem file và căng não ra mà không biết bạn định gì?
Bạn viết "...dựa vào số đôi/h vừa lấy ra để dò trong sheet Standard_2 lớn hơn gần nhất ...) thì là dò dòng hoặc cột nào? tôi hiểu là các ô E4:E.../shMAY để để dò trong dòng BB2:BS2/sheet Standard_2 . "..lớn hơn gần nhất..." là so với cái gì với cái gì? "...thi lấy tiêu chuẩn cột thành phẩm... ". Tiêu chuẩn gì? ở cột nào? Cột nào là cột Thành phẩm? "tương ứng với hình thể." là tương ứng với dòng nào (cột A) của Sh Standa? khi mà cột A có đến gần 200 dòng và có nhiều dòng trùng nhau (cả cột A và B).
Tốt nhất là bạn làm tay kết quả mong muốn (mô tả rõ cách lấy dữ liệu (tiêu chuẩn thế nào để lấy dữ liệu của dòng,cột nào....) có như vậy mới dễ hình dung để code.
Bài đã được tự động gộp:

Chào bạn @HUONGHCKT . Vẫn tích cực với diễn đàn như ngày nào nhỉ.
Cảm ơn Anh đã quan tâm! Ở nhà chống dịch nên có thời gian dỗi. Giờ thì được thăng cấp (f0) rồi ngồi buồn lại dạo trên diễn đàn để học hỏi thêm.
Còn Anh bấy lâu nay cũng thấy vắng mặt, hay là bận không có thời gian?
 
Lần chỉnh sửa cuối:
Upvote 0
Upvote 0
Bạn chạy code cũ của tôi thấy thế nào?Có đúng kết quả mong muốn không mà không hấy báo lại?
Còn giờ thì tôi đã xem file và căng não ra mà không biết bạn định gì?
Bạn viết "...dựa vào số đôi/h vừa lấy ra để dò trong sheet Standard_2 lớn hơn gần nhất ...) thì là dò dòng hoặc cột nào? tôi hiểu là các ô E4:E.../shMAY để để dò trong dòng BB2:BS2/sheet Standard_2 . "..lớn hơn gần nhất..." là so với cái gì với cái gì? "...thi lấy tiêu chuẩn cột thành phẩm... ". Tiêu chuẩn gì? ở cột nào? Cột nào là cột Thành phẩm? "tương ứng với hình thể." là tương ứng với dòng nào (cột A) của Sh Standa? khi mà cột A có đến gần 200 dòng và có nhiều dòng trùng nhau (cả cột A và B).
Tốt nhất là bạn làm tay kết quả mong muốn (mô tả rõ cách lấy dữ liệu (tiêu chuẩn thế nào để lấy dữ liệu của dòng,cột nào....) có như vậy mới dễ hình dung để code.
Bài đã được tự động gộp:


Cảm ơn Anh đã quan tâm! Ở nhà chống dịch nên có thời gian dỗi. Giờ thì được thăng cấp (f0) rồi ngồi buồn lại dạo trên diễn đàn để học hỏi thêm.
Còn Anh bấy lâu nay cũng thấy vắng mặt, hay là bận không có thời gian?
dạ, code vừa rồi của anh chạy đúng với cái em cần anh ạ.
1. Sau khi lấy dữ liệu từ sheet 0219 xong thì sẽ được như thế này:
1647323633378.png
2/ sau đó dựa vào số "ĐÔI/H" và mã hình thể đem so với sheet "standard 2"
1647323922772.png
3/ ở file này em chia ra làm 2 sheet may và thành phẩm.
- sheet may thì lấy SỐ của cột may tương ứng điều kiện với số đôi/h (lớn hơn gần nhất so với đôi/h ở hình 1) và hình thể
- sheet thanh phâm tương tự sheet may. (kết quả dữ liệu sheet may và thành phẩm đều giống nhau chỉ khác nhau về phần lấy tiêu chuẩn)
4/ kết quả trả về ở cốt SỐ NGƯỜI.
1647324161960.png
5/ kết quả như file đính kèm anh ạ
em cảm ơn anh ạ. chúc anh mau khỏe ạ.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Một lần nữa cảm ơn Anh!
dạ, code vừa rồi của anh chạy đúng với cái em cần anh ạ.
1. Sau khi lấy dữ liệu từ sheet 0219 xong thì sẽ được như thế này:

2/ sau đó dựa vào số "ĐÔI/H" và mã hình thể đem so với sheet "standard 2"

3/ ở file này em chia ra làm 2 sheet may và thành phẩm.
- sheet may thì lấy SỐ của cột may tương ứng điều kiện với số đôi/h (lớn hơn gần nhất so với đôi/h ở hình 1) và hình thể
- sheet thanh phâm tương tự sheet may. (kết quả dữ liệu sheet may và thành phẩm đều giống nhau chỉ khác nhau về phần lấy tiêu chuẩn)
4/ kết quả trả về ở cốt SỐ NGƯỜI.

5/ kết quả như file đính kèm anh ạ
em cảm ơn anh ạ. chúc anh mau khỏe ạ.
Cảm ơn bạn đã quan tâm.
Của bạn đây, hy vọng đúng ý.
Bạn hãy thử chạy code, kiểm tra lại
Thêm bớt dữ liệu==>chạy code==> kiểm tra.
Định thêm phần định dạng nữa, nhưng có cảm thấy code chạy chậm hơn.
Ô tô vàng ở Sh may và Sh 0219 để thử, nếu bạn muốn có thể thay đổi
 

File đính kèm

Upvote 0
Một lần nữa cảm ơn Anh!

Cảm ơn bạn đã quan tâm.
Của bạn đây, hy vọng đúng ý.
Bạn hãy thử chạy code, kiểm tra lại
Thêm bớt dữ liệu==>chạy code==> kiểm tra.
Định thêm phần định dạng nữa, nhưng có cảm thấy code chạy chậm hơn.
Ô tô vàng ở Sh may và Sh 0219 để thử, nếu bạn muốn có thể thay đổi
cảm ơn anh nhiều, sau khi thêm nhiều dữ liệu vào thì kết quả trả về đúng so với dữ liệu mẫu.
Phần định dạng thì không cần thiết anh à, vì dữ liệu thật rất nhiều nên em chỉ kẻ khung thôi anh.
 
Upvote 0
Xin nhờ Anh Chị Em trên diễn đàn giúp đỡ
Tôi muốn đếm số nhân viên thỏa mãn điều kiện của các cột như sau:
điều kiện 1: giống nhau (cột thứ nhất)
điều kiện 2: khác nhau (cột thứ Hai, không được trùng lặp nhau).
Tôi cứ loay hoay tìm kiếm cách xử lý hoài mà không có giải pháp thực hiện.
Tôi xin gửi file kèm theo, mong mọi người trên diễn đàn giúp đỡ, cám ơn Anh Chị Em nhiều,
 

File đính kèm

Upvote 0
Xin nhờ Anh Chị Em trên diễn đàn giúp đỡ
Tôi muốn đếm số nhân viên thỏa mãn điều kiện của các cột như sau:
điều kiện 1: giống nhau (cột thứ nhất)
điều kiện 2: khác nhau (cột thứ Hai, không được trùng lặp nhau).
Tôi cứ loay hoay tìm kiếm cách xử lý hoài mà không có giải pháp thực hiện.
Tôi xin gửi file kèm theo, mong mọi người trên diễn đàn giúp đỡ, cám ơn Anh Chị Em nhiều,
Anh diễn giải cách tính thủ công ra 4 người của anh xem cụ thể thế nào. Em làm thử thế này không biết đúng ý anh không.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Anh diễn giải cách tính thủ công ra 4 người của anh xem cụ thể thế nào. Em làm thử thế này không biết đúng ý anh không.
Cám ơn Hoàng Tuấn nhiều, Hùng cũng đã dùng Hàm như vậy rồi nhưng kết quả báo lỗi nhỉ! Sẽ xem lại kỹ hơn, có thể bị lỗi gì đó! Cám ơn Tuấn lần nữa nhé!
 
Upvote 0
Cám ơn Hoàng Tuấn nhiều, Hùng cũng đã dùng Hàm như vậy rồi nhưng kết quả báo lỗi nhỉ! Sẽ xem lại kỹ hơn, có thể bị lỗi gì đó! Cám ơn Tuấn lần nữa nhé!
Bị lỗi như thế nào bạn nói rõ được không.
1647586380271.png
Mình dùng thấy bình thường mà.
 
Lần chỉnh sửa cuối:
Upvote 0
Cám ơn Hoàng Tuấn nhiều, Hùng cũng đã dùng Hàm như vậy rồi nhưng kết quả báo lỗi nhỉ! Sẽ xem lại kỹ hơn, có thể bị lỗi gì đó! Cám ơn Tuấn lần nữa nhé!
Chào Tuấn: Công thức có trường hợp đã trả về là một số lẻ (thập phân), cần roundup lên thì hoàn toàn đúng, cám ơn Tuấn.
 
Upvote 0
Upvote 0
Thấy đúng yêu cầu rồi mà nhỉ
Kết quả vẫn không đùng Tuấn ơi! Hùng thêm 1 cột điều kiện và bổ sung nhiều hàng dữ liệu (file đính kèm), kết quả không như mong đợi. Anh Chị em xem và giúp đỡ Hùng nhé, Hùng xin cám ơn nhiều.
 

File đính kèm

Upvote 0
............. Xin lỗi. Hình như em đang có chút hiểu nhầm
 

File đính kèm

  • 1647592673826.png
    1647592673826.png
    115.9 KB · Đọc: 13
Lần chỉnh sửa cuối:
Upvote 0
Điều kiện Th2_22 (bên dưới) thì bị loại ra, điều kiện Th1_22 (ở trên) thi được chọn và kết quả đúng phải là 8 người chứ, nhưng theo Cong thức thì chỉ có 4 người (là không đúng) bị thiếu 4 người. Tuấn xem lại thử Công thức có bị lỗi không? cám ơn Tuấn nhiều!
 
Upvote 0
Hùng đã kiểm tra rồi, rất OK. Cám ơn Hoàng Tuấn rất nhiều nhé! Chúc Tuấn và Thuân nhiều sức khoẻ và bình an.
Trường hợp này của bạn theo mình thì lấy không trùng ở cột A, mã nhân viên thì hợp lý hơn, vì nếu 2 người khác nhau mà cùng tên thì đếm sẽ sai, còn lấy điều kiện không trùng theo mã nhân viên thì không sai được.
 
Upvote 0
Rất đúng, Hùng đã định danh (ID) Họ và Tên nhân viên bằng trường MNV khác biệt hoàn toàn rồi để tránh trường hợp có nhiều người trùng Họ và Tên, sử dụng trường MNV để xác định các trường hợp khác biệt rất OK.
Cám ơn Tuấn nhiều nhé! Chúc Tuấn sức khỏe và bình an.
 
Upvote 0

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

Back
Top Bottom