Макрос excel протянуть формулу

 

Добрый вечер!  
Есть макрос, в котором прописаны формулы. Сколько будет заполненных строк в файле, я не знаю. В этом макросе я протянула формулы с учетом 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

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Добрый день!

Создала макрос через «Запись макроса»
Мне нужно протянуть несколько формул по столбцу до последней строки с данными.
Макрос записал протягивание только до конкретной ячейки. Так как в отчете каждый раз меняется количество строк, я не могу указать в макросе конкретную ячейку до которой будут заполняться формулы.
Как это исправить?

Отрывок из макроса:

Visual Basic
1
2
3
4
Range("N6:O6").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Selection.AutoFill Destination:=Range("N6:O35")

Есть также решение с заполнением всей колонки

Visual Basic
1
2
3
4
    Range("N6:O6").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Selection.AutoFill Destination:=Range([N6], Cells([N6].End(xlDown).Row, Columns("O").Column))

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

Мне нужно протянуть несколько формул по столбцу до последней строки с данными.

Это возможно сделать?

В примере формулы находятся на втором листе. Макрос в примере есть

Вложения

Тип файла: rar Prosroch1пример.rar (24.7 Кб, 219 просмотров)



0



Gibboustooth

735 / 203 / 11

Регистрация: 23.06.2011

Сообщений: 440

01.07.2011, 14:40

2

Visual Basic
1
Cells.Find("*", , , , xlByRows, xlPrevious).Row



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

Цитата
Сообщение от SAA
Посмотреть сообщение

К сожалению не поняла как вставить в код

Visual Basic
1
2
3
4
5
6
7
8
9
10
Sub test()
   Dim Endrow As Long
   
   Const StartRow = 6
   Const StartCol = 14
   Const EndCol = 15
   
   Endrow = Cells.Find("*", , , , xlByRows, xlPrevious).Row
   Range(Cells(StartRow, StartCol), Cells(Endrow, EndCol)).FillDown
End Sub



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

У меня такая ситуация:

Вот взял ваш код, вставил себе в макрос

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
Dim Endrow As Long
  
 
   Const StartRow = 2
   Const StartCol = 5
   Const EndCol = 9
'Const StartRow = 2
  ' Const StartCol = 13
   'Const EndCol = 13
   
 Endrow = Cells.Find("*", , , , xlByRows, xlPrevious).Row
   Range(Cells(StartRow, StartCol), Cells(Endrow, EndCol)).FillDown

Но у меня после 9 столбца идут данные, и в 13 столбце ещё колонка с формулой.
Как можно делать так, чтобы он потом протягивал ещё и 13 колонку вниз?
Когда указываю

Visual Basic
1
2
3
   Const StartRow = 2
   Const StartCol = 5
   Const EndCol = 9

то он и колонки с 9 по 12 протягивает вниз(то есть проставляются данные, которые находятся во 2 строке)



0



Поц

-1 / 0 / 0

Регистрация: 03.06.2018

Сообщений: 8

16.10.2018, 19:40

7

Visual Basic
1
2
3
4
5
Dim a, s **
a = Range("e" & Cells(Rows.Count, 5).End(xlUp).Row).Address **
s = a & ":" & Range("e" & Cells(Rows.Count, 1).End(xlUp).Row).Address **
On Error Resume Next **
* *Range(a).AutoFill Destination:=Range(s), Type:=xlFillDefault **



0



ᴁ®

Эксперт MS Access

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.
Ошибка «макросы отключены» на строке Application.Run «Copy» вызвана тем, что в проекте два модуля с одинаковым кодом, в обоих есть процедура «Copy», и приложение не знает, какую из них выполнять.
Кстати можно просто Copy , тогда будет вызвана процедура из этого же модуля.



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

_Boroda_ Дата: Пятница, 07.06.2019, 14:20 | Сообщение № 2

Ответить

