Đếm bỏ qua các giá trị trùng nhau theo điều kiện

Liên hệ QC

huongmai

Thành viên mới
Tham gia
28/11/08
Bài viết
39
Được thích
1
Chào các anh chị và các bạn,
Tôi đang gặp một vấn đề sau mà chưa giải quyết được.
Tôi đang cần đếm số mã sản phẩm sử dụng trên cùng 1 máy trong 1 ngày (đánh theo số thứ tự xuất hiện).
Tôi gửi file đính kèm, cột giá trị cần màu đỏ.
Nhờ các anh chị và các bạn chỉ giùm.
Tôi xin chân thành cảm ơn.
Hương
 

File đính kèm

  • DEM.xlsx
    10.8 KB · Đọc: 44
Chào các anh chị và các bạn,
Tôi đang gặp một vấn đề sau mà chưa giải quyết được.
Tôi đang cần đếm số mã sản phẩm sử dụng trên cùng 1 máy trong 1 ngày (đánh theo số thứ tự xuất hiện).
Tôi gửi file đính kèm, cột giá trị cần màu đỏ.
Nhờ các anh chị và các bạn chỉ giùm.
Tôi xin chân thành cảm ơn.
Hương

Mong các cao thủ chỉ giùm. Mình vẫn không tìm ra công thức hay cách nào cả.
Xin cảm ơn.
 
Chào các anh chị và các bạn,
Tôi đang gặp một vấn đề sau mà chưa giải quyết được.
Tôi đang cần đếm số mã sản phẩm sử dụng trên cùng 1 máy trong 1 ngày (đánh theo số thứ tự xuất hiện).
Tôi gửi file đính kèm, cột giá trị cần màu đỏ.
Nhờ các anh chị và các bạn chỉ giùm.
Tôi xin chân thành cảm ơn.
Hương
Hình như kết quả đếm tay không đúng lắm thì phải
Như SJ45010 toàn file còn không có đến 3 giá trị mà sao đếm ra được 3.
 
Chào các anh chị và các bạn,
Tôi đang gặp một vấn đề sau mà chưa giải quyết được.
Tôi đang cần đếm số mã sản phẩm sử dụng trên cùng 1 máy trong 1 ngày (đánh theo số thứ tự xuất hiện).
Tôi gửi file đính kèm, cột giá trị cần màu đỏ.
Nhờ các anh chị và các bạn chỉ giùm.
Tôi xin chân thành cảm ơn.
Hương
Đọc mãi mới hiểu logic của bạn. Mình biểu thị cái logic sắp xếp của bạn ra cột phụ rồi dùng công thức tìm kiếm dữ liệu so khớp với vùng cột phụ đó. Lúc này bài toán được đưa về thành đánh số thứ tự các mã con trong các mã lớn
 

File đính kèm

  • DEM.xlsx
    23.2 KB · Đọc: 22
Lần chỉnh sửa cuối:
bài của chủ thớt khó hiểu thật @@ mình đọc mấy lần vẫn chưa hiểu
 
bài của chủ thớt khó hiểu thật @@ mình đọc mấy lần vẫn chưa hiểu
Filter theo từng mã máy sẽ hiểu được ý của chủ thớt.
Đại khái yêu cầu như sau:
  • Xét trong cùng một máy, SP thứ 1 xuất hiện sẽ được đánh số thứ tự (STT) là 1. STT của SP này sẽ cố định cho dù nó có phát sinh thêm tại các dòng dưới đó trong cùng một máy. STT sẽ tăng lên 1 đơn vị chỉ khi phát sinh SP khác (cũng vẫn cùng máy đó). Tương tự như vậy cho các SP dòng tiếp theo.

