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
=COUNTIFS($B$2:B2,B2,$C$2:C2,C2,$D$2:D2,D2,$E$2:E2,E2)
Xin chào leonguyenz...
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?
...
Giờ mới hiểu,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 ạ.
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 đỡ ạ.
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)
Cảm ơn Anh leonguyenz rất nhiều,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)
Xin lỗi kéo công thức nên sai, lấy công thức theo file: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 ạ
Nếu có 100 giá trị giống nhau cột G sẽ có 2 sốXin lỗi kéo công thức nên sai, lấy công thức theo file:
Khả năng là đang áp dụng cách này để đặt mã. Số lượng max là 999.Nếu có 100 giá trị giống nhau cột G sẽ có 2 số
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 ạ.Khả năng là đang áp dụng cách này để đặt mã. Số lượng max là 999.
Bạn chạy thử Sub này: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 ạ.![]()
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ê,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
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: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.
=VALUE(MID(TEXT(COUNTIFS($B$2:$B2,$B2,$C$2:$C2,$C2,$D$2:$D2,$D2,$E$2:$E2,$E2),"000"),COLUMN(A1),1))
=VALUE(MID(TEXT(IF(AND(INDEX($B2:$E2=$B1:$E1,)),($F1&$G1&$H1)+1,1),"000"),COLUMN(A1),1))