VBA代码,用于根据单元格值在新工作表上多次复制数据

时间:2013-01-14 10:36:25

标签: excel-vba vba excel

我对VBA非常陌生。我试图在我每天使用的工作表中自动执行复制功能。

我想要做的是将名称和ID复制到计数显示的次数到B和C列中的下一页。如果计数为0,计数器将移动到下一行而不复制名称和该特定行的ID。

Name   ID      Count
Dave   dg124s   8
Robert rc5675  10
Mary   mg987    0
John   jh785    6
June   fg71d   22

挑战

  1. 包含数据的行数在任何给定时间都可能超过。(这里我们有6行数据但最多可以增加40行)。

  2. 副本应从最底部的行开始并转到顶部。(在本例中从第6行开始)

  3. 粘贴时,它应该从下一个工作表的最顶行开始(字段在下一个工作表中保持相同)

  4. 希望我已经清楚地解释过了。如果有人能帮助我,我将不得不承担责任。

    谢谢,

    戴夫。

1 个答案:

答案 0 :(得分:0)

试试这个 -

[EDITED]

Sub CopyNames()

Dim rngCopy As Range, rngTemp As Range, rngTarget As Range
Dim intMultiple As Integer, i As Integer, intRow As Integer

Set rngCopy = Sheet1.Range("A2", Sheet1.Cells(Sheet1.Rows.Count, 1).End(xlUp)) 'Set range including names
Set rngTarget = Sheet2.Cells(Sheet2.Rows.Count, 2).End(xlUp).Offset(1, 0) 'Set target range to next available row in Sheet2

For intRow = rngCopy.Rows.Count To 1 Step -1
    Set rngTemp = rngCopy.Cells(intRow)
    intMultiple = rngTemp.Offset(0, 2) 'Find how many times to copy the name
        For i = 1 To intMultiple
            rngTarget.Value = rngTemp.Value 'Copy name
            rngTarget.Next.Value = rngTemp.Next.Value 'Copy ID
            Set rngTarget = rngTarget.Offset(1, 0) 'Move target range to next row
        Next
Next

End Sub