1

ここに画像の説明を入力してください

私のExcelシートには、列Aの最後の空でないセルを検出し、そのセルに増分シリアル番号値を追加するVBAコードがあります(以下の例では、セルA6の値はSN104である必要があります)。

この処理は列Aのみに制限されており、この画像の例では、最初の空でない最後のセルはA6にあり、100セルまたは1000セルの後にある場合もあります。

このシナリオを処理する簡単な方法はありますか?

4

4 に答える 4

1
Public Function GetLastCell(ByVal startRng as Range) as Range

    With startRng
        Set GetLastCell = IIf(.Offset(1).Value = "", .Offset(0), .End(xlDown))
    End With

End Function

あなたの例では、Range 変数 rng を定義し、上記の関数を次のように呼び出すことができます。

Dim rng as Range
Set rng = GetLastCell( Range("A1") )

次に、rngは列Aの最後のセルを参照しています

于 2012-04-13T23:59:51.193 に答える
0

何かのようなもの

Dim lngLastUsedRow as Integer
lngLastUsedRow = Range("A65536").End(xlUp).Row

Dim lngFirstEmptyRow as Integer
lngFirstEmptyRow = Range("A65536").End(xlUp).Offset(1,0)

// do your increment
newValue = Cint(Mid(CurrentWorkSheet.Range("A" + lngLastUsedRow).Value,2)) + 1

CurrentWorkSheet.Range("A" & lngFirstEmptyRow).Value = "SN" + newValue

私はエクセルを持っていないので、今はテストできません。しかし、これで始められるはずです。

于 2012-04-13T23:31:05.717 に答える
0

このようなもの

  1. 任意のバージョンの Excel で実際に最後に使用されたセルを見つけ、空白の結果を処理します
  2. 空白でない最後のセルの文字列を解析し (任意の長さの英字と数値を処理)、次の空白セルを更新します

    Sub GetTrueLastCell()
    Dim rng1 As Range
    Dim objRegex As Object
    Dim strFirst As String
    Set rng1 = Columns("A").Find("*", [a1], xlFormulas)
    If Not rng1 Is Nothing Then
        Set objRegex = CreateObject("vbscript.regexp")
        With objRegex
            .Pattern = "^(.+?[^\d])(\d+)$"
            If .test(rng1.Value) Then
                strFirst = .Replace(rng1.Value, "$1")
                rng1.Value = strFirst & (Val(Right$(rng1.Value, Len(rng1.Value) - Len(strFirst)) + 1))
            End If
    
        End With
    Else
        MsgBox "Data range is blank"
    End If
    End Sub
    
于 2012-04-14T02:53:27.690 に答える