Добрый вечер!
Есть макрос, в котором прописаны формулы. Сколько будет заполненных строк в файле, я не знаю. В этом макросе я протянула формулы с учетом 50 000строк, после чего пустые мне нужно удалять, если заполненных строк меньше. Подскажите, пожалуйста, как можно прописать в макросе, что бы формула автоматически останавливалась перед первой пустой строкой, то есть, если в ячейках левее нет значений. Заранее спасибо.
Sub Контакты_тест()
‘
‘ Контакты Макрос
‘
‘
‘Переименовывает лист
ActiveSheet.Select
ActiveSheet.Name = «Контакты»
‘Устанавливает порядок столбцов
Range(«Q:R»).Select
Selection.Copy
Range(«B1»).Select
ActiveSheet.Paste
Columns(«G:G»).Select
Selection.Copy
Range(«E1»).Select
ActiveSheet.Paste
Columns(«P:P»).Select
Application.CutCopyMode = False
Selection.Cut
Columns(«F:F»).Select
Selection.Insert Shift:=xlToRight
Columns(«I:I»).Select
Selection.Copy
Range(«H1»).Select
ActiveSheet.Paste
Columns(«K:K»).Select
Selection.Copy
Range(«I1»).Select
ActiveSheet.Paste
Range(«K:W»).Select
Selection.Delete Shift:=xlToLeft
‘Удаляет время звонка
Columns(«G:G»).Select
Selection.TextToColumns Destination:=Range(«G1»), DataType:=xlFixedWidth, _
FieldInfo:=Array(Array(0, 4), Array(10, 9)), TrailingMinusNumbers:=True
Selection.NumberFormat = «m/d/yyyy»
‘Устанавливает значение контакта
Range(«J2»).Select
ActiveCell.FormulaR1C1 = _
«=IF(RC[-1]=»»Обещание оплаты»»,»»Контакт установлен»»,IF(RC[-1]=»»Обещание полной оплаты»»,»»Контакт установлен»»,IF(RC[-1]=»»Обещание частичной оплаты»»,»»Контакт установлен»»,IF(RC[-1]=»»Подтверждение обещания»»,»»Контакт установлен»»,IF(RC[-1]=»»Подтверждение оплаты»»,»»Контакт установлен»»,»»Контакт не установлен»»)))))»
Range(«J2»).Select
Selection.AutoFill Destination:=Range(«J2:J30000»)
Columns(«J:J»).Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End Sub
SAA 0 / 0 / 0 Регистрация: 01.07.2011 Сообщений: 3 |
||||||||||
1 |
||||||||||
Протягивание формулы до последней строки с данными в макросе01.07.2011, 14:33. Показов 27606. Ответов 12 Метки нет (Все метки)
Добрый день! Создала макрос через «Запись макроса» Отрывок из макроса:
Есть также решение с заполнением всей колонки
Но, если макрос будет заполнять все миллион строк возможных в excel, большая часть из которых пустые, то он будет подвисать. Мне нужно протянуть несколько формул по столбцу до последней строки с данными. Это возможно сделать? В примере формулы находятся на втором листе. Макрос в примере есть Вложения
0 |
Gibboustooth 735 / 203 / 11 Регистрация: 23.06.2011 Сообщений: 440 |
||||
01.07.2011, 14:40 |
2 |
|||
2 |
0 / 0 / 0 Регистрация: 01.07.2011 Сообщений: 3 |
|
01.07.2011, 15:07 [ТС] |
3 |
К сожалению не поняла как вставить в код
0 |
Gibboustooth 735 / 203 / 11 Регистрация: 23.06.2011 Сообщений: 440 |
||||
01.07.2011, 15:21 |
4 |
|||
К сожалению не поняла как вставить в код
1 |
0 / 0 / 0 Регистрация: 01.07.2011 Сообщений: 3 |
|
01.07.2011, 17:09 [ТС] |
5 |
Спасибо!
0 |
Parklane 0 / 0 / 0 Регистрация: 14.02.2013 Сообщений: 3 |
||||||||
18.09.2013, 17:06 |
6 |
|||||||
У меня такая ситуация: Вот взял ваш код, вставил себе в макрос
Но у меня после 9 столбца идут данные, и в 13 столбце ещё колонка с формулой.
то он и колонки с 9 по 12 протягивает вниз(то есть проставляются данные, которые находятся во 2 строке)
0 |
Поц -1 / 0 / 0 Регистрация: 03.06.2018 Сообщений: 8 |
||||
16.10.2018, 19:40 |
7 |
|||
0 |
ᴁ® 3070 / 1736 / 361 Регистрация: 13.12.2016 Сообщений: 5,938 Записей в блоге: 4 |
|
16.10.2018, 22:11 |
8 |
Поц, Это VBA? или вы …. Поц
0 |
0 / 0 / 0 Регистрация: 17.01.2019 Сообщений: 14 |
|
18.01.2019, 13:21 |
9 |
Почему-то процесс идет некорректно, VBA выдает сообщение: Application-time error ‘1004’ Application-defined or object-defined error. И проблемным содержимым выделяется строка, содержащая: Endrow = Cells.Find(«*», , , , xlByRows, xlPrevious).Row. Если же проверку выключить командой On Error Resume Next, то процесс вообще зависает.
0 |
15136 / 6410 / 1730 Регистрация: 24.09.2011 Сообщений: 9,999 |
|
18.01.2019, 13:50 |
10 |
Nik Toiler, приложите файл-пример со своей задачей. Возможно, этот метод поиска последней строки и не нужен.
0 |
0 / 0 / 0 Регистрация: 17.01.2019 Сообщений: 14 |
|
18.01.2019, 15:40 |
11 |
Теперь VBA пишет, что макросы отключены….
0 |
0 / 0 / 0 Регистрация: 17.01.2019 Сообщений: 14 |
|
18.01.2019, 15:43 |
12 |
Теперь VBA пишет, что макросы отключены.
0 |
15136 / 6410 / 1730 Регистрация: 24.09.2011 Сообщений: 9,999 |
|
18.01.2019, 19:29 |
13 |
Nik Toiler, у меня Find работает без ошибок, Endrow = 9.
0 |
Автор samobar48, 24 июля 2018, 10:23
На листе всегда динамическое количество строк.
Мне необходимо протянуть формулу до последней заполненной строчки.
При записи макрокодером макрос записывает статическое количество строк.
Как сделать так, чтобы протяжка формулы происходила до последней строчки с данными?
Пример макроса
Attribute VB_Name = «Module10»
Sub Вопрос()
Attribute Вопрос.VB_ProcData.VB_Invoke_Func = » n14″
‘
‘ Вопрос Макрос
‘
‘
Range(«E2»).Select
ActiveCell.FormulaR1C1 = «Точность»
Range(«E3»).Select
ActiveCell.FormulaR1C1 = «=1-RC[-2]/RC[-1]»
Range(«E3»).Select
Selection.AutoFill Destination:=Range(«E3:E9»)
Range(«E3:E9»).Select
End Sub
[свернуть]
[вложение удалено администратором]
Администратор
- Administrator
- Сообщения: 2,254
- Записан
Sub Макрос()
Dim lr As Long
‘ Поиск последней строки по столбцу A.
‘ End не ищет в скрытых строках.
‘ Это действие аналогично тому, как вы переходите в самый низ листа (т.е. на строку 1 млн),
‘ а затем нажимаете сочетание клавиш ‘Ctrl + стрелка вверх’.
lr = Cells(Rows.Count, «A»).End(xlUp).Row
Range(«E2»).FormulaR1C1 = «Точность»
Range(«E3»).FormulaR1C1 = «=1-RC[-2]/RC[-1]»
Range(«E3»).AutoFill Destination:=Range(«E3:E» & lr)
End Sub
[свернуть]
- Форум по VBA, Excel и Word
-
►
VBA, Excel -
►
VBA, макросы в Excel -
►
Excel VBA Макросы: Протягивание формулы до последней заполненной строчки.
Формулировка задачи:
всем доброго времени суток
Уважаемые профи,подскажите,пожалуйста, такой вопрос: в ячейке С1 имеется формула =ТЕКСТ($D1;»ДД.ММ.ГГГГ ч:мм:сс»)
надо протянуть ее до последней заполненной ячейки по столбцу D . Соответственно в ячейке С2 будет формула =ТЕКСТ($D2;»ДД.ММ.ГГГГ ч:мм:сс») и тд
подскажите как это реализовать в vba(тк буду добавлять в макрос)
Спасибо большое
Код к задаче: «Vba протянуть формулу по столбцу С до последней ячейки по столбцу D»
textual
Sub val11() lLastRowD = Cells(Rows.Count, "D").End(xlUp).Row If lLastRowD > 1 Then Range("C1:C1").AutoFill Destination:=Range("C1:C" & lLastRowD), Type:=xlFillDefault End Sub
Полезно ли:
11 голосов , оценка 4.273 из 5
|
Как растянуть формулу до последней заполненной строки? |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
Sub CommandButton1_Click()
Dim lCol As Long
Dim LR As Long
'до последнеи строки и столбца
LR = Cells(Rows.Count, "A").End(xlUp).Row
lCol = Cells(10, Columns.Count).End(xlToLeft).Column
'вставить формулу в первии пустои столбец
Columns(lCol).Select
Range(Cells(10, lCol + 1), Cells(10, lCol + 1)).Formula = "=IFERROR(INDEX(Sas!$A$10:$AC200,MATCH(H10,Sas!N$10:N$200,0),5),0)"
'протянуть до конца
Range("J10").Select
Selection.AutoFill Destination:=Range("J10:J" & LR), Type:=xlFillDefault
'протянуть следуищи
Range("K10").Select
Selection.AutoFill Destination:=Range("K10:K" & LR), Type:=xlFillDefault
'протянуть следуищи
Range("L10").Select
Selection.AutoFill Destination:=Range("L10:L" & LR), Type:=xlFillDefault
Range("M10").Select
Selection.AutoFill Destination:=Range("M10:M" & LR), Type:=xlFillDefault
'столбцов будет много,потому надо штобы формула протянулась автоматищески
'то есть "J10","K10"...заменить в переменную,никак не получяетца
End Sub