0

次のような構造のExcelファイルがあります。

Key_Col Column Column
A       foo    bar
A       foo    bar
A       foo    bar
B       foo    bar
B       foo    bar
Z       foo    bar
Z       foo    bar
Z       foo    bar
Z       foo    bar

同じ Key_Col を共有するすべての行を選択し、それをコピーして新しいワークシートに貼り付けたいと考えています。たとえば、3 つの 'A' 行すべて、両方の 'B' 行、および 4 つの 'Z' 行すべてを選択し、それぞれを別のワークシートにコピーしたいと考えています。

例として、A、B、および Z を使用しました。実際には、キー列にはいくつかの異なる値があり、それぞれに可変数があります。Google では、優れた VBA チュートリアルをあまり見つけられませんでした。他のプログラミング言語では、current_key が initial_key に等しい間に内側の for ループがループし、シーケンス内の次の一意のキーに移動する二重 for ループを使用するだけだと思います。

4

1 に答える 1

0

これでおそらくうまくいくはずです。注意すべき点がいくつかあります。

  • StartSelect は、開始したい行です。
  • Pastesheet は、貼り付けを開始するシート インデックスです。
  • ソースシートは、データを含むシートです。
  • 空のセルに到達するまで実行されます。
  • シートがなくなると、新しい空のシートが作成されます。
  • 列1が必要であると仮定しました。それを変更するには、 (startselect ,1) を列に変更します。

    Dim StartSelect As Integer
    Dim EndSelect As Integer
    Dim PasteSheet As Integer
    Dim SourceSheet As Integer
    
    Sub Macro1()
    StartSelect = 1
    PasteSheet = 2
    SourceSheet = 1
    
    While Sheets(SourceSheet).Cells(StartSelect, 1) <> ""
        EndSelect = StartSelect
        While Sheets(SourceSheet).Cells(StartSelect, 1) = Sheets(SourceSheet).Cells((EndSelect+1), 1)
            EndSelect = EndSelect + 1
        Wend
        Sheets(SourceSheet).Rows(StartSelect & ":" & EndSelect).Copy
        If PasteSheet > Sheets.Count Then Sheets.Add After:=Sheets(Sheets.Count)
        Sheets(PasteSheet).Paste
        PasteSheet = PasteSheet + 1
        StartSelect = (EndSelect + 1)
    Wend
    
    End Sub
    
于 2013-05-23T06:52:39.967 に答える