Excel VBA Do-Loop でコピーして貼り付け、各行の空のセルにデータを入力します。

Excel VBA Do-Loop でコピーして貼り付け、各行の空のセルにデータを入力します。

適切な Excel VBA の do ループを適用する方法、またはセルの内容をコピーして各行の次の空のセルのセットを貼り付ける方法について支援が必要です。各行をループすると、次の空のセルのみがコピーされて貼り付けられ、次に次の塗りつぶされたセルの内容をコピーして、各行が塗りつぶされるまで次の空のセルに貼り付けられます。約 5,000 行を含むテーブルにこれを適用する必要があります。支援をいただければ幸いです。元のテーブルと予想されるテーブルの結果は次のようになります。 サンプルテーブル

答え1

以下の方法でうまくいくはずです。以下の方法ではテーブルが値のみで上書きされるので、テーブルに数式が含まれている場合は、値で上書きされると数式が失われることに注意してください。

Sub SuperUserHelp()

  Dim TempArray As Variant, x As Long, y As Long
  Dim ValueNow As Variant, SheetName As String, TableAddress As String

  SheetName = "Sheet1"   'Set your sheet name here
  TableAddress = "A1:E5" 'Set your table range here

  TempArray = Sheets(SheetName).Range(TableAddress).Value

  For x = 1 To UBound(TempArray, 1)

    ValueNow = Empty 'new row defaults to

    For y = 1 To UBound(TempArray, 2)
      If TempArray(x, y) = Empty Then
        TempArray(x, y) = ValueNow
      Else
        ValueNow = TempArray(x, y)
      End If
    Next y

  Next x

  Sheets(SheetName).Range(TableAddress).Value = TempArray

End Sub

関連情報