-1

Я относительно простой пользователь Excel и нуждаюсь в помощи с чем-то, что, как я знаю, возможно, но слишком сложно для меня, чтобы понять.

По сути, у меня есть список на листе в Excel (называемый «списком»), и для каждой записи в списке потребуется собственный лист, скопированный из уже настроенного оригинала (называемого «RJF»). Список начинается в строке 6.

Столбец А на листе «Список» содержит код для каждого элемента списка. Столбец B содержит название каждого элемента списка.

Для каждого элемента в «Списке» значение в столбце А необходимо использовать для присвоения имени скопированному листу, а также для перехода к ячейке А1 копии. Запись в столбце B должна быть перенесена в ячейку B1 копии.

Пожалуйста, кто-нибудь может мне помочь с этим? Я нашел похожие запросы с ответами, но всегда с дополнительными требованиями, которые я не знаю, как удалить, не затрагивая аспекты, которые я действительно хочу.

1 ответ1

0

Я оригинальный постер. Извиняюсь за то, что не публикую в соответствии с обычной практикой. Я нашел код, похожий на тот, который мне нужен, в ответе на достаточно похожий запрос. Я адаптировал это к тому, что мне было нужно:

Sub MoreAndMoreSheets()

Dim ListSh As Worksheet, BaseSh As Worksheet
Dim NewSh As Worksheet
Dim ListOfNames As Range, LRow As Long, cell As Range

With ThisWorkbook
    Set ListSh = .Sheets("List")
    Set BaseSh = .Sheets("Base")
End With

LRow = ListSh.Cells(Rows.Count, "A").End(xlUp).Row '--Get last row of list.
Set ListOfNames = ListSh.Range("A6:A" & LRow) '--Qualify our list.

With Application
    .ScreenUpdating = False '--Turn off flicker.
    .Calculation = xlCalculationManual '--Turn off calculations.
End With

For Each cell In ListOfNames '--For every name in list...
    BaseSh.Copy After:=Sheets(Sheets.Count) '--Copy Base sheet.
    Set NewSh = ActiveSheet '--Let's name it NewSh.
    With NewSh
        On Error GoTo Boom '--In case of errors.
        .Name = cell.Value '--Set the sheet's name to that of our current name in list.
        GoTo LetUsContinue '--Skip to the LetUsContinue block.
Boom: '--In case of duplicate names...
        .Name = "Dup" & cell.Value '--Add "Dup" to beginning.
        .Tab.ColorIndex = 53 '--Change the tab color of the duplicate tab to orange for easy ID.
LetUsContinue:
        On Error GoTo 0 '--Turn off error handling.
        .Range("A1") = cell.Value
        .Calculate '--Calculate page.

    End With
Next cell

With Application
    .ScreenUpdating = True '--Return to proper state.
    .Calculation = xlCalculationAutomatic '--Return to automatic calculation.
End With

BaseSh.Activate '--Select Base.
MsgBox "Done!" '--Done!

End Sub

Я использовал vlookup, ссылающийся на лист списка в ячейке B1 Базового листа, который выполнил то, что я хотел, в отношении второго столбца, проходящего через:

= ВПР (A1, 'Список'!A6:B500,2, FALSE)

Благодаря TheLaughingMan, должен ли он когда-либо прочесть это, так как он был кодом, который я адаптировал.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .