Excel это не сложно
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
25.04.2024, 00:21:51

Войти
Добавляйтесь в нашу группу ВКонтакте - будьте в курсе всех новых событий сайта, узнавайте первым обо всех акциях и новых статьях!
33 242 Сообщений в 5 457 Тем от 6 761 Пользователей
Последний пользователь: Halfdoor
*
Перейти на сайт Хитрости Надстройка MulTEx Обучающие тренинги Наша группа ВКонтакте
Правила форума Начало Помощь Поиск Календарь Войти Регистрация Выйти
+  Excel это не сложно
|-+  Основные форумы
| |-+  Вопросы по Excel и VBA
| | |-+  Макрос выполняющий формулы
Страниц: [1] 2 3 ... 5   Вниз
Печать
Автор Тема: Макрос выполняющий формулы  (Прочитано 92224 раз)
0 Пользователей и 1 Гость смотрят эту тему.
baters
Старожил
****

Репутация: +9/-0
Офлайн Офлайн

Сообщений: 382


Просмотр профиля E-mail
« : 20.05.2011, 22:24:35 »

Range("E3:E" & lLastRow).FormulaR1C1 = "=SUMIF(Лист1!C4,RC1,Лист1!C11)"
    Range("F3:F" & lLastRow).FormulaR1C1 = "=SUMIF(Лист1!C4,RC1,Лист1!C12)"
    Range("G3:G" & lLastRow).FormulaR1C1 = "=SUMIF(Лист1!C4,RC1,Лист1!C13)"
    Range("H3:H" & lLastRow).FormulaR1C1 = "=SUMIF(Лист1!C4,RC1,Лист1!C14)"
    Range("I3:I" & lLastRow).FormulaR1C1 = "=RC7-RC5"
    Range("J3:J" & lLastRow).FormulaR1C1 = "=RC8-RC6"
    Range("M3:M" & lLastRow).FormulaR1C1 = "=SUMIF(Лист2!C4,RC1,Лист2!C17)"
    Range("N3:N" & lLastRow).FormulaR1C1 = "=SUMIF(Лист2!C4,RC1,Лист2!C18)"
    Range("P3:P" & lLastRow).FormulaR1C1 = "=RC9+RC13"
    Range("Q3:Q" & lLastRow).FormulaR1C1 = "=RC10+RC14"
    Range("E3:Q" & lLastRow).Value = Range("E3:Q" & lLastRow).Value
    Range("A3:Q" & lLastRow).Sort Range("B3"), xlAscending
    ActiveSheet.Range("$A$1:$Q" & lLastRow).AutoFilter Field:=16, Criteria1:="<>0", Operator:=xlAnd
    Application.ScreenUpdating = 1
End Sub


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

помогите завершить макрос Грустный
Записан
Serge 007
Постоялец
***

Репутация: +12/-0
Офлайн Офлайн

Сообщений: 110


Просмотр профиля E-mail
« Ответ #1 : 20.05.2011, 23:16:54 »

Смысл макроса - просто выполнять прописанные формулы.
А так не пойдёт?
Код:
Sub baters()
    Calculate
End Sub
Записан
Дмитрий Щербаков(The_Prist)
Администратор
Ветеран
*****

Репутация: +485/-0
Офлайн Офлайн

Сообщений: 5 831



Просмотр профиля WWW
« Ответ #2 : 21.05.2011, 08:17:17 »

Плохо помогать, не зная откуда шапку копировать :-)
Вот небольшой примерчик - данная строка впишет в ячейки А1:С1 названия столбцов(А, В, С)
Код:
Range("A1:C1").Value = Array("A", "B", "C")
Кол-во столбцов и кол-во записей в Array должно быть одинаковое.
Записан

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Пункты приёма Спасибов:    -41001332272872  -R298726502453
baters
Старожил
****

Репутация: +9/-0
Офлайн Офлайн

Сообщений: 382