Фортуна777 Дата: Пятница, 07.06.2019, 14:34 | Сообщение № 3
_Boroda_ Дата: Пятница, 07.06.2019, 14:44 | Сообщение № 4

И зачем Вы мне постоянно в личку пишете? Я Вам уже ответил — обращайтесь на форум. В личку — платно

Исправляйте свой первый пост. Решение уже минут 15 ждет Вас
И прочитайте Правила форума

И зачем Вы мне постоянно в личку пишете? Я Вам уже ответил — обращайтесь на форум. В личку — платно

Исправляйте свой первый пост. Решение уже минут 15 ждет Вас
И прочитайте Правила форума _Boroda_

Скажи мне, кудесник, любимец ба’гов.
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

Ответить

И зачем Вы мне постоянно в личку пишете? Я Вам уже ответил — обращайтесь на форум. В личку — платно

Исправляйте свой первый пост. Решение уже минут 15 ждет Вас
И прочитайте Правила форума Автор — _Boroda_
Дата добавления — 07.06.2019 в 14:44

Источник

ПОМОГИТЕ С МАКРОСОМ

Range(«AD1»).Select
ActiveCell.FormulaR1C1 = «=MID(C9,11,10)»
Selection.AutoFill Destination:=Range(«AD1:AD690»), Type:=xlFillDefault
Range(«AD1:AD690»).Select
Selection.AutoFilter

Создала макрос через «Запись макроса»
Мне нужно протянуть формулу по столбцу до последней строки с данными.
Макрос записал протягивание только до конкретной ячейки. Как это исправить?

Записываемый макрос не может делать многих вещей, например содержать циклы, проверки условий и т. п.
Но самое ценное — он содержит примеры команд с их параметрами, которые нельзя зачастую найти в справочнике.
Беря эти команды и параметры мы можем заглянуть в справочник и пополнить себя кое-какими знаниями о команде,
Можем использовать команду в тестовом макросе, поиграть её параметрами изучить её поглубже.

Свои функции-макросы мы создаём для многократного употребления, либо для однократного употребления — но в больших массивах.
В больших массивах мы можем для обработки выбрать обычно выбрать только одну ячейку или один диапазон в виде строки или столбца. В крайнем случае это диапазон математической матрицы.
Записать массивом мы можем только копию массива.
Записать вычисленный результат мы можем только в одну ячейку, Поэтому запрограммированный макрос обработки, как правило работает с ячейкой, способен определить её адрес, перейти в какую-то соседнюю ячейку, как требуется по алгоритму. Всякие ручные действия вроде протяжки курсором тоже можно запрограммировать, в виде расширения выборки, если знать специальные команды, или применяя цикл.
Но в конечном итоге макрос должен или просто знать куда дотянуть курсор, или уметь автоматически вычислить это место.

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

Для обработки массивов определённой или неопределенной формы очень полезен цикл типа
FOR EACH
NEXT
Изучите его, он может пригодиться.

Еще раз подчеркну, что ручной макрос всегда требует корректировки.
Во-первых, он должен быть вами откомментирован, чтобы вы сами понимали в каких условиях он может работать, с какой ячейки должен стартовать, какие габариты таблиц обрабатывать и прочее.
Если он не будет стартовать с правильной ячейки, данные будут наверняка испорчены.

Если вы в таблицу вставите какую-то строку-заголовок или описательны текст, данные поползут и макрос станет непригоден.

Вы должны понимать что такое относительная адресация, в которой обычно Excel работает, позволяя копировать формулы, добавлять строки данных без особых хлопот,
и что такое абсолютная адресация в которой хлопоты создаются.
Макрос и данные являются сильно связанными, и макрос может стать непригодным при каких-то изменениях Листа

Источник

Vba excel протянуть формулу по столбцу

