Code Đánh số thứ tự tự động bằng Excel

phivinhtuan

Yêu THVBA
Nhiều người nghĩ việc đánh số thứ tự quá đơn giản, việc gì phải code kiếc làm gì cho mất thời gian. Tuy nhiên, với mình đánh STT là cả một nghệ thuật, nói vui vậy thôi nhưng quả thực trong công việc, chăm chút cho cả những điều nhỏ nhất là điều nên làm đúng ko bạn
TCode hỗ trợ 2 kiều đánh số thứ tự
Kiểu 1: Đánh số thứ tự kiểu giá trị: Phù hợp với đánh số thứ tự với số lượng dòng rất lớn
Kiểu 2: Đánh số thứ tự kiểu công thức: Phù hợp với đánh số thứ tự với số lượng dòng vừa phải (<=1000 dòng), đổi lại thì nó lại hỗ trợ bạn đánh số thứ tự sau khi lọc, ẩn, xóa


[/CODE]
Bạn cần đăng nhập để thấy đa phương tiện


Mã:
Sub STTtuDong_KieuGiatri()
On Error Resume Next
  If Selection.Rows.Count > 1000000 Or Selection.Columns.Count > 10000 Then ' Neu khong khai bao vung du lieu
Application.Assistant.DoAlert "MyVTV for Excel", ("Vung Select qua lon"), 0, 0, 0, 0, 0
GoTo Thoat
End If

    Dim giatriMsg As Integer
giatriMsg = Application.Assistant.DoAlert("MyVTV for Excel", ("Buoc 1: An cac dong khong can danh STT (neu co)") & vbCrLf & ("Buoc 2: Select vung can danh STT sau do chay lenh") & vbCrLf & vbCrLf & ("Ban muon tiep tuc danh STT khong? "), 4, 4, 1, 0, 0)
If giatriMsg = 7 Then
GoTo Thoat
End If

    Selection.ClearContents



Dim iSTT
Dim arr1
arr1 = Selection.Value


For i = 1 To Selection.Rows.Count
For j = 1 To Selection.Columns.Count






If Cells(i + Selection.Row - 1, j + Selection.Column - 1).EntireRow.Hidden = False Then
iSTT = iSTT + 1
Cells(i + Selection.Row - 1, j + Selection.Column - 1).Value = iSTT
'arr1(i, j) = iSTT
End If

Next j
Next i


'Selection.Value = arr1
'-----------






Thoat:
Set arr1 = Nothing
End Sub


Sub DanhSTTBangCongThuc()
    i = Selection.Row
    j = Selection.Rows.Count
    'Neu du lieu qua lon thi hien bang chon
If Selection.Rows.Count > 1000000 Or Selection.Columns.Count > 10000 Then ' Neu khong khai bao vung du lieu
Application.Assistant.DoAlert "MyVTV", ("Vung Select qua lon"), 0, 0, 0, 0, 0
GoTo Thoat
End If

If Selection.Count > 10000 Then
giatriMsg = Application.Assistant.DoAlert("MyVTV", ("Vung danh STT rat lon, co the mat nhieu thoi gian, ban van muon chay lenh ? "), 4, 4, 1, 0, 0)
If giatriMsg = 7 Then
GoTo Thoat
End If
Else
giatriMsg1 = Application.Assistant.DoAlert("MyVTV", ("Select vung can danh STT sau do chay lenh") & vbCrLf & (" Khi thuc hien Loc du lieu, hoac an hang, STT se duoc chay lai") & vbCrLf & vbCrLf & ("Ban muon tiep tuc danh STT tu dong khong? "), 4, 4, 1, 0, 0)
If giatriMsg1 = 7 Then
GoTo Thoat
End If

End If



'-------
Selection.ClearContents

    For k = 1 To j
    Cells(k + i - 1, Selection.Column).FormulaR1C1 = "=AGGREGATE(4,7,R" & i - 1 & "C:R[-1]C)+1"
    Next k
Thoat:
End Sub
 
Sửa lần cuối:
Top