Как перенести личные данные на листы, с которыми они связаны с VBA - PullRequest
0 голосов
/ 29 января 2020

У меня есть лист с вымышленными личными данными: номера телефонов, адреса и т. Д. c. У меня есть около 200 разных людей, поэтому я создал VBA, которая автоматически создает листы на основе имен людей. И я и совсем новичок в VBA и знаю, как копировать данные с помощью, например ..

Sheets("Ark1").Range("A1:O10").Copy Destination:=Sheets("Ark2").Range("A1")

Но это только объясняет, для этого конкретного c назначения листа. Как мне на основе их имен с листа ("Ark1"). переместить данные, которые принадлежат указанным c лицам, из "Ark1". Как показано на связанном изображении, столбец B - это данные одного человека, C - это другое и др. c. Критериями поиска должны быть их имена, потому что именно так я определяю различные листы, а их имена находятся в «row2» в файле данных «Ark1».

Обновленный набор данных

1 Ответ

0 голосов
/ 29 января 2020

мне очень трудно понять, что тебе нужно сделать. Вы вручную создали листы на основе имен в 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 также создают обработчики по мере необходимости. Должно ли работать иначе? Не уверен. Требуется значение.

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