0

列 B に情報が入力されるとすぐに、列 A にシリアル番号を自動生成するマクロが必要です。列 C では、列 B の情報に優先順位を付けることができます。現在、優先順位に従って行を並べ替えるマクロがあります。したがって、優先度 1 はシートの上部に並べ替えられ、その後に 2 が続きます。したがって、割り当てられた優先度に従って並べ替えマクロが行を移動することを考慮して、シリアル番号を自動生成する方法について質問します。

シリアル番号は、1、2、3 で始まる単純な数字のシーケンスである必要があります.....次の番号を作成するために使用される最後の番号を照会する方法がわかりません。

4

2 に答える 2

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
于 2012-08-21T13:52:37.537 に答える
0
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
于 2012-08-21T16:01:05.527 に答える