Đánh số thứ tự theo điều kiện? (7 người xem)

Liên hệ QC

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

Hoàng Nhật Phương

Thành viên gắn bó
Tham gia
5/11/15
Bài viết
1,895
Được thích
1,219
Đánh số thứ tự theo điều kiện?

Xin chào các bạn,
Nhờ tiêu đề OT đã nêu,chi tiết xin được nêu trong tập tin gửi kèm.
Nhờ các bạn xem & giúp đỡ ạ.
 

File đính kèm

Chưa hiểu cột F, G
Còn cột H:
Mã:
=COUNTIFS($B$2:B2,B2,$C$2:C2,C2,$D$2:D2,D2,$E$2:E2,E2)
Hình như G là đơn vị hàng chục của H, còn F là đơn vị hàng trăm của H?
F=INT(H2/100)
G=INT(H2/10)
 
Xin chào leonguyenz
Cảm ơn anh đã hỗ trợ.
Anh hiểu như vậy đúng rồi ạ, nhưng cột H hiện giờ đang không lấy đúng 1 số hàng đơn vị ạ.
Nhờ anh xem giúp ạ.
Giờ mới hiểu,
Mã:
F2=INT(COUNTIFS(A$2:$B2,A2,B$2:$C2,B2,C$2:$D2,C2,D$2:$E2,D2)/100)
G2=INT(COUNTIFS(A$2:$B2,A2,B$2:$C2,B2,C$2:$D2,C2,D$2:$E2,D2)/10)
H2=MOD(COUNTIFS($B$2:B2,B2,$C$2:C2,C2,$D$2:D2,D2,$E$2:E2,E2),10)
 
Đánh số thứ tự theo điều kiện?

Xin chào các bạn,
Nhờ tiêu đề OT đã nêu,chi tiết xin được nêu trong tập tin gửi kèm.
Nhờ các bạn xem & giúp đỡ ạ.
Mã:
F2 =INT((F1*100+G1*10+H1+1)/100)*(B2&C2&D2&E2=B1&C1&D1&E1)
G2 =INT((G1*10+H1+1)/10)*(B2&C2&D2&E2=B1&C1&D1&E1)
H2 =MOD(H1*(B2&C2&D2&E2=B1&C1&D1&E1)+1,10)
 
Giờ mới hiểu,
Mã:
F2=INT(COUNTIFS(A$2:$B2,A2,B$2:$C2,B2,C$2:$D2,C2,D$2:$E2,D2)/100)
G2=INT(COUNTIFS(A$2:$B2,A2,B$2:$C2,B2,C$2:$D2,C2,D$2:$E2,D2)/10)
H2=MOD(COUNTIFS($B$2:B2,B2,$C$2:C2,C2,$D$2:D2,D2,$E$2:E2,E2),10)
Cảm ơn Anh leonguyenz rất nhiều,
Cột F,G toàn số 0 anh ạ,nhờ anh xem giúp ạ. Ví dụ theo kết quả mẫu G12 =1 ạ
 

File đính kèm

Xin chào Bác HieuCD, Anh leonguyenz, Bạn dazkangel:

OT đã kiểm tra kết quả, tất các công thức và cách làm của Bác/Anh/Bạn đều đúng với mong muốn của OT rồi ạ.
OT muốn tham khảo thêm có cách nào sử dụng 1 công thức hoặc là sử dụng VBA sẽ như thế nào ạ?
Xin cảm ơn Bác/Anh/Bạn rất nhiều.
 
Hiện tại đúng là như vậy Anh ạ, nhưng OT đang có ý định là để 9999 nghĩa là thêm 1 cột nữa ạ. :D
Bạn chạy thử Sub này:
PHP:
Public Sub sGpe()
Dim sArr(), dArr(), I As Long, J As Long, R As Long, Txt As String, STT As String
sArr = Range("B2", Range("B2").End(xlDown)).Resize(, 4).Value
R = UBound(sArr)
ReDim dArr(1 To R, 1 To 4)
With CreateObject("Scripting.Dictionary")
    For I = 1 To R
        Txt = sArr(I, 1) & sArr(I, 2) & sArr(I, 3) & sArr(I, 4)
        If Not .Exists(Txt) Then
            .Item(Txt) = 1
        Else
            .Item(Txt) = .Item(Txt) + 1
        End If
        STT = Format(.Item(Txt), "0000")
        For J = 1 To 4
            dArr(I, J) = Mid(STT, J, 1)
        Next J
    Next I
End With
Range("F2").Resize(R, 4) = dArr
End Sub
 
Bạn chạy thử Sub này:
PHP:
Public Sub sGpe()
Dim sArr(), dArr(), I As Long, J As Long, R As Long, Txt As String, STT As String
sArr = Range("B2", Range("B2").End(xlDown)).Resize(, 4).Value
R = UBound(sArr)
ReDim dArr(1 To R, 1 To 4)
With CreateObject("Scripting.Dictionary")
    For I = 1 To R
        Txt = sArr(I, 1) & sArr(I, 2) & sArr(I, 3) & sArr(I, 4)
        If Not .Exists(Txt) Then
            .Item(Txt) = 1
        Else
            .Item(Txt) = .Item(Txt) + 1
        End If
        STT = Format(.Item(Txt), "0000")
        For J = 1 To 4
            dArr(I, J) = Mid(STT, J, 1)
        Next J
    Next I
End With
Range("F2").Resize(R, 4) = dArr
End Sub
Xin chào Thầy Ba Tê,
Cảm ơn Thầy đã quan tâm & giúp đỡ con ạ,
Con đã test thử kết quả cho trường hợp max 9999, lợi hại thật Thầy ạ. :D
 
Xin chào Bác HieuCD, Anh leonguyenz, Bạn dazkangel:

OT đã kiểm tra kết quả, tất các công thức và cách làm của Bác/Anh/Bạn đều đúng với mong muốn của OT rồi ạ.
OT muốn tham khảo thêm có cách nào sử dụng 1 công thức hoặc là sử dụng VBA sẽ như thế nào ạ?
Xin cảm ơn Bác/Anh/Bạn rất nhiều.
Công thức cho tất cả có điểm yếu là sẽ chậm khi nhiều dữ liệu, fill qua phải fill xuống:
Mã:
=VALUE(MID(TEXT(COUNTIFS($B$2:$B2,$B2,$C$2:$C2,$C2,$D$2:$D2,$D2,$E$2:$E2,$E2),"000"),COLUMN(A1),1))
Hoặc công thức thường nhẹ hơn:
Mã:
=VALUE(MID(TEXT(IF(AND(INDEX($B2:$E2=$B1:$E1,)),($F1&$G1&$H1)+1,1),"000"),COLUMN(A1),1))
 
Lần chỉnh sửa cuối:
Web KT

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

Back
Top Bottom