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


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
=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))),"*"),"")),"")
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
=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),"")


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 emBạ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))),"*"),"")),"")

=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, ....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))),"<> ")," "))," ")
Công thức của bạn bị lỗi Value
=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ềuTô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)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),"")

Góp vui thêm công thứcNhờ 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
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
Thế này chắc là đượcKhắ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
...
=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))),"<> ")," "))," ")



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,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)