Đánh số TT theo điều kiện (1 người xem)

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

Excel365

Thành viên tích cực
Tham gia
29/10/10
Bài viết
865
Được thích
127
Giới tính
Nam
Nhờ các anh chị giúp em lập Công thức đánh số Thứ tự theo điều kiện theo.
Mỗi mặt hàng thì đã được đánh số thứ tự từ ban đầu, nay em muốn lập công thức để đánh số thứ tự kho mặt hàng đó có số lượng > 0
(Trong file em có đánh số ví dụ )
Trân trọng cảm ơn
 

File đính kèm

Bạn chạy thử macro sau
PHP:
Option Explicit
Sub DanhSoTT()
 Dim Nhom As Byte, MHg As Byte, Tmp
 Dim Cls As Range, Rng As Range
 
 Set Rng = Range("c5:c" & [b65500].End(xlUp).Row).SpecialCells(xlCellTypeFormulas, 3)
 For Each Cls In Rng
    If Cls.Value > 0 Then
        Nhom = 1 + Nhom
        Cls.Offset(, 1) = "'" & Nhom
    End If
 Next Cls
 Nhom = 0
 For Each Cls In Range("c5:c" & [b65500].End(xlUp).Row)
    Tmp = InStr(CStr(Cls.Offset(, -2).Value), ".")
    If Tmp And Nhom <> 0 Then
        If Cls.Value > 0 Then
            MHg = 1 + MHg
            Cls.Offset(, 1).Value = "'" & Nhom & "." & CStr(MHg)
        End If
    Else
        Nhom = Cls.Offset(, 1).Value
        MHg = 0
    End If
 Next Cls
End Sub
 
Upvote 0
Bạn dùng công thức nhé, công thức cũng có thể giải quyết vấn đề
Tại D5
Mã:
=IF(C5>0,IF(ISNUMBER(A5)*(C5>0),COUNT($D$4:D4)+1,LOOKUP(10^10,$D$4:D4,$D$4:D4)&"."&IFERROR(1+COUNTIF(OFFSET($D$4,LOOKUP(10^10,$D$4:D4,ROW($1:1))-1,,ROW(2:2)-LOOKUP(10^10,$D$4:D4,ROW($1:1))),"*"),"")),"")
 
Upvote 0
Nhờ các anh chị giúp em lập Công thức đánh số Thứ tự theo điều kiện theo.
Mỗi mặt hàng thì đã được đánh số thứ tự từ ban đầu, nay em muốn lập công thức để đánh số thứ tự kho mặt hàng đó có số lượng > 0
(Trong file em có đánh số ví dụ )
Trân trọng cảm ơn


Tạm sử dụng công thức này cho D5

PHP:
=IF(C5>0,IF(1*A5-INT(A5)>0,MAX(D$4:D4)&"."&COUNTIF(OFFSET(C$4,MATCH(MAX(D$4:D4),D$4:D4,0)-1,0):C4,">0"),MAX(D$4:D4)+1),"")
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn dùng công thức nhé, công thức cũng có thể giải quyết vấn đề
Tại D5
Mã:
=IF(C5>0,IF(ISNUMBER(A5)*(C5>0),COUNT($D$4:D4)+1,LOOKUP(10^10,$D$4:D4,$D$4:D4)&"."&IFERROR(1+COUNTIF(OFFSET($D$4,LOOKUP(10^10,$D$4:D4,ROW($1:1))-1,,ROW(2:2)-LOOKUP(10^10,$D$4:D4,ROW($1:1))),"*"),"")),"")
Trường hợp có 2 dòng liền kề nhau = 0 thi đánh số TT bị sai, anh xem lại dùm em Capture.jpg
 
Upvote 0
Bạn sửa lại 1 chút là được
Mã:
=IF(C5>0,IF(ISNUMBER(A5)*(C5>0),COUNT($D$4:D4)+1,LOOKUP(10^10,$D$4:D4,$D$4:D4)&"."&IFERROR(1+COUNTIF(OFFSET($D$4,LOOKUP(10^10,$D$4:D4,ROW($1:1))-1,,ROW(2:2)-LOOKUP(10^10,$D$4:D4,ROW($1:1))),"<> ")," "))," ")
 
Upvote 0
Bạn sửa lại 1 chút là được
Mã:
=IF(C5>0,IF(ISNUMBER(A5)*(C5>0),COUNT($D$4:D4)+1,LOOKUP(10^10,$D$4:D4,$D$4:D4)&"."&IFERROR(1+COUNTIF(OFFSET($D$4,LOOKUP(10^10,$D$4:D4,ROW($1:1))-1,,ROW(2:2)-LOOKUP(10^10,$D$4:D4,ROW($1:1))),"<> ")," "))," ")
Khắc phục được lỗi như bài #6 rồi anh, nhưng công thức không đánh số 1.1, hoặc 2.1 mà đánh bắt đầu từ 1.2 hoặc 2.2, ....
P/s: Đúng ra là phải đánh số thứ tự từ
1
1.1 Công thức không đánh 1.1 mà bắt đầu từ 1.2
1.2
1.3
...
 
