Скопируйте вставку из листа 1 в лист 2 - PullRequest
1 голос
/ 29 декабря 2010

Я новичок в этом, поэтому любая помощь приветствуется. Нужна помощь в написании сценария, который будет копировать столбец A + B и вставлять его в sheet2 несколько раз в соответствии со значением C. Смотрите пример ниже. Это сэкономит нам огромное количество времени. Любая помощь будет принята с благодарностью.

Лист1

A       B       C
1111    aaaa     3
2222    bbbb     4
3333    cccc     2

После макроса

Лист2

A       B       C
1111    aaaa     3
1111    aaaa     3
1111    aaaa     3
2222    bbbb     4
2222    bbbb     4
2222    bbbb     4
2222    bbbb     4
3333    cccc     2
3333    cccc     2

1 Ответ

2 голосов
/ 30 декабря 2010
Sub MakeNewTable()

    Dim rCell As Range
    Dim i As Long
    Dim rNext As Range

    'loop through the cells in column A of the source sheet
    For Each rCell In Sheet1.Range("A1:A3")
        'loop as many times as the value in column C of the source sheet
        For i = 1 To rCell.Offset(0, 2).Value
            'find the next empty cell to write to in the dest sheet
            Set rNext = Sheet2.Cells(Sheet2.Rows.Count, 1).End(xlUp).Offset(1, 0)
            'copy A and B from source to the dest sheet
            rCell.Resize(1, 2).Copy rNext.Resize(1, 2)
        Next i
    Next rCell

End Sub

Вам необходимо изменить ссылки на листы в соответствии с вашей ситуацией. Ссылки на листы, используемые выше, являются ссылками на кодовое имя. Если вы откроете Project Explorer в VBE (Control + R) и развернете свою проекцию, вы увидите объекты типа «Sheet1 (MyTablName)». Часть Sheet1 называется Codename и не изменяется при переименовании листа. Если вы хотите использовать имена вкладок, вы должны использовать что-то вроде

ThisWorkbook.Worksheets("MyTabName").Range("A1:A3")

Удачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...