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 的所有行,然后将其复制并粘贴到新工作表中。例如,我想选择所有三个“A”行、两个“B”行和所有 4 个“Z”行,并将每个行复制到一个单独的工作表中。

我只是以 A、B 和 Z 为例。实际上,键列中有几个不同的值,并且每个值的数量都是可变的。我在 Google 上没有找到很多好的 VBA 教程。在任何其他编程语言中,我想我只会使用双 for 循环,其中内部循环在 current_key 等于 initial_key 时循环,然后转到序列中的下一个唯一键。

4

1 回答 1

0

这应该可以做到,有几点需要注意:

  • StartSelect 是您要开始的行。
  • Pastesheet 是您要开始粘贴的工作表索引。
  • Sourcesheet 是包含您的数据的工作表。
  • 它会一直运行,直到它到达一个空单元格。
  • 如果纸张用完,它将创建新的空白纸张。
  • 我假设您想要第 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 回答