Lần chỉnh sửa cuối:
Upvote 0
Công thức của bạn bị lỗi Value

Tôi đã thử vào file đầu tiên bạn post có thấy bị như vậy đâu nhỉ, nếu cần bạn upload file bị lỗi,

Hoặc thử phương án 2 tốt sau :
PHP:
=IF(C5>0,IF(ISNUMBER(FIND(".",A5)),MAX(D$4:D4)&"."&COUNTIF(OFFSET(C$4,MATCH(MAX(D$4:D4),D$4:D4,0)-1,0):C4,">0"),MAX(D$4:D4)+1),"")
 
Upvote 0
Tôi đã thử vào file đầu tiên bạn post có thấy bị như vậy đâu nhỉ, nếu cần bạn upload file bị lỗi,

Hoặc thử phương án 2 tốt sau :
PHP:
=IF(C5>0,IF(ISNUMBER(FIND(".",A5)),MAX(D$4:D4)&"."&COUNTIF(OFFSET(C$4,MATCH(MAX(D$4:D4),D$4:D4,0)-1,0):C4,">0"),MAX(D$4:D4)+1),"")
Cái này thì Ok rồi bạn, cám ơn bạn nhiều
 
Upvote 0
Tôi đã thử vào file đầu tiên bạn post có thấy bị như vậy đâu nhỉ, nếu cần bạn upload file bị lỗi,

Hoặc thử phương án 2 tốt sau :
PHP:
=IF(C5>0,IF(ISNUMBER(FIND(".",A5)),MAX(D$4:D4)&"."&COUNTIF(OFFSET(C$4,MATCH(MAX(D$4:D4),D$4:D4,0)-1,0):C4,">0"),MAX(D$4:D4)+1),"")
Nhờ bạn xem giùm mình sao nó bị nhảy số thứ tự ở cột B (file đính kèm)
Trân trọng
 

File đính kèm

Upvote 0
Nhờ bạn xem giùm mình sao nó bị nhảy số thứ tự ở cột B (file đính kèm)
Trân trọng

Nếu chỉ số phần nhỏ (ví dụ 5 trong 1.5) mà luôn nhỏ hơn 10 (tức là không có trường hợp 1.11, 2.10,..) thì dùng công thức post#12 trên,

* Còn tổng quát thì dùng công thức mới (hiệu chỉnh từ cũ) như sau

=IF(Y7="In",IF(1*A7-INT(A7)>0,MAX(B$6:B6)&"."&COUNTIF(OFFSET(Y$6,MATCH(MAX(B$6:B6),B$6:B6,0)-1,0):Y6,"In"),MAX(B$6:B6)+1),"")


(Sao? và sao... bạn lại không đưa đúng nhu cầu thực tế ngay từ đầu vậy, mà lại là cột C>0 không có In ở Y hay gì khác)
 
Upvote 0
Khắc phục được lỗi như bài #6 rồi anh, nhưng công thức không đánh số 1.1, hoặc 2.1 mà đánh bắt đầu từ 1.2 hoặc 2.2, ....
P/s: Đúng ra là phải đánh số thứ tự từ
1
1.1 Công thức không đánh 1.1 mà bắt đầu từ 1.2
1.2
1.3
...
Thế này chắc là được
Mã:
=IF(C5>0,IF(ISNUMBER(A5)*(C5>0),COUNT($D$4:D4)+1,LOOKUP(10^10,$D$4:D4,$D$4:D4)&"."&IFERROR(COUNTIF(OFFSET($D$4,LOOKUP(10^10,$D$4:D4,ROW($1:1))-1,,ROW(2:2)-LOOKUP(10^10,$D$4:D4,ROW($1:1))),"<> ")," "))," ")
 
Upvote 0
Bổ sung thêm thế này rồi áp thử xem sao
B7=IF(Y7="In",IF(MOD(A7,1),MAX(B$6:B6)+1/10*(LEN(MOD(A7,1))-2),INT(MAX(B$6:B6))+1),"")
 
Upvote 0
Nếu chỉ số phần nhỏ (ví dụ 5 trong 1.5) mà luôn nhỏ hơn 10 (tức là không có trường hợp 1.11, 2.10,..) thì dùng công thức post#12 trên,

* Còn tổng quát thì dùng công thức mới (hiệu chỉnh từ cũ) như sau

=IF(Y7="In",IF(1*A7-INT(A7)>0,MAX(B$6:B6)&"."&COUNTIF(OFFSET(Y$6,MATCH(MAX(B$6:B6),B$6:B6,0)-1,0):Y6,"In"),MAX(B$6:B6)+1),"")


(Sao? và sao... bạn lại không đưa đúng nhu cầu thực tế ngay từ đầu vậy, mà lại là cột C>0 không có In ở Y hay gì khác)
Do lúc đầu mình chưa nghĩ ra, thực tế khi phát sinh mình mới chỉnh lại côg thức nhưng không được. Bạn thông cảm nhe,
Cám ơn bạn đã nhiệt tình giúp đỡ
 
Upvote 0
Cảm ơn tất cả mọi người đã nhiệt tình giúp đỡ
 
Upvote 0

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

Back
Top Bottom