我需要一个宏来在 B 列中输入信息后立即在 A 列上自动生成一个序列号。C 列允许对 B 列中的信息进行优先级排序。我目前有一个宏可以根据优先级对行进行排序。因此,优先级 1 将在工作表顶部排序,然后是 2 等。因此,考虑到排序宏将根据分配的优先级移动行,如何自动生成序列号的问题。
序列号应该是从 1,2,3 开始的简单数字序列.....不确定如何查询用于创建下一个数字的最后一个数字。
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
我想这将是一些变化=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