2013-08-28 4 views
3

Я пытаюсь использовать макрорекордер в Excel для записи макроса, чтобы заполнить столбец ячеек, однако, поскольку заполнение каждый раз представляет собой другое количество ячеек, оно либо заполняется на короткий или слишком длинный, и это, по-видимому, связано с тем, что макрос идентифицирует диапазон ячеек и его фиксированный.Macro to Auto Fill Down до последней соседней ячейки

В любом случае, я могу заставить его заполнить последнюю заполненную соседнюю ячейку. Например. Автозаполняйте столбец E до тех пор, пока он не достигнет последней заполненной строки в столбце D. Я рассмотрел некоторые примеры здесь, но код выглядит очень по-разному, поэтому не уверен, что это можно сделать с помощью макрорекордера, или мне нужно заставить кого-то написать некоторые код или это что-то, что нужно сделать вручную?

Это код, который у меня есть в макросе.

ActiveCell.FormulaR1C1 = _ 
     "=IF(MONTH(RC[-1])>3,"" ""&YEAR(RC[-1])&""-""&RIGHT(YEAR(RC[-1])+1,2),"" ""&YEAR(RC[-1])-1&""-""&RIGHT(YEAR(RC[-1]),2))" 
    Selection.AutoFill Destination:=Range("E2:E1344") 
    'Selection.AutoFill Destination:=Range("E2:E1344") 
    Range("E2:E1344").Select 

Если кто-нибудь может помочь я был бы очень благодарен

ответ

9

Непроверено .... но должен работать.

Dim lastrow as long 

lastrow = range("D65000").end(xlup).Row 

ActiveCell.FormulaR1C1 = _ 
     "=IF(MONTH(RC[-1])>3,"" ""&YEAR(RC[-1])&""-""&RIGHT(YEAR(RC[-1])+1,2),"" ""&YEAR(RC[-1])-1&""-""&RIGHT(YEAR(RC[-1]),2))" 
    Selection.AutoFill Destination:=Range("E2:E" & lastrow) 
    'Selection.AutoFill Destination:=Range("E2:E"& lastrow) 
    Range("E2:E1344").Select 

единственное исключение вы уверены, что ваш код автозаполнения совершенен ...

+0

Спасибо, что является совершенным, и да код автозаполнения работает отлично спасибо – user2725363

+0

Рад, что смог помочь .... Вы можете отметить ответ, как принято ... тик правой кнопки рядом с моим ответом – Vasim

+0

Я получаю ошибку в этом случае: Selection.AutoFill Destination: = Range ("E2: E" и lastrow), когда lastrow = 2. i.e (Selection.AutoFill Destination: = Range («E2: E2»)), пожалуйста, дайте мне решение –

3

В этом примере показано, как заполнить столбец B, основываясь на объеме данных, содержащихся в столбце A. Настройка «А1», соответственно, к вашим потребностям. Он заполнит столбец B на основе формулы в B1.

Range("A1").Select 
Selection.End(xlDown).Select 
ActiveCell.Offset(0, 1).Select 
Range(Selection, Selection.End(xlUp)).Select 
Selection.FillDown 
+0

Спасибо, что сработали, но использовали другой, как он был настроен для листа. Большое спасибо – user2725363

+0

Я получаю ошибку при этом условии, Selection.AutoFill Направление: = Range ("A260: A260"), пожалуйста, помогите! .. –

2
ActiveCell.Offset(0, -1).Select 
Selection.End(xlDown).Select 
ActiveCell.Offset(0, 1).Select 
Range(Selection, Selection.End(xlUp)).Select 
Selection.FillDown 
Смежные вопросы