0

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

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

名称 ID 计数
戴夫 dg124s 8
罗伯特 rc5675 10
玛丽 mg987 0
约翰 jh785 6
六月 fg71d 22

挑战是

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

  2. 副本应该从最底部的行开始并到顶部。(在这种情况下从第 6 行开始)

  3. 粘贴时,它应该从下一张表的最顶行开始(下一张表中的字段保持不变)

希望我已经解释清楚了。如果有人可以帮助我,我将不胜感激。

谢谢,

戴夫。

4

1 回答 1

0

尝试这个 -

[编辑]

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
于 2013-01-14T10:47:31.613 回答