200?’200px’:»+(this.scrollHeight+5)+’px’);»> Private Sub CommandButton1_Click()
Selection.NumberFormat = «#,##0.00»
ActiveCell.FormulaR1C1 = «=RC[-1]*(1-5%)»
Selection.AutoFill Destination:=ActiveCell.Range(«A1:A6»)
ActiveCell.Offset(0, 1).Range(«A1»).Select
Selection.NumberFormat = «#,##0.00»
ActiveCell.FormulaR1C1 = «=RC[-1]*(1-45%)»
Selection.AutoFill Destination:=ActiveCell.Range(«A1:A6»)
ActiveCell.Offset(0, 1).Range(«A1»).Select
Selection.NumberFormat = «#,##0.00»
ActiveCell.FormulaR1C1 = «=RC[-3]/(1-50%)»
ActiveCell.Offset(0, 0).Range(«A1»).Select
Selection.AutoFill Destination:=ActiveCell.Range(«A1:A6»)
Selection.NumberFormat = «#,##0.00»

Понимаю что жутко избыточен, делал на основе нескольких макросов записанных в режиме камеры.

Большое спасибо за помощь!
В прикрепленном файле пример с цифрами.

200?’200px’:»+(this.scrollHeight+5)+’px’);»> Private Sub CommandButton1_Click()
Selection.NumberFormat = «#,##0.00»
ActiveCell.FormulaR1C1 = «=RC[-1]*(1-5%)»
Selection.AutoFill Destination:=ActiveCell.Range(«A1:A6»)
ActiveCell.Offset(0, 1).Range(«A1»).Select
Selection.NumberFormat = «#,##0.00»
ActiveCell.FormulaR1C1 = «=RC[-1]*(1-45%)»
Selection.AutoFill Destination:=ActiveCell.Range(«A1:A6»)
ActiveCell.Offset(0, 1).Range(«A1»).Select
Selection.NumberFormat = «#,##0.00»
ActiveCell.FormulaR1C1 = «=RC[-3]/(1-50%)»
ActiveCell.Offset(0, 0).Range(«A1»).Select
Selection.AutoFill Destination:=ActiveCell.Range(«A1:A6»)
Selection.NumberFormat = «#,##0.00»

Понимаю что жутко избыточен, делал на основе нескольких макросов записанных в режиме камеры.

Большое спасибо за помощь!
В прикрепленном файле пример с цифрами. farafonov_sv

200?’200px’:»+(this.scrollHeight+5)+’px’);»> Private Sub CommandButton1_Click()
Selection.NumberFormat = «#,##0.00»
ActiveCell.FormulaR1C1 = «=RC[-1]*(1-5%)»
Selection.AutoFill Destination:=ActiveCell.Range(«A1:A6»)
ActiveCell.Offset(0, 1).Range(«A1»).Select
Selection.NumberFormat = «#,##0.00»
ActiveCell.FormulaR1C1 = «=RC[-1]*(1-45%)»
Selection.AutoFill Destination:=ActiveCell.Range(«A1:A6»)
ActiveCell.Offset(0, 1).Range(«A1»).Select
Selection.NumberFormat = «#,##0.00»
ActiveCell.FormulaR1C1 = «=RC[-3]/(1-50%)»
ActiveCell.Offset(0, 0).Range(«A1»).Select
Selection.AutoFill Destination:=ActiveCell.Range(«A1:A6»)
Selection.NumberFormat = «#,##0.00»

Понимаю что жутко избыточен, делал на основе нескольких макросов записанных в режиме камеры.

Большое спасибо за помощь!
В прикрепленном файле пример с цифрами. Автор — farafonov_sv
Дата добавления — 25.11.2011 в 11:26

Jhonson Дата: Пятница, 25.11.2011, 11:49 | Сообщение № 2

Не совсем понятно что нужно, попробуйте такой код:

(дописал несколько строчек сверху Вашего кода, и поменял ActiveCell.Range(«A1:A6») на ActiveCell.Range(a),
код не проверял, но должно работать)

200?’200px’:»+(this.scrollHeight+5)+’px’);»> Private Sub CommandButton1_Click()

