Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Заполнить диапазон, базируясь на последнюю строку - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Заполнить диапазон, базируясь на последнюю строку (Макросы/Sub)
Заполнить диапазон, базируясь на последнюю строку
Exabyte Дата: Понедельник, 17.11.2014, 21:53 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Здравствуйте!
Пытаюсь написать макрос для заполнения диапазона ячеек
Если использовать Range("Q3:Q54").Select - т.е. фиксировано задать диапазон - макрос работает отлично.
Но, мне требуется определить динамический диапазон, базируясь на последней заполненной строке в столбце, скажем, А
[vba]
Код
Sub Macro1()
'
' Macro1 Macro
'
       Dim lastrow As Long
'   lastrow = Range("A1048576").end(xlup).Row
       ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-4],[Codes.xlsx]Sheet1!C1:C2,2,0)"
       Selection.Copy
       Range("Q3:Q" & lastrow).Select
       ActiveSheet.Paste
       Application.CutCopyMode = False
End Sub
[/vba]
Выдает ошибку по строке Range("Q3:Q & lastrow").Select
Спасибо


Сообщение отредактировал Exabyte - Понедельник, 17.11.2014, 22:00
 
Ответить
СообщениеЗдравствуйте!
Пытаюсь написать макрос для заполнения диапазона ячеек
Если использовать Range("Q3:Q54").Select - т.е. фиксировано задать диапазон - макрос работает отлично.
Но, мне требуется определить динамический диапазон, базируясь на последней заполненной строке в столбце, скажем, А
[vba]
Код
Sub Macro1()
'
' Macro1 Macro
'
       Dim lastrow As Long
'   lastrow = Range("A1048576").end(xlup).Row
       ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-4],[Codes.xlsx]Sheet1!C1:C2,2,0)"
       Selection.Copy
       Range("Q3:Q" & lastrow).Select
       ActiveSheet.Paste
       Application.CutCopyMode = False
End Sub
[/vba]
Выдает ошибку по строке Range("Q3:Q & lastrow").Select
Спасибо

Автор - Exabyte
Дата добавления - 17.11.2014 в 21:53
sorcerer Дата: Понедельник, 17.11.2014, 22:14 | Сообщение № 2
Группа: Пользователи
Ранг: Новичок
Сообщений: 38
Репутация: 6 ±
Замечаний: 0% ±

Excel 2010
Exabyte, Здравствуйте. Так попробуйте.
[vba]
Код
Sub Macro1()
'
' Macro1 Macro
'
       Dim lastrow As Long
      lastrow = Cells(Rows.Count, 1).End(xlUp).Row
       ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-4],[Codes.xlsx]Sheet1!C1:C2,2,0)"
       Selection.Copy
       Range("Q3: Q" & lastrow).Select
       ActiveSheet.Paste
       Application.CutCopyMode = False
End Sub
[/vba]

В Cells цифра 1 - номер столбца А


Сообщение отредактировал sorcerer - Понедельник, 17.11.2014, 22:22
 
Ответить
СообщениеExabyte, Здравствуйте. Так попробуйте.
[vba]
Код
Sub Macro1()
'
' Macro1 Macro
'
       Dim lastrow As Long
      lastrow = Cells(Rows.Count, 1).End(xlUp).Row
       ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-4],[Codes.xlsx]Sheet1!C1:C2,2,0)"
       Selection.Copy
       Range("Q3: Q" & lastrow).Select
       ActiveSheet.Paste
       Application.CutCopyMode = False
End Sub
[/vba]

В Cells цифра 1 - номер столбца А

Автор - sorcerer
Дата добавления - 17.11.2014 в 22:14
Exabyte Дата: Понедельник, 17.11.2014, 22:30 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Спасибо, так работает.
Нашел небольшой баг в реализации :)

Если запускать макрос в любой ячейке на странице - то он перезаписывает данные этой формулой
Надо, так я понимаю, перед вставкой формулы перемещать фокус в начало заполняемого диапазона?
Попытаюсь почитать про это..
 
Ответить
СообщениеСпасибо, так работает.
Нашел небольшой баг в реализации :)

Если запускать макрос в любой ячейке на странице - то он перезаписывает данные этой формулой
Надо, так я понимаю, перед вставкой формулы перемещать фокус в начало заполняемого диапазона?
Попытаюсь почитать про это..

Автор - Exabyte
Дата добавления - 17.11.2014 в 22:30
sorcerer Дата: Понедельник, 17.11.2014, 22:36 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 38
Репутация: 6 ±
Замечаний: 0% ±

Excel 2010
Если требуется ввести данные с другого файла, то может так проще?
[vba]
Код
Sub Macro1()
  Range("Q3: Q" & Cells(Rows.Count, 1).End(xlUp).Row).Value = "=VLOOKUP(RC[-4],[Codes.xlsx]Sheet1!C1:C2,2,0)"
End Sub
[/vba]


Сообщение отредактировал sorcerer - Понедельник, 17.11.2014, 22:40
 
Ответить
СообщениеЕсли требуется ввести данные с другого файла, то может так проще?
[vba]
Код
Sub Macro1()
  Range("Q3: Q" & Cells(Rows.Count, 1).End(xlUp).Row).Value = "=VLOOKUP(RC[-4],[Codes.xlsx]Sheet1!C1:C2,2,0)"
End Sub
[/vba]

Автор - sorcerer
Дата добавления - 17.11.2014 в 22:36
gling Дата: Понедельник, 17.11.2014, 22:43 | Сообщение № 5
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2525
Репутация: 678 ±
Замечаний: 0% ±

2010
А зачем копировать формулу если можно сразу вставить? [vba]
Код
Range("Q3: Q" & lastrow).FormulaR1C1 = "=VLOOKUP(RC[-4],[Codes.xlsx]Sheet1!C1:C2,2,0)"
[/vba]Да уже об этом написали.


ЯД-41001506838083

Сообщение отредактировал gling - Понедельник, 17.11.2014, 22:44
 
Ответить
СообщениеА зачем копировать формулу если можно сразу вставить? [vba]
Код
Range("Q3: Q" & lastrow).FormulaR1C1 = "=VLOOKUP(RC[-4],[Codes.xlsx]Sheet1!C1:C2,2,0)"
[/vba]Да уже об этом написали.

Автор - gling
Дата добавления - 17.11.2014 в 22:43
Exabyte Дата: Понедельник, 17.11.2014, 22:54 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Да, спасибо. Более элегантно
 
Ответить
СообщениеДа, спасибо. Более элегантно

Автор - Exabyte
Дата добавления - 17.11.2014 в 22:54
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Заполнить диапазон, базируясь на последнюю строку (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!