Xem file tôi không thể hiểu được quy tắc đánh số thứ tự. Dường như nó không theo một quy luật nào cả.Xin chào các anh chị GPE !
Nhờ mọi người viết giúp hàm đánh số TT (xin gửi file kèm theo). Đối với file có nhiều dữ liệu nếu đánh STT bằng tay dễ bị nhầm lẫn và không chính xác. Mong được giúp đỡ. Xin chân thành cảm ơn !
Xem file tôi không thể hiểu được quy tắc đánh số thứ tự. Dường như nó không theo một quy luật nào cả.
Không nói đến số La Mã. Số thứ tự chi tiết bạn tự đánh trong file đính kèm cũng không có quy tắc cụ thể.Xin chào anh huuthang_bd !
File dữ liệu cần đánh số TT trên tôi trích từ bảng pivot table lọc theo đơn vị và công trình(Phần số TT la mã và STT chi tiết do tôi đánh thủ công).
Qui luật của đánh số TT như sau:
- Ở sheet2: mỗi mục số TT lamã là 1 mục chính, số TT chi tiết do đánh thủ công trong từng mục do pivot table lọc ra liên quan đến 1 bảng dữ liệu gốc dùng để cho pivot table (trong pivot table không có số TT). Tôi gửi anh file dữ liệu gốc anh xem giúp. Cảm ơn anh !
Theo cách hiểu của tôi thì là thế này, tuy nhiên trong file dữ liệu có vẻ chưa chuẩn, còn nếu đúng dữ liệu là như vậy thì e rằng không có quy luật nào cả.Qui luật của đánh số TT như sau:
- Ở sheet2: mỗi mục số TT lamã là 1 mục chính, số TT chi tiết do đánh thủ công trong từng mục do pivot table lọc ra liên quan đến 1 bảng dữ liệu gốc dùng để cho pivot table (trong pivot table không có số TT). Tôi gửi anh file dữ liệu gốc anh xem giúp. Cảm ơn anh !
Theo cách hiểu của tôi thì là thế này, tuy nhiên trong file dữ liệu có vẻ chưa chuẩn, còn nếu đúng dữ liệu là như vậy thì e rằng không có quy luật nào cả.
=IF(AND(C3<>"",D3=""),ROMAN(COUNTIF($D$3:D3,"")),IF(C3<>"",IF(ISNUMBER(B2),B2+1,1),B2))
Sub Macro1()
Dim eRw As Long, LaMa As Byte, MLon As Long
Dim WF, Cls As Range, Rng As Range
Dim sLama As String
eRw = [C65500].End(xlUp).Row: Set WF = Application.WorksheetFunction
Set Rng = Range([A5], Cells(eRw, "A")): Rng.Value = ""
For Each Cls In Rng
If Left(Cls.Offset(, 1).Value, 2) <> "K" & ChrW(7871) Then
LaMa = LaMa + 1: sLama = WF.Roman(LaMa)
Cls.Value = sLama: MLon = 0
Else
MLon = 1 + MLon
Cls.Value = MLon
End If
Next Cls
End Sub
Bạn giải thích giùm tại sao tại ô A76 không được đánh số thứ tự? Nếu do bạn sơ suất và ô A76 đáng lẽ là số 2 thì bạn dùng Code sau:Xin chào ACE trên GPE !
Tôi đã học được 1 số cách đánh STT trên diễn đàn nhưng áp dụng cụ thể vào trường hợp này macro đánh không theo ý muốn. Tôi mong được mọi người giúp đỡ. Xin cảm ơn ! (có file gửi kèm theo)
Private Sub Worksheet_Activate()
Application.Calculation = xlCalculationManual
Dim Cap1 As Long, Cap2 As Long, Cap3 As Long, Cll As Range, Rng As Range
Set Rng = Range([B10], [B65536].End(xlUp))
Rng.Offset(, -1).ClearContents
For Each Cll In Rng
Select Case Cll.IndentLevel
Case 1
Cap1 = Cap1 + 1
Cap2 = 0
Cll.Offset(, -1).Value = Application.WorksheetFunction.Roman(Cap1)
Case 2
Cap2 = Cap2 + 1
Cap3 = 0
Cll.Offset(, -1).Value = Application.WorksheetFunction.Roman(Cap1) & "." & Cap2
Case 3
Cap3 = Cap3 + 1
Cll.Offset(, -1).Value = Cap3
End Select
Next
Application.Calculation = xlCalculationAutomatic
End Sub
Trường hợp gặp dữ liệu phải đánh số thứ tự là số La Mã xong thì ta đánh tiếp tục hay đánh lại từ 1 vậy bạn ???Xin chào ACE trên GPE !
Do yêu cầu cần lọc số liệu từ pivottable nên macro đánh STT của tôi không đánh STT đúng ở sheet"STT2"-(có file gửi kèm theo). Nhờ mọi người sửa giúp để macro đánh STT không bị trùng tên ở sheet"STT2". Xin cảm ơn mọi người !
Xin chào Bạn !Trường hợp gặp dữ liệu phải đánh số thứ tự là số La Mã xong thì ta đánh tiếp tục hay đánh lại từ 1 vậy bạn ???
Làm tạm theo dữ liệu trong file của bạn, có gì nói sau ( hình như bắt đầu ở [A8] chứ nhỉ)
Mình làm sang file mới cho đỡ hao tài nguyên
Thân
Hihi. Gần hiểu rồiXin chào Bạn !
Như mình đã nêu trong file gửi lần trước. do dữ liệu lọc từ pivot nên có 1 số dòng ẩn nên macro cũ của mình đánh STT không đúng. Xin cảm ơn bạn đã giúp đỡ. Mình gửi tiếp file để bạn xem macro của bạn giúp chưa đánh STT đúng khi có thêm STT la mã (II, III).
Nhờ bạn sửa lại giúp. Xin cảm ơn bạn !
Set Vung = Range([b8], [b10000].End(xlUp))
Set Vung = Range([b8], [b10000].End(xlUp)).SpecialCells(12)
Chào bạn concogia !Hihi. Gần hiểu rồi
Bạn thử sửa tí chỗ này xem có OK không
thànhPHP:Set Vung = Range([b8], [b10000].End(xlUp))
Có gì bàn tiếpPHP:Set Vung = Range([b8], [b10000].End(xlUp)).SpecialCells(12)
Thân
Set Vung = Range([b12], [b10000].End(xlUp)).SpecialCells(12)
For I = 1 To Vung.Rows.Count
For Each Cls In Vung
Cls.Offset(0, -1) = SLama
...
Cls.Offset(0, -1) = K +1
Hihi, Thầy ptm nói đúng "zồi"Chào bạn concogia !
Mình đã sửa theo ý bạn nhưng chưa OK. Bạn cho chạy lại file mình gửi sau nhé. Cảm ơn bạn !