мне очень трудно понять, что тебе нужно сделать. Вы вручную создали листы на основе имен в row2 или их нужно делать еще? Теперь вы хотите скопировать всю информацию из Sheets (1) на лист ark1? И что такое лист (1)? Хенрик Дженсенс Шит? Ваш скриншот подразумевает, что вы хотите получить информацию с листа ковчега, но ваш код подразумевает, что вы копируете на лист ковчега.
Моя лучшая догадка, отрегулируйте это при необходимости:
Sub test()
'See how many columns you have on your sheet (I'm assuming your Ark1 sheet has the input)
For i = 2 To ThisWorkbook.Sheets("Ark1").Cells(2, Columns.Count).End(xlToLeft).Column
'This creates new sheets with the names from the second row (was this done already?)
ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)).Name = _
ThisWorkbook.Sheets("Ark1").Cells(2, i)
'Pick one of the next three, depending on what you need
'1.) This is where I'm confused but you should be able to adjust this as needed.
ThisWorkbook.Sheets(ThisWorkbook.Sheets("Ark1").Cells(2, i).Value).Range("A1:O10").Value = _
ThisWorkbook.Sheets("Sheet1").Range("A1:O10").Value 'I dont see a sheet1 in your screenshot but your code has it This is the source tho
'2.) Maybe you mean this tho?
ThisWorkbook.Sheets(ThisWorkbook.Sheets("Ark1").Cells(2, i).Value).Columns(1).Value = _
ThisWorkbook.Sheets("Ark1").Columns(i).Value
'3.) if you need to copy
ThisWorkbook.Sheets("Ark1").Columns(i).Copy _
Destination:=ThisWorkbook.Sheets(ThisWorkbook.Sheets("Ark1").Cells(2, i).Value).Columns(1)
Next
End Sub
Это сломается для того же имена и пустые ячейки в строке 2 также создают обработчики по мере необходимости. Должно ли работать иначе? Не уверен. Требуется значение.