これは難しい Visual Basic の質問なので、このフォーラムの誰かが助けてくれるかどうかわかりません。しかし、試してみる価値はあります。
Excel でマクロとして使用するプログラムを Visual Basic で作成しました。
マクロでは、シート 1 (FINAL) のデータを取得し、その値をコピーしてシート 2 (データ) に貼り付けています。sheet1 のデータ範囲には多くの空白セルがあるため、(空白セルのみの行ではなく) 値のある行のみを貼り付けるプログラムを作成したいと考えました。
私のプログラムは現在、シート 2 に貼り付ける前にシート 1 のデータ範囲を変更していますが、それは望ましくありません……..その結果、書式設定もすべて台無しになります。代わりに、シート 1 のデータを完全に同じままにして、シート 2 への貼り付けアクションで空白行を削除したいと考えています。
シート 1 のデータは列 AL から始まり、列 CD に進みます。
行の整合性を維持することは非常に重要です。貼り付け中に空白のセルを消去したくはありませんが、貼り付け中に範囲内の空白の行を消去したくありません。そのため、列 AL と CD の間にデータ ポイントが 1 つでもある行がある場合、その行全体を貼り付けで維持する必要があります。ただし、列 AL と CD の間の行が完全に空白の場合は、シート 2 への貼り付けアクションで削除する必要があります。
私の既存のプログラムは以下です。どんな助けでも大歓迎です。
Dim ws As Worksheet
Set ws1 = Worksheets("FINAL")
Set ws2 = Worksheets("Data")
With ws1.UsedRange
lastcolumn = .Cells(1, 1).Column + .Columns.Count - 1
lastrow = .Cells(1, 1).Row + .Rows.Count - 1
End With
ws1.Range(Cells(1, 38), Cells(lastrow, lastcolumn)).AutoFilter field:=1, Criteria1:="<>"
ws1.Range(Cells(1, 38), Cells(lastrow, lastcolumn)).Copy
ws2.Range("A1").PasteSpecial xlPasteValues
Application.CutCopyMode = False