Просмотр профиля E-mail
« Ответ #3 : 21.05.2011, 13:54:25 »

Смысл макроса - просто выполнять прописанные формулы.
А так не пойдёт?
Код:
Sub baters()
    Calculate
End Sub

1004 ошибку пишетпосле первой формулы.
Записан
Дмитрий Щербаков(The_Prist)
Администратор
Ветеран
*****

Репутация: +485/-0
Офлайн Офлайн

Сообщений: 5 831



Просмотр профиля WWW
« Ответ #4 : 21.05.2011, 13:58:11 »

Application.Calculate
Записан

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Пункты приёма Спасибов:    -41001332272872  -R298726502453
baters
Старожил
****

Репутация: +9/-0
Офлайн Офлайн

Сообщений: 382


Просмотр профиля E-mail
« Ответ #5 : 21.05.2011, 13:58:48 »

Плохо помогать, не зная откуда шапку копировать :-)
Вот небольшой примерчик - данная строка впишет в ячейки А1:С1 названия столбцов(А, В, С)
Код:
Range("A1:C1").Value = Array("A", "B", "C")
Кол-во столбцов и кол-во записей в Array должно быть одинаковое.

не соображу какая связь .... между этой формулой и теми что в макросе .... "Array" у меня в макросе нету Грустный
Записан
baters
Старожил
****

Репутация: +9/-0
Офлайн Офлайн

Сообщений: 382


Просмотр профиля E-mail
« Ответ #6 : 21.05.2011, 14:06:52 »

Application.Calculate
все равно после первой строки с формулой 1004 ошибка (глобал файлед)
Записан
Дмитрий Щербаков(The_Prist)
Администратор
Ветеран
*****

Репутация: +485/-0
Офлайн Офлайн

Сообщений: 5 831



Просмотр профиля WWW
« Ответ #7 : 21.05.2011, 14:15:27 »

baters, Вы ведь вообще ничего не понимаете в макросах. Так научитесь тогда яснее выражать мысли. Вы написали: "Не могу написать к этому макросу шапку". Тогда уж опишите, что это за шапка такая, которую написать не можете. В моем понятии шапка - это заголовки таблицы.
Записан

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Пункты приёма Спасибов:    -41001332272872  -R298726502453
baters
Старожил
****

Репутация: +9/-0
Офлайн Офлайн

Сообщений: 382


Просмотр профиля E-mail
« Ответ #8 : 21.05.2011, 14:24:59 »

ну не то что прямо совсем в макросах не понимаю.....начало и конец макроса я могу определить....некоторые операции в макросе могу понять (если на против них стоит комментарий на русском).
Шапка в моем понимании это верхушка макроса вставив которую макрос сработает.
Записан
Дмитрий Щербаков(The_Prist)
Администратор
Ветеран
*****

Репутация: +485/-0
Офлайн Офлайн

Сообщений: 5 831



Просмотр профиля WWW
« Ответ #9 : 21.05.2011, 14:30:01 »

И это Вы считаете, что понимаете в макросах? Первое, что необходимо знать, это как оформить процедуру. Советую скачать с сайта хоть одну книжку и начать читать. Иначе дольше будете вот такие вот вопросы разбирать на форумах.

Любая процедура начинается с ключевого слова - Sub. Далее идет имя самой процедуры - буквы, цифры и нижнее подчеркивание. Никаких знаков препинания и пробелов. Не должна начинаться с цифры. Завершается все это скобками.
Что-то типа - Sub Baters_Macro1()

Вы бы посмотрели на уже имеющиеся макросы и провели аналогию.
Записан

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Пункты приёма Спасибов:    -41001332272872  -R298726502453
baters
Старожил
****

Репутация: +9/-0
Офлайн Офлайн

Сообщений: 382


Просмотр профиля E-mail
« Ответ #10 : 21.05.2011, 14:35:45 »

