0

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のいずれかを使用して、誰かがこれを手伝ってくれるなら、本当に感謝しています。

各シートのフォーマット例です

これは、マスター コンパイル シートを次のようにしたい例です。

4

1 に答える 1