Tôi đang cần đếm số mã sản phẩm sử dụng trên cùng 1 máy trong 1 ngày (đánh theo số thứ tự xuất hiện).
Thử:
Mã:
F2=IF(COUNTIFS($C$2:$C2,$C2,$D$2:$D2,$D2)>1,LOOKUP(2,1/(C2=$C$1:$C1)/(D2=$D$1:$D1),$F$1:$F1),SUMPRODUCT(($C$2:$C2=$C2)/COUNTIFS($C$2:$C2,$C$2:$C2,$D$2:$D2,$D$2:$D2)))
Enter, fill xuống

Thân
 

File đính kèm

  • DEM.xlsx
    13.5 KB · Đọc: 25
Lần chỉnh sửa cuối:
Filter theo từng mã máy sẽ hiểu được ý của chủ thớt.
Đại khái yêu cầu như sau:
  • Xét trong cùng một máy, SP thứ 1 xuất hiện sẽ được đánh số thứ tự (STT) là 1. STT của SP này sẽ cố định cho dù nó có phát sinh thêm tại các dòng dưới đó trong cùng một máy. STT sẽ tăng lên 1 đơn vị chỉ khi phát sinh SP khác (cũng vẫn cùng máy đó). Tương tự như vậy cho các SP dòng tiếp theo.
Thân
Em góp vui
Hàm hơi lủng củng nhưng đại ý là:
Nếu mã máy chỉ mới xuất hiện 1 lần, kết quả trả ngay là 1, nếu mã máy và mã sản phẩm xuất hiện lần thứ 2 trở đi thì trả về STT gần nhất đã được tính toán trước đó, nếu phát sinh mã SP mới thì lấy STT lớn nhất đã có của mã máy đó cộng thêm 1
Mã:
G2==IF(COUNTIF($C$2:C2,C2)=1,1,IF(COUNTIFS($D$2:D2,D2,$C$2:C2,C2)>1,LOOKUP(2,1/(($C$1:C1)=C2)/(($D$1:D1)=D2),($G$1:G1)),MAX((($C$1:C1)=C2)*($G$1:G1))+1))
Kết thúc bằng Ctrl Shift Enter

Edit: Xem thêm #16 để có thể kết thúc bằng Enter thay vì Ctrl Shift Enter
 
Lần chỉnh sửa cuối:
đọc mãi cũng hiểu ý thớt @@
cảm ơn bác @Phan Thế Hiệp đã giải thích cụ thể hơn ^^^^
Mã:
Sub tinhtoan()
Dim i As Long, eR As Long, j As Long, k As Long
Dim sArr()
With Sheet1
    eR = .Range("C" & Rows.Count).End(3).Row
    sArr = .Range("C2:D" & eR).Value
    For j = 2 To 9
    k = 0
    With CreateObject("scripting.dictionary")
            For i = 1 To UBound(sArr)
            If sArr(i, 1) = Cells(j, 3) Then
            Key = sArr(i, 2)
                If Not .exists(Key) Then
                k = k + 1
                .Add Key, k
                Cells(i + 1, 8) = k
                Else
                Cells(i + 1, 8) = .Item(Key)
                End If
            End If
        Next i
    End With
    Next j
End With
End Sub
 
Lần chỉnh sửa cuối:
Em góp vui
Hàm hơi lủng củng nhưng đại ý là:
Nếu mã máy chỉ mới xuất hiện 1 lần, kết quả trả ngay là 1, nếu mã máy và mã sản phẩm xuất hiện lần thứ 2 trở đi thì trả về STT gần nhất đã được tính toán trước đó.
G2=IF(COUNTIF($C$2:C2,C2)=1,1,IF(COUNTIFS($D$2: D2,D2,$C$2:C2,C2)>1,LOOKUP(2,1/(($C$1:C1)=C2)/(($D$1: D1)=D2),($G$1:G1)), LOOKUP(2,1/(($C$1:C1)=C2),$G$1:G1)+1))
Việc lấy giá trị trên gần nhất cộng thêm 1 giá trị nếu SP đó mới phát sinh trong cùng mã máy, rất nguy hiểm, ví dụ: với công thức cộng 1
  • Dòng 1: máy 5F - SJ45039 - stt: 1 (xuất hiện đầu lấy giá trị 1)
  • Dòng 2: máy 5F - SJ45039 - stt: 1 (lần thứ 2 xuất hiện lấy giá trị giống trên cùng mã SP)
  • Dòng 3: máy 5F - SJ45009 - stt: 2 (xuất hiện đầu lấy giá trị: Dòng2 + 1 = 2)
  • Dòng 4: máy 5F - SJ45039 - stt: 1 (lần thứ 3 xuất hiện lấy giá trị giống trên cùng mã SP)
  • Dòng 5: máy 5F - SJ45010 - stt: 2!? (xuất hiện đầu lấy giá trị: Dòng4 + 1 = 2 lẽ ra nó phải là 3)
  • ......Các dòng dưới vì thế sẽ không chính xác.
