0

私はVBAを初めて使用します。毎日使うシートのコピー機能を自動化しようとしています。

私がやりたいのは、カウントが示すように名前とIDを列BとCの次のシートに何度もコピーすることです。カウントが0の場合、カウンターは名前とIDをコピーせずに次の行に移動します。その特定の行。

名前IDカウント
デイブdg124s8
ロバートrc567510
メアリーmg9870
ジョンjh7856
6月fg71d22

挑戦は

  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 に答える