根据单元格值复制和删除Excel中的行

时间:2014-12-02 20:52:01

标签: excel vba automation row

我有两张纸:

Sheet1包含许多行,其中包含大量数据。每一行在A列中都有一个唯一的编号。

来自sheet1中行的所有这些数据都被复制到sheet2,其中包含一个简单的= sheet1!$ A $ 1等。

有时/很多次我在sheet2中需要多行(精确副本)的副本,此时我在sheet2中手动插入新行,我将上面的行复制到新创建的行。

现在,如果我在sheet1中插入一个新列,我可以定义在sheet2中必须创建的副本数量,这对我来说非常好并且非常节省时间。如果我之后可以更改副本数量(在sheet1中),如果我错误地在那里打错了数字,那么也会很好,然后excel会自动删除那里的副本数量,从最后一行创建。

关于如何做到这一点的任何想法?

我尝试过的代码:

Sub copy()
Set i = Sheets("Sheet1")
Set e = Sheets("Sheet2")
Dim d
Dim j
d = 1
j = 2
Do Until IsEmpty(i.Range("Q" & j))
  If i.Range("Q" & j) = "TERM" Then
    d = d + 1
    e.Rows(d).Value = i.Rows(j).Value
  End If
  j = j + 1
Loop
End Sub

1 个答案:

答案 0 :(得分:0)

这不会非常有效,但您可以这样做的方法是在Sheet1中使用两个额外列。

  1. 如您所述,B栏是您希望A列的值重复的次数。
  2. 您希望C列为累计计数。要做到这一点,你必须:

    C1: =B1
    C2: =C1+B2
    

    向下拖动C2

  3. 现在,在表2中,您可以输入以下公式作为阵列公式

    A1: =INDEX(Sheet1!A:A,MATCH(TRUE,Sheet1!C:C>=ROW(),0))
    

    (为了使它成为一个数组公式,一旦你输入它,用 ctrl + shift + 输入完成。)

  4. 向下拖动,第2页,A1向下移动很多行,当您更改工作表1的B列中的值(重复A列中的值的次数)时,它会更新

  5. 希望这可以解决问题!