Excel ワークブックに 200 を超えるシートがあり、それぞれが非常に奇妙な方法でフォーマットされており、必要なすべてのデータを 1 つのマスター シートにコンパイルする方法を理解する必要があります。特定のセルと範囲の値のみが必要です (以下のコードを参照)。最終的にコンパイルされたシートを長い形式にしたいと思います (添付の画像を参照)。
各シートの形式の例である添付の画像があります。これにはすべてのセルが含まれていますが、実際のデータは含まれていません。実際には、大量のデータがあり、一部のシートには 1000 行を超えるものがあります。
R の関数を使用して、すべてのシートを個別のデータ フレームとして読み込んでマージできるようにしようとしましたが、機能しませんでした。次に、VBA を使用しようとしましたが、構文に慣れていません。これが私が思いついたものです:
Sub Copy_Example()
Dim J As Integer
Dim s As Worksheet
On Error Resume Next
Sheets(1).Select
Worksheets.Add ' add a sheet in first place
Sheets(1).Name = "Combined"
Worksheets("Sheet2").Range("D9").Copy Destination:=Worksheets("Combined").Range("A2")
Worksheets("Sheet2").Range("E2").Copy Destination:=Worksheets("Combined").Range("B2")
Worksheets("Sheet2").Range("E3").Copy Destination:=Worksheets("Combined").Range("C2")
Worksheets("Sheet2").Range("E4").Copy Destination:=Worksheets("Combined").Range("D2")
Worksheets("Sheet2").Range("E5").Copy Destination:=Worksheets("Combined").Range("E2")
Worksheets("Sheet2").Range("C22:C2000").Copy Destination:=Worksheets("Combined").Range("F1")
Worksheets("Sheet2").Range("E22:E2000").Copy Destination:=Worksheets("Combined").Range("G1")
Worksheets("Sheet2").Range("F22:F2000").Copy Destination:=Worksheets("Combined").Range("H1")
Worksheets("Sheet2").Range("G22:G2000").Copy Destination:=Worksheets("Combined").Range("I1")
Worksheets("Sheet2").Range("H22:H2000").Copy Destination:=Worksheets("Combined").Range("J1")
Worksheets("Sheet2").Range("I22:I2000").Copy Destination:=Worksheets("Combined").Range("K1")
End Sub
この VBA は、シート 2 に対してのみ、新しく作成されたワークシートに正しい列と範囲をコピーして貼り付けます。追加のコード スニペットを統合して、ワークブック内のすべてのシートを実行し、以前に追加した最後の行の下にデータを貼り付けようとしました。しかし、私はそれを機能させることができません。また、データのコピー元のシートの名前を含む列を追加できるようにしたいと考えています。
RまたはVBAのいずれかを使用して、誰かがこれを手伝ってくれるなら、本当に感謝しています。