2

重複の可能性:
ExcelのX行ごとに行を挿入

私は大量のデータセットを持っています(たとえば、B5からJ500になり、この範囲の名前がrngOutputであるとします)。このデータを調べて、 x行ごとに2つの空の行を追加しようとしています。ここで、xはユーザーが指定した数値です。たとえば、xが10の場合、10行ごとに2つの新しい行を挿入する必要があります。概念的には、これは機能するはずのコードです。

For i = 1 to Number of rows in rngOutput
   If i mod x = 0 Then
        Insert 2 Rows
   End If
Next i

ただし、2つの新しい行を挿入すると、行数が変更され、式が混乱します(つまり、最初の10行の後に2行が追加され、次の8行の後にさらに2行が追加されます(これらの2つの新しい行がカウントされるため)実際の行として追加されます)、次の6行の後にさらに2行が追加されます。

上記の問題を回避するために、x行ごとに2つの新しい行をきれいに追加する方法を見つけようとしています。

助けてくれてありがとう、そしてさらに説明が必要な場合は私に知らせてください!

4

2 に答える 2

5

これは、クリスの唯一の肉付きのようなものです。行を挿入または削除するときは、下から作業する必要があります。

Sub InsertXRowsEveryYRows_WithMeaningfulVariableNames()
Dim NumRowsToInsert As Long
Dim RowIncrement As Long
Dim ws As Excel.Worksheet
Dim LastRow As Long
Dim LastEvenlyDivisibleRow
Dim i As Long

NumRowsToInsert = 2     'any number greater than 0
RowIncrement = 10       'ditto
Set ws = ActiveSheet
With ws
    LastRow = .Range("A" & .Rows.Count).End(xlUp).Row
    LastEvenlyDivisibleRow = Int(LastRow / RowIncrement) * RowIncrement
    If LastEvenlyDivisibleRow = 0 Then
        Exit Sub
    End If
    Application.ScreenUpdating = False
    For i = LastEvenlyDivisibleRow To 1 Step -RowIncrement
        .Range(i & ":" & i + (NumRowsToInsert - 1)).Insert xlShiftDown
    Next i
End With
Application.ScreenUpdating = True
End Sub
于 2012-12-29T23:15:19.220 に答える
4

範囲の下から数える

For i = Number of rows in rngOutput to 1 step -1
   If i mod x = 0 Then
        Insert 2 Rows
   End If
Next i
于 2012-12-29T23:03:11.943 に答える