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

Excel 自动生成序列号,行根据优先级列自动排序,excel,vba,Excel,Vba,我需要一个宏,以便在B列中输入信息后立即在a列上自动生成序列号。C列允许对B列中的信息进行优先级排序。我目前有一个宏,可根据优先级对行进行排序。因此,优先级1将排序在表的顶部,然后是优先级2,以此类推。 因此,问题是如何自动生成序列号,同时考虑到排序宏将根据指定的优先级移动行 序列号应该是从1,2,3开始的简单数字序列。。。。。 不确定如何使用查询最后一个号码来创建下一个号码。我想这将是=MAX(A:A)+1 如果您使用的是Excel 2003,您可能希望将范围限制为=MAX(A1:A65536

我需要一个宏,以便在B列中输入信息后立即在a列上自动生成序列号。C列允许对B列中的信息进行优先级排序。我目前有一个宏,可根据优先级对行进行排序。因此,优先级1将排序在表的顶部,然后是优先级2,以此类推。 因此,问题是如何自动生成序列号,同时考虑到排序宏将根据指定的优先级移动行

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

我想这将是
=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
Private子工作表\u更改(ByVal目标作为范围)
变暗rng As范围,c As范围
Set rng=Application.Intersect(目标,Me.Columns(2))
如果不是,那么rng什么都不是
'防止处理(例如)插入整列
如果rng.Cells.Count<100,则
对于每个c In rng.单元格
如果Len(c.Value)>0且Len(c.Offset(0,-1).Value)=0,则
c、 偏移量(0,-1).Value=GetNextNumber()
如果结束
下一个c
如果结束
如果结束
端接头
函数GetNextNumber()
昏暗的房车
与我一起。范围(“H1”)
rv=.Value
.Value=.Value+1
以
GetNextNumber=rv
端函数

您可以使用工作表更改事件添加序列号。您需要将“下一个数字”存储在单元格或工作簿名称中。stackoverflow上瘾了吗?:)
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