i = 1
Do While Cells(i, 1) <> «»
i = i + 1
Loop
a = «a1:a» & i — 1

Selection.NumberFormat = «#,##0.00»
ActiveCell.FormulaR1C1 = «=RC[-1]*(1-5%)»
Selection.AutoFill Destination:=ActiveCell.Range(a)
ActiveCell.Offset(0, 1).Range(«A1»).Select
Selection.NumberFormat = «#,##0.00»
ActiveCell.FormulaR1C1 = «=RC[-1]*(1-45%)»
Selection.AutoFill Destination:=ActiveCell.Range(a)
ActiveCell.Offset(0, 1).Range(«A1»).Select
Selection.NumberFormat = «#,##0.00»
ActiveCell.FormulaR1C1 = «=RC[-3]/(1-50%)»
ActiveCell.Offset(0, 0).Range(«A1»).Select
Selection.AutoFill Destination:=ActiveCell.Range(a)
Selection.NumberFormat = «#,##0.00»
End Sub

Не совсем понятно что нужно, попробуйте такой код:

(дописал несколько строчек сверху Вашего кода, и поменял ActiveCell.Range(«A1:A6») на ActiveCell.Range(a),
код не проверял, но должно работать)

200?’200px’:»+(this.scrollHeight+5)+’px’);»> Private Sub CommandButton1_Click()

i = 1
Do While Cells(i, 1) <> «»
i = i + 1
Loop
a = «a1:a» & i — 1

Selection.NumberFormat = «#,##0.00»
ActiveCell.FormulaR1C1 = «=RC[-1]*(1-5%)»
Selection.AutoFill Destination:=ActiveCell.Range(a)
ActiveCell.Offset(0, 1).Range(«A1»).Select
Selection.NumberFormat = «#,##0.00»
ActiveCell.FormulaR1C1 = «=RC[-1]*(1-45%)»
Selection.AutoFill Destination:=ActiveCell.Range(a)
ActiveCell.Offset(0, 1).Range(«A1»).Select
Selection.NumberFormat = «#,##0.00»
ActiveCell.FormulaR1C1 = «=RC[-3]/(1-50%)»
ActiveCell.Offset(0, 0).Range(«A1»).Select
Selection.AutoFill Destination:=ActiveCell.Range(a)
Selection.NumberFormat = «#,##0.00»
End Sub

«Ничто не приносит людям столько неприятностей, как разум.»

Сообщение Не совсем понятно что нужно, попробуйте такой код:

(дописал несколько строчек сверху Вашего кода, и поменял ActiveCell.Range(«A1:A6») на ActiveCell.Range(a),
код не проверял, но должно работать)

200?’200px’:»+(this.scrollHeight+5)+’px’);»> Private Sub CommandButton1_Click()

i = 1
Do While Cells(i, 1) <> «»
i = i + 1
Loop
a = «a1:a» & i — 1

Selection.NumberFormat = «#,##0.00»
ActiveCell.FormulaR1C1 = «=RC[-1]*(1-5%)»
Selection.AutoFill Destination:=ActiveCell.Range(a)
ActiveCell.Offset(0, 1).Range(«A1»).Select
Selection.NumberFormat = «#,##0.00»
ActiveCell.FormulaR1C1 = «=RC[-1]*(1-45%)»
Selection.AutoFill Destination:=ActiveCell.Range(a)
ActiveCell.Offset(0, 1).Range(«A1»).Select
Selection.NumberFormat = «#,##0.00»
ActiveCell.FormulaR1C1 = «=RC[-3]/(1-50%)»
ActiveCell.Offset(0, 0).Range(«A1»).Select
Selection.AutoFill Destination:=ActiveCell.Range(a)
Selection.NumberFormat = «#,##0.00»
End Sub

farafonov_sv Дата: Пятница, 25.11.2011, 12:15 | Сообщение № 3

