2015-03-19 4 views
0

Мне нужно скопировать новые данные с листа каждую неделю на уже существующий лист со всеми прошлыми данными. Существующие столбцы листа (некоторые) также формулируются с использованием Vba. Я написал код, который копирует данные на лист, но другие столбцы не заполняются (или перетаскиваются) автоматически.Копирование дополнительных входных данных для автоматического и автоматического заполнения

Sub Transfernewdata() 

Dim sht As Worksheet 
Set sht = ThisWorkbook.Worksheets("Sheet2") 
lastrow = sht.Cells.Find("*", searchorder:=xlByRows,  searchdirection:=xlPrevious).Row 
Range("D5:D" & lastrow).Copy ThisWorkbook.Worksheets("Sheet1").Range("a65536").End(xlUp).Offset(1, 4) 
Range("C5:C" & lastrow).Copy ThisWorkbook.Worksheets("Sheet1").Range("a65536").End(xlUp).Offset(1, 3) 
Range("B5:B" & lastrow).Copy ThisWorkbook.Worksheets("Sheet1").Range("a65536").End(xlUp).Offset(1, 2) 
Range("A5:A" & lastrow).Copy ThisWorkbook.Worksheets("Sheet1").Range("a65536").End(xlUp).Offset(1, 1) 
ThisWorkbook.Worksheets("Sheet1").Range("a65536").End(xlUp).Offset(1, 0) = Date 
Application.CutCopyMode = False 

End Sub 

Я просто передаю 4 колонки, и отдых необходимо заполнить автоматически. Я пытаюсь поместить дату (последняя строка кода), но даже это не заполняется более одного раза. Любая помощь приветствуется, также я не понимаю, что каждый выполняемый мной модуль не влияет на добавленные новые данные. enter image description here

+0

Когда вы говорите, что «отдых должен быть заполнен автоматически», есть ли дополнительные строки (E-?), Которые имеют формулы что вы ожидаете автоматически заполнить вновь заполненные строки? – FreeMan

+0

@FreeMan Да, есть больше столбцов. Например: я копирую 100 строк с 4 столбцами, они копируются, но другие столбцы, значение которых зависит от этих столбцов, не заполняются. Мне нужно перетащить, чтобы заполнить его, но я хочу сделать это через VBA. Также можете ли вы сказать мне, если возможно, почему оператор Date не заполняется до конца. Я думаю, это должно было намекнуть мне и на заполнение других строк. – Meesha

ответ

1

изменить это:

ThisWorkbook.Worksheets("Sheet1").Range("a65536").End(xlUp).Offset(1, 0) = Date 

к этому:

ThisWorkbook.Worksheets("Sheet1").Range("A" & lastrow & ":a65536") = Date 

На основании дополнительной информации, предоставленной вами в комментариях, ниже, я бы предложил сделать ваш данных в таблицу. Формулы должны автоматически копироваться каждый раз, когда вы вставляете строку в таблицу.

Если переместить курсор в левый верхний угол набора данных и нажмите Ctrl - T он будет автоматически tabelize всех смежных данных, которые уже есть там. (Вам нужно будет пометить или отменить вопрос «Мои данные имеют заголовок», если это необходимо.)

+0

Это приведет к тому, что дата будет проходить до 65536 строк, что не требуется, но спасибо за это. – Meesha

+0

Тогда я не уверен, что тебе нужно. Вам придется попробовать объяснить это снова. Возможно, изображение или «текстовая графика», чтобы показать желаемый результат. – FreeMan

+0

Я добавил изображения. Поэтому я всегда копирую значения столбца B и столбца c из другого листа. Теперь мне нужно, чтобы, когда я добавляю значения B и C, тогда другие столбцы должны начинать заполняться, потому что все, что им нужно, это значение B и C, которое я копирую, но эти столбцы не заполняются. Также оператор Date что вы предложили колонку даты заполнения до 65536, тогда как я хочу, чтобы она заполняла ее до строки с входами B и C. – Meesha

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