Я проводил аналогию и шапку всавлял, потом нажимал F8 и было видно, что к шапке у макроса претензий нет, и к первой строке с формулой не, а вот ко второй есть. Из чего я сделал вывод, что необходима хитрая строка перед формулами, что бы макрос отрабаывал все формулы подряд.
Записан
Дмитрий Щербаков(The_Prist)
Администратор
Ветеран
*****

Репутация: +485/-0
Офлайн Офлайн

Сообщений: 5 831



Просмотр профиля WWW
« Ответ #11 : 21.05.2011, 14:53:13 »

Ну вот смотрите. Вы видите, что за ошибки у Вас лезут и на какой строке. нам приводите не весь свой код. И хотите, чтобы Вам помогли? Это возможно? Мы не видим, какие ошибки у Вас появляются и на какой конкретно строке.
Кстати, у Вас в этой строке: Range("E3:E" & lLastRow) Е не на русском, случаем, написана? Надо английскими записывать...
Записан

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Пункты приёма Спасибов:    -41001332272872  -R298726502453
baters
Старожил
****

Репутация: +9/-0
Офлайн Офлайн

Сообщений: 382


Просмотр профиля E-mail
« Ответ #12 : 21.05.2011, 15:11:40 »

    Sub baters()   
    Application.Calculate 
    Range("E3:E" & lLastRow).FormulaR1C1 = "=SUMIF(Лист1!C4,RC1,Лист1!C11)"
    Range("F3:F" & lLastRow).FormulaR1C1 = "=SUMIF(Лист1!C4,RC1,Лист1!C12)"
    Range("G3:G" & lLastRow).FormulaR1C1 = "=SUMIF(Лист1!C4,RC1,Лист1!C13)"
    Range("H3:H" & lLastRow).FormulaR1C1 = "=SUMIF(Лист1!C4,RC1,Лист1!C14)"
    Range("I3:I" & lLastRow).FormulaR1C1 = "=RC7-RC5"
    Range("J3:J" & lLastRow).FormulaR1C1 = "=RC8-RC6"
    Range("M3:M" & lLastRow).FormulaR1C1 = "=SUMIF(Лист2!C4,RC1,Лист2!C17)"
    Range("N3:N" & lLastRow).FormulaR1C1 = "=SUMIF(Лист2!C4,RC1,Лист2!C18)"
    Range("P3:P" & lLastRow).FormulaR1C1 = "=RC9+RC13"
    Range("Q3:Q" & lLastRow).FormulaR1C1 = "=RC10+RC14"
    Range("E3:Q" & lLastRow).Value = Range("E3:Q" & lLastRow).Value
    Range("A3:Q" & lLastRow).Sort Range("B3"), xlAscending
    ActiveSheet.Range("$A$1:$Q" & lLastRow).AutoFilter Field:=16, Criteria1:="<>0", Operator:=xlAnd
    Application.ScreenUpdating = 1
End Sub
Записан
baters
Старожил
****

Репутация: +9/-0
Офлайн Офлайн

Сообщений: 382


Просмотр профиля E-mail
« Ответ #13 : 21.05.2011, 15:13:12 »

Даже строки с формулами местами поменял....все равно только первую строку с формулой читает а потом 1004 ошибка
Записан
Дмитрий Щербаков(The_Prist)
Администратор
Ветеран
*****

Репутация: +485/-0
Офлайн Офлайн

Сообщений: 5 831



Просмотр профиля WWW
« Ответ #14 : 21.05.2011, 16:58:52 »

Ну вот теперь все понятно. Посмотрите, чему равно значение переменной - lLastRow? Правильно - НУЛЮ. Потому что Вы не задали ей значение. Посмотрите повнимательнее код, откуда все это взяли и найдете, где и как задается значение переменной.
Записан

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Пункты приёма Спасибов:    -41001332272872  -R298726502453
Страниц: [1] 2 3 ... 5   Вверх
Печать
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2011, Simple Machines Valid XHTML 1.0! Valid CSS!
Яндекс.Метрика Рейтинг@Mail.ru