Спасибо!
Поставил ваш код в строке:
Selection.AutoFill Destination:=ActiveCell.Range(«a») выдает ошибку

Мне надо что бы формулы рассчитывались по всему списку, не зависимо от того сколько строк в С1 (так как таблицы каждый раз разные может быть 2 строки а может за пару сотен)

Спасибо!
Поставил ваш код в строке:
Selection.AutoFill Destination:=ActiveCell.Range(«a») выдает ошибку

Мне надо что бы формулы рассчитывались по всему списку, не зависимо от того сколько строк в С1 (так как таблицы каждый раз разные может быть 2 строки а может за пару сотен) farafonov_sv

Сообщение Спасибо!
Поставил ваш код в строке:
Selection.AutoFill Destination:=ActiveCell.Range(«a») выдает ошибку

Мне надо что бы формулы рассчитывались по всему списку, не зависимо от того сколько строк в С1 (так как таблицы каждый раз разные может быть 2 строки а может за пару сотен) Автор — farafonov_sv
Дата добавления — 25.11.2011 в 12:15

Jhonson Дата: Пятница, 25.11.2011, 12:22 | Сообщение № 4
«Ничто не приносит людям столько неприятностей, как разум.»

Ответить

_Boroda_ Дата: Пятница, 25.11.2011, 12:24 | Сообщение № 5

Ответить

farafonov_sv Дата: Пятница, 25.11.2011, 12:42 | Сообщение № 6
farafonov_sv Дата: Понедельник, 28.11.2011, 12:20 | Сообщение № 7

Подскажите пож. что означает:
Метод Select из класса Range завершен не верно.
Добавил в ваш код эту строку:

Sheets(«Стоимости»).Select
Range(«E13»).Select
Selection.FormulaR1C1 = «=SUM(Расчеты!C[1])»

Подскажите пож. что означает:
Метод Select из класса Range завершен не верно.
Добавил в ваш код эту строку:

Sheets(«Стоимости»).Select
Range(«E13»).Select
Selection.FormulaR1C1 = «=SUM(Расчеты!C[1])» farafonov_sv

Сообщение Подскажите пож. что означает:
Метод Select из класса Range завершен не верно.
Добавил в ваш код эту строку:

Sheets(«Стоимости»).Select
Range(«E13»).Select
Selection.FormulaR1C1 = «=SUM(Расчеты!C[1])» Автор — farafonov_sv
Дата добавления — 28.11.2011 в 12:20

farafonov_sv Дата: Понедельник, 28.11.2011, 14:12 | Сообщение № 8
farafonov_sv Дата: Понедельник, 28.11.2011, 15:41 | Сообщение № 9
_Boroda_ Дата: Понедельник, 28.11.2011, 18:06 | Сообщение № 10

Не совсем понял, но, может, так?

Для нового файла кнопку нужно скопировать из этого и вставить в новый. Или создать свою новую и назвать ее CommandButton1. Или назвать новую как захочется, но в макросе написать Private Sub CommandButton1 _Click() вместо синего свое название

Перед макросами, на самом верху, есть строка Option Explicit — убейте ее
или второй строкой макроса допишите Dim r_
Private Sub CommandButton1_Click()
Dim r_
With Лист1

I. r_ = .Range(«c» & Rows.Count).End(xlUp).Row
1) Rows.Count — кол-во строк на листе (различно для 2003 и 2007/2010)
2) Range(«c» & Rows.Count) — виртуально «встаем» в ячейку C1048576
3) Range(«c» & Rows.Count).End(xlUp) — якобы жмем Ctrl+стрелка вверх
4) r_ = .Range(«c» & Rows.Count).End(xlUp).Row — присваеваем переменной r_ номер строки, в которой выделена ячейка 3).

II. Лист3.Range(«e» & r_ + 1 & «:G» & r_ + 1).FormulaR1C1 = «=SUM(R[-» & r_ — 1 & «]C:R[-1]C)» — в столбцы E-G строку r_ (см. п. I.) пишем формулу =СУММ(то, что выше)