Em thử kiểm tra lại xem sao.

Chúc em ngày vui
Thân
 
Việc lấy giá trị trên gần nhất cộng thêm 1 giá trị nếu SP đó mới phát sinh trong cùng mã máy, rất nguy hiểm, ví dụ: với công thức cộng 1
  • Dòng 1: máy 5F - SJ45039 - stt: 1 (xuất hiện đầu lấy giá trị 1)
  • Dòng 2: máy 5F - SJ45039 - stt: 1 (lần thứ 2 xuất hiện lấy giá trị giống trên cùng mã SP)
  • Dòng 3: máy 5F - SJ45009 - stt: 2 (xuất hiện đầu lấy giá trị: Dòng2 + 1 = 2)
  • Dòng 4: máy 5F - SJ45039 - stt: 1 (lần thứ 3 xuất hiện lấy giá trị giống trên cùng mã SP)
  • Dòng 5: máy 5F - SJ45010 - stt: 2!? (xuất hiện đầu lấy giá trị: Dòng4 + 1 = 2 lẽ ra nó phải là 3)
  • ......Các dòng dưới vì thế sẽ không chính xác.
Em thử kiểm tra lại xem sao.

Chúc em ngày vui
Thân
Đây chính là mấu chốt mà công thức em đang sử dụng không thể giải quyết được anh ạ.
Mã:
F2=IF(COUNTIF($C$2:$C2,$C2)=1,1,SUM(IF($C$2:$C2=$C2,1/COUNTIFS($C$2:$C2,$C2,$D$2:$D2,$D$2:$D2),0)))
Ctrl+Shift+Enter
Của em thì hơi khác chút: nếu mã sp gắn liền với máy nào đó bị lặp lại sau khi đã có 1 mã sp khác gắn vào rồi thì sẽ không lặp lại được số thứ tự cũ.
Nhìn công thức của anh, em vẫn chưa luận được vế sau:
Mã:
SUMPRODUCT(($C$2:$C2=$C2)/COUNTIFS($C$2:$C2,$C$2:$C2,$D$2:$D2,$D$2:$D2))
Hình như nó tương đương với
Mã:
SUM(IF($C$2:$C2=$C2,1/COUNTIFS($C$2:$C2,$C2,$D$2:$D2,$D$2:$D2),0)
 
Hình như nó tương đương với
Hai công thức không tương đương vì:
  • SUM(IF($C$2: $C2=$C2,1/COUNTIFS($C$2: $Cn,$Cn,$D$2: $Dn,$D$2: $Dn),0) -->1/COUNTIFS() dạng này cho kết quả đơn, tức chỉ có 1 phần tử. Công thức này của em tương đương: 1/COUNTIFS($C$2: $Cn,$Cn,$D$2: $Dn, $Dn). Phần mẫu số COUNTIFS() có ý nghĩa đếm stt của các phần tử cùng mã SP cùng máy bắt đầu đếm từ 1, đến 2, 3..., nếu qua SP khác cũng cùng máy, thì bắt đầu lại đếm từ 1,2,3...
  • ($C$2: $Cn=$Cn) / COUNTIFS($C$2: $Cn,$C$2: $Cn,$D$2: $Dn,$D$2: $Dn) -->1/COUNTIFS() dạng này cho kết quả Mảng 1 chiều dọc, tức chứa nhiều phần tử thỏa điều kiện. SUMPRODUCT( ($C$2: $C2=$C2)/COUNTIFS($C$2: $Cn,$C$2: $Cn,$D$2: $Dn,$D$2: $Dn) ) là công thức đếm theo điều kiện cùng mã máy (do: ($C$2: $Cn=$Cn)) và loại trùng mã cùng SP. Phần mẫu số COUNTIFS() có ý nghĩa đếm số lượng có bao nhiêu phần tử cùng mã SP cùng máy, tính đến dòng công thức đang thực hiện.
Để anh giải thích sơ về công thức của anh xử lý:
=IF(COUNTIFS($C$2: $C2,$C2,$D$2: $D2,$D2)>1 , LOOKUP(2,1/(C2=$C$1: $C1)/(D2=$D$1: $D1),$F$1: $F1) , SUMPRODUCT(($C$2: $C2=$C2) / COUNTIFS($C$2: $C2,$C$2: $C2,$D$2: $D2,$D$2: $D2)) )

Điều kiện lọc: =COUNTIFS($C$2: $Cn,$Cn,$D$2: $Dn,$Dn)>1
  1. Nếu lớn hơn 1 (tức phát sinh lần thứ 2, lần thứ 3, ...., lần thứ n): thì truy xuất lấy lại STT của mã SP cùng loại, cùng một máy ở trên gần nhất.
    • Dùng: LOOKUP(2,1/(Cn=$C$1: $Cn-1)/(Dn=$D$1: $Dn-1),$F$1: $Fn-1)
  2. Nếu bằng 1 (số 1: tức là SP mới, xuất hiện lần đầu, trong cùng 1 máy)
    • Dùng: SUMPRODUCT(($C$2: $Cn=$Cn)/COUNTIFS($C$2: $Cn,$C$2: $Cn,$D$2: $Dn,$D$2: $Dn)) --> Công thức đếm loại bỏ trùng lắp mã SP cùng 1 máy, hay hiểu nôm na là "Đếm số SP cùng 1 máy, mỗi mã SP chỉ đếm 1 lần".
    • Nếu trong bảng dữ liệu có chứa dòng trống xen kẽ ở giữa, thì phải dùng thêm bẫy lỗi, và chỉnh thành SUM(IFERROR('Công thức',)) kết thúc bằng CSE.
Công thức của anh còn có thể thay thế đoạn đếm loại bỏ trùng lắp mã SP bằng: IFERROR(AGGREGATE(14,6,$I$1:I1/($C$1:C1=C2),1),)+1 --> Tức lọc ra số lớn nhất ở trên cùng 1 máy + 1.
Cụ thể:
Mã:
G2=IF(COUNTIFS($C$2:$C2,$C2,$D$2:$D2,$D2)>1,LOOKUP(2,1/(C2=$C$1:$C1)/(D2=$D$1:$D1),$G$1:$G1),IFERROR(AGGREGATE(14,6,$G$1:G1/($C$1:C1=C2),1),)+1)
Enter fill xuống.

Chúc em ngày vui.
 

File đính kèm

  • DEM.xlsx
    26.5 KB · Đọc: 10
Lần chỉnh sửa cuối:
Hai công thức không tương đương vì:
  • SUM(IF($C$2: $C2=$C2,1/COUNTIFS($C$2: $Cn,$Cn,$D$2: $Dn,$D$2: $Dn),0) -->1/COUNTIFS() dạng này cho kết quả đơn, tức chỉ có 1 phần tử. Công thức này của em tương đương: 1/COUNTIFS($C$2: $Cn,$Cn,$D$2: $Dn, $Dn). Phần mẫu số COUNTIFS() có ý nghĩa đếm stt của các phần tử cùng mã SP cùng máy bắt đầu đếm từ 1, đến 2, 3..., nếu qua SP khác cũng cùng máy, thì bắt đầu lại đếm từ 1,2,3...
  • ($C$2: $Cn=$Cn) / COUNTIFS($C$2: $Cn,$C$2: $Cn,$D$2: $Dn,$D$2: $Dn) -->1/COUNTIFS() dạng này cho kết quả Mảng 1 chiều dọc, tức chứa nhiều phần tử thỏa điều kiện. SUMPRODUCT( ($C$2: $C2=$C2)/COUNTIFS($C$2: $Cn,$C$2: $Cn,$D$2: $Dn,$D$2: $Dn) ) là công thức đếm theo điều kiện cùng mã máy (do: ($C$2: $Cn=$Cn)) và loại trùng mã cùng SP. Phần mẫu số COUNTIFS() có ý nghĩa đếm số lượng có bao nhiêu phần tử cùng mã SP cùng máy, tính đến dòng công thức đang thực hiện.
Để anh giải thích sơ về công thức của anh xử lý:
=IF(COUNTIFS($C$2: $C2,$C2,$D$2: $D2,$D2)>1 , LOOKUP(2,1/(C2=$C$1: $C1)/(D2=$D$1: $D1),$F$1: $F1) , SUMPRODUCT(($C$2: $C2=$C2) / COUNTIFS($C$2: $C2,$C$2: $C2,$D$2: $D2,$D$2: $D2)) )

Điều kiện lọc: =COUNTIFS($C$2: $Cn,$Cn,$D$2: $Dn,$Dn)>1
  1. Nếu lớn hơn 1 (tức phát sinh lần thứ 2, lần thứ 3, ...., lần thứ n): thì truy xuất lấy lại STT của mã SP cùng loại, cùng một máy ở trên gần nhất.
    • Dùng: LOOKUP(2,1/(Cn=$C$1: $Cn-1)/(Dn=$D$1: $Dn-1),$F$1: $Fn-1)
  2. Nếu bằng 1 (số 1: tức là SP mới, xuất hiện lần đầu, trong cùng 1 máy)
    • Dùng: SUMPRODUCT(($C$2: $Cn=$Cn)/COUNTIFS($C$2: $Cn,$C$2: $Cn,$D$2: $Dn,$D$2: $Dn)) --> Công thức đếm loại bỏ trùng lắp mã SP cùng 1 máy, hay hiểu nôm na là "Đếm số SP cùng 1 máy, mỗi mã SP chỉ đếm 1 lần".
    • Nếu trong bảng dữ liệu có chứa dòng trống xen kẽ ở giữa, thì phải dùng thêm bẫy lỗi, và chỉnh thành SUM(IFERROR('Công thức',)) kết thúc bằng CSE.
Công thức của anh còn có thể thay thế đoạn đếm loại bỏ trùng lắp mã SP bằng: IFERROR(AGGREGATE(14,6,$I$1:I1/($C$1:C1=C2),1),)+1 --> Tức lọc ra số lớn nhất ở trên cùng 1 máy + 1.
Cụ thể:
Mã:
G2=IF(COUNTIFS($C$2:$C2,$C2,$D$2:$D2,$D2)>1,LOOKUP(2,1/(C2=$C$1:$C1)/(D2=$D$1:$D1),$G$1:$G1),IFERROR(AGGREGATE(14,6,$G$1:G1/($C$1:C1=C2),1),)+1)
Enter fill xuống.

Chúc em ngày vui.
Thật tuyệt vời anh ạ.
Em là em giống anh ở việc "thích chỉ dùng Enter cho công thức mảng" anh ạ. :clap2:
 
Thật tuyệt vời anh ạ.
Em là em giống anh ở việc "thích chỉ dùng Enter cho công thức mảng" anh ạ. :clap2:
Do anh làm công thức cho nhiều người sử dụng, mình không thể yêu cầu hoặc đòi hỏi họ bắt buộc phải có khả năng nhìn nhận và phân biệt giữa công thức thường và mảng giống mình được (đôi khi là Sếp nữa, sao mà dám :) ), nên hễ cái nào có thể dùng công thức mảng mà tránh nhấn CSE kết thúc, thì anh ưu tiên hơn. Còn gặp trường hợp "chẳng đặng đừng" thì buộc lòng anh sẽ "yêu cầu", hoặc phải "ghi chú cảnh báo" họ phải nhớ nhấn CSE. Nếu không làm vậy, khi xảy ra sự cố đi tìm cái sai của số liệu do bởi không nhấn CSE, thì mệt mõi lắm em.

Chúc em cuối tuần vui.
/-*+//-*+//-*+/
 
Việc lấy giá trị trên gần nhất cộng thêm 1 giá trị nếu SP đó mới phát sinh trong cùng mã máy, rất nguy hiểm, ví dụ: với công thức cộng 1
  • Dòng 1: máy 5F - SJ45039 - stt: 1 (xuất hiện đầu lấy giá trị 1)
  • Dòng 2: máy 5F - SJ45039 - stt: 1 (lần thứ 2 xuất hiện lấy giá trị giống trên cùng mã SP)
  • Dòng 3: máy 5F - SJ45009 - stt: 2 (xuất hiện đầu lấy giá trị: Dòng2 + 1 = 2)
  • Dòng 4: máy 5F - SJ45039 - stt: 1 (lần thứ 3 xuất hiện lấy giá trị giống trên cùng mã SP)
  • Dòng 5: máy 5F - SJ45010 - stt: 2!? (xuất hiện đầu lấy giá trị: Dòng4 + 1 = 2 lẽ ra nó phải là 3)
  • ......Các dòng dưới vì thế sẽ không chính xác.
Em thử kiểm tra lại xem sao.

Chúc em ngày vui
Thân
Tuần mới vui vẻ nha Anh.
Cuối tuần không đi làm nên em cũng ít ngồi máy tính.
Em đã thử sửa đổi dữ liệu của chủ thớt và đúng là test thêm vài trường hợp cá biệt thì đúng là chưa chính xác anh ạ.
Nhưng theo em chỗ chưa chính xác là LOOKUP(2,1/(($C$1:C1)=C2)/(($D$1: D1)=D2),($G$1:G1)) em đã điều chỉnh thành MAX((($C$1:C1)=C2)*($G$1:G1))+1
nghĩa là lấy giá trị gần nhất đã tính toán cho mã máy đó, chứ không phải là đồng thời cả mã SP và máy.
File đính kèm em có cố ý sửa lại dữ liệu của chủ thớt để kiểm tra.
Anh kiểm tra lại giúp em hàm ở #8 ạ.
Cảm ơn Anh
 
Lần chỉnh sửa cuối:
Tuần mới vui vẻ nha Anh.
Cuối tuần không đi làm nên em cũng ít ngồi máy tính.
Em đã thử sửa đổi dữ liệu của chủ thớt và đúng là test thêm vài trường hợp cá biệt thì đúng là chưa chính xác anh ạ.
Nhưng theo em chỗ chưa chính xác là LOOKUP(2,1/(($C$1:C1)=C2)/(($D$1: D1)=D2),($G$1:G1)) em đã điều chỉnh thành LOOKUP(2,1/(($C$1:C1)=C2),($G$1:G1))
nghĩa là lấy giá trị gần nhất đã tính toán cho mã máy đó, chứ không phải là đồng thời cả mã SP và máy.
File đính kèm em có cố ý sửa lại dữ liệu của chủ thớt để kiểm tra.
Anh kiểm tra lại giúp em hàm ở #8 ạ.
Cảm ơn Anh
Ôi! em trai tôi!
  • =LOOKUP(2,1/(($C$1:C1)=C2)/(($D$1: D1)=D2),($G$1:G1)) --> cái này thì em làm đúng rồi, vì nó đi lấy lại đúng STT của cùng mã SP và cùng một máy. Nếu thay bằng =LOOKUP(2,1/(($C$1: C1)=C2),($G$1: G1)), thì công thức mới nó chỉ xét có cùng máy thôi, nếu mã SP cùng máy gần nó nhất, mà khác mã thì nó cũng "mặc kệ" lấy STT của mã đó luôn em. :)
  • Anh đọc lại câu cú giải thuật của em như sau:
    • Lọc theo thứ tự xuất hiện đầu tiên của từng mã Máy: COUNTIF($C$2: C2,C2)=1
      1. Nếu thỏa bằng 1, tức mã máy xuất hiện lần đầu-->lấy STT=1
      2. Nếu không thỏa: Xét COUNTIFS($D$2: D2,D2,$C$2: C2,C2)>1, tức stt của cùng máy cùng SP.
        • Nếu thỏa > 1, tức mã SP xuất hiện lần thứ 2 trở đi trong cùng 1 máy: thì thực hiện lấy STT của bất kỳ SP nào cùng mã máy trên nó gần nhất, vì thực hiện theo câu lệnh: LOOKUP(2,1/(($C$1: C1)=C2),($G$1: G1)). Như vậy, nếu trên nó gần nhất là mã của SP khác nó chơi lấy luôn, chứ không lấy đúng STT của "anh em sinh đôi" của nó.
        • Nếu không thỏa, tức mã SP xuất hiện lần đầu trong mã máy: thì thực hiện lấy STT của bất kỳ SP nào cùng mã máy trên nó gần nhất cộng thêm 1, vì thực hiện theo câu lệnh: LOOKUP(2,1/(($C$1: C1)=C2),($G$1: G1))+1. Như vậy, nếu trên nó gần nhất là mã của SP khác đã lấy sai theo lệnh trên thì ở dưới lại phát sinh thêm.
      3. Theo anh nghĩ, như công thức ban đầu của em chỉ cần thay đoạn sau: thay vì tìm mã SP ở trên gần nhất cùng máy cộng 1, thì em nên tìm STT lớn nhất trong cùng máy đó, rồi cộng thêm 1 sẽ chính xác hơn.
        • =IF(COUNTIF($C$2: C2,C2)=1,1,IF(COUNTIFS($D$2: D2,D2,$C$2: C2,C2)>1,LOOKUP(2,1/(C2=$C$1: $C1)/(D2=$D$1: $D1),$G$1: $G1), AGGREGATE(14,6,$G$1: G1/($C$1: C1=C2),1)+1 ))
Chúc em ngày vui.
/-*+//-*+//-*+/
 

File đính kèm

  • DEM (1).xlsx
    15.9 KB · Đọc: 14
Ôi! em trai tôi!
  • =LOOKUP(2,1/(($C$1:C1)=C2)/(($D$1: D1)=D2),($G$1:G1)) --> cái này thì em làm đúng rồi, vì nó đi lấy lại đúng STT của cùng mã SP và cùng một máy. Nếu thay bằng =LOOKUP(2,1/(($C$1: C1)=C2),($G$1: G1)), thì công thức mới nó chỉ xét có cùng máy thôi, nếu mã SP cùng máy gần nó nhất, mà khác mã thì nó cũng "mặc kệ" lấy STT của mã đó luôn em. :)
Chúc em ngày vui.
/-*+//-*+//-*+/
Em đã kiểm tra lại và sửa ở 2 post.
Đang edit mà f5 thấy bài Anh nên quote luôn, đúng ý em ngộ ra :p
Phải là "lấy kết quả STT lớn nhất của mã máy" đã tính toán trước đó + 1 mới đúng anh ạ. Nhưng đổi lại phải kết thúc bằng Ctrl Shift Enter. (Anh dùng AGGREGATE nên né được việc này)
Bài toán hay, Anh chỉ ra và em đã sửa đổi dữ liệu mới ngấm được cái sai của mình.
Cảm ơn Anh.
 
Lần chỉnh sửa cuối:
Web KT
Back
Top Bottom