2016-02-24 4 views
0

Я действительно только начинаю изучать VBA и часто использовал сайт.Скопируйте и вставьте макрос VBA

У меня настоящая головная царапина и мне понравилась бы помощь и руководство - надеюсь, это поможет мне понять это немного лучше.

У меня есть большой длинный список имен сотрудников в столбце, и мне нужно создать строку для каждой из них с датами года 01/01/2016-31/12/2016.

У меня в столбце A на одном листе 3666 строк (10 x 01/01/2016-31/12/2016), и я подумал, могу ли я написать VBA для копирования значений имени первого сотрудника и вставить его вниз 366 строк в столбце B, затем отпустите 1 строку, скопируйте следующее имя сотрудника и вставьте следующие 366 строк и повторите до тех пор, пока не будут завершены все 10 имен сотрудников.

Оставляя меня со строкой для каждого названия персонала и каждой даты года.

Надеюсь, что это имеет смысл.

Любая помощь будет удивительным

ответ

0

вы можете использовать этот код:

Sub test() 
Dim i&, cl As Range, SDate As Date, FDate As Date, k As Variant 
Dim Dic As Object: Set Dic = CreateObject("Scripting.Dictionary") 
Dic.CompareMode = vbTextCompare 
i = [A:A].Find("*", , , , , xlPrevious).Row 
For Each cl In Range("A2:A" & i) 
    If Not Dic.exists(cl.Value2) Then Dic.Add cl.Value2, "" 
Next cl 
Workbooks.Add: [A1] = "Name": [B1] = "Date" 
FDate = "01/01/2017": i = 2 
For Each k In Dic 
    SDate = "01/01/2016" 
    While SDate < FDate 
     Cells(i, "A").Value2 = k 
     Cells(i, "B").Value2 = SDate 
     Cells(i, "B").NumberFormat = "DD/MM/YYYY" 
     SDate = SDate + 1: i = i + 1 
    Wend 
Next k 
End Sub 

Источник:

enter image description here

выход:

enter image description here

+0

Василий, ты бог !!!! Работал как сон !! Благодаря! –

Смежные вопросы