Не совсем понял, но, может, так?

Для нового файла кнопку нужно скопировать из этого и вставить в новый. Или создать свою новую и назвать ее CommandButton1. Или назвать новую как захочется, но в макросе написать Private Sub CommandButton1 _Click() вместо синего свое название

Перед макросами, на самом верху, есть строка Option Explicit — убейте ее
или второй строкой макроса допишите Dim r_
Private Sub CommandButton1_Click()
Dim r_
With Лист1

I. r_ = .Range(«c» & Rows.Count).End(xlUp).Row
1) Rows.Count — кол-во строк на листе (различно для 2003 и 2007/2010)
2) Range(«c» & Rows.Count) — виртуально «встаем» в ячейку C1048576
3) Range(«c» & Rows.Count).End(xlUp) — якобы жмем Ctrl+стрелка вверх
4) r_ = .Range(«c» & Rows.Count).End(xlUp).Row — присваеваем переменной r_ номер строки, в которой выделена ячейка 3).

II. Лист3.Range(«e» & r_ + 1 & «:G» & r_ + 1).FormulaR1C1 = «=SUM(R[-» & r_ — 1 & «]C:R[-1]C)» — в столбцы E-G строку r_ (см. п. I.) пишем формулу =СУММ(то, что выше) _Boroda_

Скажи мне, кудесник, любимец ба’гов.
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

Ответить

Сообщение Не совсем понял, но, может, так?

Для нового файла кнопку нужно скопировать из этого и вставить в новый. Или создать свою новую и назвать ее CommandButton1. Или назвать новую как захочется, но в макросе написать Private Sub CommandButton1 _Click() вместо синего свое название

Перед макросами, на самом верху, есть строка Option Explicit — убейте ее
или второй строкой макроса допишите Dim r_
Private Sub CommandButton1_Click()
Dim r_
With Лист1

I. r_ = .Range(«c» & Rows.Count).End(xlUp).Row
1) Rows.Count — кол-во строк на листе (различно для 2003 и 2007/2010)
2) Range(«c» & Rows.Count) — виртуально «встаем» в ячейку C1048576
3) Range(«c» & Rows.Count).End(xlUp) — якобы жмем Ctrl+стрелка вверх
4) r_ = .Range(«c» & Rows.Count).End(xlUp).Row — присваеваем переменной r_ номер строки, в которой выделена ячейка 3).

II. Лист3.Range(«e» & r_ + 1 & «:G» & r_ + 1).FormulaR1C1 = «=SUM(R[-» & r_ — 1 & «]C:R[-1]C)» — в столбцы E-G строку r_ (см. п. I.) пишем формулу =СУММ(то, что выше) Автор — _Boroda_
Дата добавления — 28.11.2011 в 18:06

farafonov_sv Дата: Вторник, 29.11.2011, 13:52 | Сообщение № 11

Да то что надо.
Спасибо Вам огромное!
Подскажите пож. а в приложении №1 как то можно что бы он в конце каждого столбца ставил Итого?

подскажите пож. как этот код перенести в другую таблицу?
Сделал все зеркально в чистой книге, пишет ошибку

Пишет: Compile error:
Variable not defined

Private Sub CommandButton3_Click() выделяет желтым
r_ = — выделяет синим

Да то что надо.
Спасибо Вам огромное!
Подскажите пож. а в приложении №1 как то можно что бы он в конце каждого столбца ставил Итого?

подскажите пож. как этот код перенести в другую таблицу?
Сделал все зеркально в чистой книге, пишет ошибку

Пишет: Compile error:
Variable not defined

Private Sub CommandButton3_Click() выделяет желтым
r_ = — выделяет синим farafonov_sv

Сообщение Да то что надо.
Спасибо Вам огромное!
Подскажите пож. а в приложении №1 как то можно что бы он в конце каждого столбца ставил Итого?

