自动生成序列号,行根据优先级列自动排序

时间:2012-08-21 13:33:18

标签: excel vba

一旦在列B中输入信息,我就需要一个宏来自动生成A列上的序列号。列C允许列B中信息的优先级。我目前有一个宏根据优先级对行进行排序。因此,优先级1将在工作表的顶部排序,然后是2等。 因此,考虑到排序宏将根据指定的优先级移动行,如何自动生成序列号的问题。

序列号应该是从1,2,3开始的简单数字序列..... 不确定如何查询最后使用的数字以创建下一个数字。

2 个答案:

答案 0 :(得分:1)

Private Sub Worksheet_Change(ByVal Target As Range)

    Dim rng As Range, c As Range
    Set rng = Application.Intersect(Target, Me.Columns(2))
    If Not rng Is Nothing Then
        'protect against processing (eg) the insertion of a whole column
        If rng.Cells.Count < 100 Then
            For Each c In rng.Cells
                If Len(c.Value) > 0 And Len(c.Offset(0, -1).Value) = 0 Then
                    c.Offset(0, -1).Value = GetNextNumber()
                End If
            Next c
        End If
    End If

End Sub

Function GetNextNumber()
    Dim rv
    With Me.Range("H1")
        rv = .Value
        .Value = .Value + 1
    End With
    GetNextNumber = rv
End Function

答案 1 :(得分:0)

我想这会是=MAX(A:A)+1

的一些变体

如果您使用的是Excel 2003,则可能需要将范围限制为=MAX(A1:A65536)+1

并在VBA中

Option Explicit

Sub test()
Dim lookuprng As Range
Dim nextSerial As Long

Set lookuprng = Sheet1.Range("A:A")
nextSerial = WorksheetFunction.Max(lookuprng) + 1
End Sub