подскажите пож. как этот код перенести в другую таблицу?
Сделал все зеркально в чистой книге, пишет ошибку

Пишет: Compile error:
Variable not defined

Private Sub CommandButton3_Click() выделяет желтым
r_ = — выделяет синим Автор — farafonov_sv
Дата добавления — 29.11.2011 в 13:52

Источник

Adblock
detector

Как растянуть формулу до последней заполненной строки?

antonio2040

Дата: Среда, 19.02.2014, 20:30 |
Сообщение № 1

Группа: Пользователи

Ранг: Новичок

Сообщений: 14


Репутация:

0

±

Замечаний:
20% ±


Excel 2010

Суть такая: есть 2 столбца с данными, в третьем формула (СЦЕПИТЬ). Нужно протянуть ее до конца таблицы (кол-во строк может меняться). Делаю так:[vba]

Код

Sub selection()
             Dim lLastRow As Long
             lLastRow = Cells(Rows.Count, 1).End(xlUp).Row
             Selection.AutoFill Destination:=Range(«B2:B[lLastRow]»), Type:=xlFillDefault
End Sub

[/vba]но что-то не получается. В чем я ошибся?

Сообщение отредактировал antonio2040Среда, 19.02.2014, 20:51

 

Ответить

antonio2040

Дата: Среда, 19.02.2014, 20:51 |
Сообщение № 2

Группа: Пользователи

Ранг: Новичок

Сообщений: 14


Репутация:

0

±

Замечаний:
20% ±


Excel 2010

Проблема решилась одной строчкой…[vba]

Код

selection.AutoFill Destination:=Range(«B2:B» & Cells(Rows.Count, 1).End(xlUp).Row)

[/vba]

 

Ответить

antonio2040

Дата: Четверг, 20.02.2014, 13:18 |
Сообщение № 3

Группа: Пользователи

Ранг: Новичок

Сообщений: 14


Репутация:

0

±

Замечаний:
20% ±


Excel 2010

Появился еще один вопрос касательно этой темы..
Если номер столбца (в данном случае 1), по которому идет вычисление находится в другом листе, как оформить ссылку на него??
[vba]

Код

selection.AutoFill Destination:=Range(«B2:B» & Cells(Rows.Count, 1).End(xlUp).Row)

[/vba]

Сообщение отредактировал antonio2040Четверг, 20.02.2014, 13:20

 

Ответить

KuklP

Дата: Четверг, 20.02.2014, 13:33 |
Сообщение № 4

Группа: Проверенные

Ранг: Старожил

Сообщений: 2369


Репутация:

486

±

Замечаний:
0% ±


2003-2010

Указать лист и перед Range, и перед Cells и перед Rows. И вместо selection указать конкретный адрес.


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728

Сообщение отредактировал KuklPЧетверг, 20.02.2014, 13:35

 

Ответить

antonio2040

Дата: Четверг, 20.02.2014, 13:55 |
Сообщение № 5

Группа: Пользователи

Ранг: Новичок

Сообщений: 14


Репутация:

0

±

Замечаний:
20% ±


Excel 2010

KuklP, спасибо.
Придумал еще один способ:[vba]

Код

Dim rcnt As Integer
Worksheets(1).Select
rcnt=Cells(Rows.Count, 1).End(xlUp).Row
Worksheets(2).Select
selection.AutoFill Destination:=Range(«B2:B» & rcnt)

[/vba]По мне, так это проще. К тому же, можно потом еще не раз этим значением пользоваться.

Сообщение отредактировал antonio2040Четверг, 20.02.2014, 13:56

 

Ответить

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

Понравилась статья? Поделить с друзьями:
  • Макрос excel проверка ячейки
  • Макрос excel примеры скачать
  • Макрос excel одинаковые строки
  • Макрос excel одинаковые значения в столбцах excel
  • Макрос excel объединяющий все листы книги в один