Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.05.2009, 11:17   #1
Lyubov1990
Пользователь
 
Аватар для Lyubov1990
 
Регистрация: 06.04.2009
Сообщений: 34
По умолчанию Запись формул в ячейки с помощью VBA

Здравствуйте, помогите пожалуйста, как можно записать вот эту формулу =СУММЕСЛИ(Нагрузка!CB:CB;A120;Нагру зка!AG:AG) в ячейку на листе с помощью VBA? Нагрузка - это название одного из листов рабочей книги!
Lyubov1990 вне форума Ответить с цитированием
Старый 12.05.2009, 11:30   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

А так не пробовали?

Код:
Sub ЗаписьФормул()
    Application.Calculation = xlCalculationManual
    Range("a1").FormulaLocal = "=СУММЕСЛИ(Нагрузка!CB:CB;A120;Нагрузка!AG:AG)"
    ' здесь пишем остальные формулы
    Application.Calculation = xlCalculationAutomatic
End Sub
EducatedFool вне форума Ответить с цитированием
Старый 12.05.2009, 11:32   #3
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Можно и без записи формулы в ячейку:
Код:
[A1] = Application.SumIf(Sheets("Нагрузка").[CB:CB], [A120], Sheets("Нагрузка").[AG:AG])
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 12.05.2009, 12:34   #4
Lyubov1990
Пользователь
 
Аватар для Lyubov1990
 
Регистрация: 06.04.2009
Сообщений: 34
По умолчанию

Почему у меня ошибка? Вроде все правильно!
Sub ЗаписьФормул()
'Вычисление последней занятой строки на листе Преподаватели
n = WorksheetFunction.CountA(Worksheets ("Преподаватели").Range("A:A"))
krit = Worksheets("Преподаватели").Cells(n , 1).Value
Cells(n, 1).FormulaLocal = "=СУММЕСЛИ(Нагрузка!CB:CB;[krit];Нагрузка!AG:AG)"
' здесь пишем остальные формулы
Application.Calculation = xlCalculationAutomatic
End Sub
Lyubov1990 вне форума Ответить с цитированием
Старый 12.05.2009, 12:56   #5
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Попробуйте так:

Код:
Sub ЗаписьФормул()
    'Вычисление последней занятой строки на листе Преподаватели
    n = WorksheetFunction.CountA(Worksheets("Преподаватели ").Range("A:A"))
    krit = "Преподаватели!" & Cells(n, 1).Address
    Cells(n, 1).FormulaLocal = "=СУММЕСЛИ(Нагрузка!CB:CB;" & krit & ";Нагрузка!AG:AG)"
    ' здесь пишем остальные формулы
    Application.Calculation = xlCalculationAutomatic
End Sub
А лучше так:
Код:
Sub ЗаписьФормул()
    krit = "Преподаватели!" & Worksheets("Преподаватели ").Range("A65000").End(xlUp).Address
    Cells(n, 1).FormulaLocal = "=СУММЕСЛИ(Нагрузка!CB:CB;" & krit & ";Нагрузка!AG:AG)"
End Sub

Последний раз редактировалось EducatedFool; 12.05.2009 в 12:59.
EducatedFool вне форума Ответить с цитированием
Старый 12.05.2009, 14:07   #6
Lyubov1990
Пользователь
 
Аватар для Lyubov1990
 
Регистрация: 06.04.2009
Сообщений: 34
По умолчанию

Спасибо большое, всё получилось))))
Lyubov1990 вне форума Ответить с цитированием
Старый 13.05.2009, 16:53   #7
Lyubov1990
Пользователь
 
Аватар для Lyubov1990
 
Регистрация: 06.04.2009
Сообщений: 34
По умолчанию

Помогите пожалуйста, не могу вставить формулы!

Sub ЗаписьФормулНагрузка()

'Вычисление последней строки на листе Группа
n = WorksheetFunction.CountA(Worksheets ("Нагрузка").Range("A:A"))

'определяем адреса ячеек по которым будем высчитывать
krit = "Нагрузка!" & Cells(n - 2, 3).Address 'c
krit1 = "Нагрузка!" & Cells(n - 2, 5).Address 'e
krit2 = "Нагрузка!" & Cells(n - 2, 35).Address 'ai
krit3 = "Нагрузка!" & Cells(n - 2, 2).Address 'b
krit4 = "Нагрузка!" & Cells(n - 2, 9).Address 'i
krit5 = "Нагрузка!" & Cells(n - 2, 32).Address 'af
krit6 = "Нагрузка!" & Cells(n - 2, 33).Address 'ag
krit7 = "Нагрузка!" & Cells(n - 2, 34).Address 'ah
krit8 = "Нагрузка!" & Cells(n - 2, 8).Address 'h
krit9 = "Нагрузка!" & Cells(n - 2, 13).Address 'm
krit10 = "Нагрузка!" & Cells(n - 2, 16).Address 'p
krit11 = "Нагрузка!" & Cells(n - 2, 21).Address 'u
krit12 = "Нагрузка!" & Cells(n - 2, 70).Address 'br
krit14 = "Нагрузка!" & Cells(n - 2, 51).Address 'ao
krit15 = "Нагрузка!" & Cells(n - 2, 67).Address 'bo
krit16 = "Нагрузка!" & Cells(n - 2, 68).Address 'bp
krit17 = "Нагрузка!" & Cells(n - 2, 69).Address 'bq

' записываем формулы в ячейки
'Cells(n - 2, 8).FormulaLocal = "=ЕСЛИ(" & krit2 & ">0;ИНДЕКС(Группы!L:L;ПОИСКПОЗ( " & krit1 & ";Группы;0));"")"
'Cells(n - 2, 40).FormulaLocal = "=ЕСЛИ(" & krit12 & ">0;ИНДЕКС(Группы!M:M;ПОИСКПОЗ( " & krit1 & ";Группы;0));"")"

'Cells(n - 2, 37).FormulaLocal = "=ЕСЛИ(СУММ(" & krit8 & ")>8;СУММ(" & krit4 & ":" & krit9 & ";" & krit10 & ":" & krit11 & ")/" & krit8 & ";"")"
'Cells(n - 2, 34).FormulaLocal = "=ЕСЛИ(" & krit3 & "= 'Платное'; СУММ(" & krit4 & ":" & krit5 & ");0)"
'Cells(n - 2, 33).FormulaLocal = "=ЕСЛИ(" & krit3 & "= 'Бюджетное'; СУММ(" & krit4 & ":" & krit5 & ");0)"
'Cells(n - 2, 68).FormulaLocal = "=ЕСЛИ(" & krit3 & "= 'Бюджетное'; СУММ(" & krit14 & ":" & krit15 & ");0)"
'Cells(n - 2, 69).FormulaLocal = "=ЕСЛИ(" & krit3 & "= 'Платное'; СУММ(" & krit4 & ":" & krit5 & ");0)"

End Sub
Lyubov1990 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как удалять ячейки с помощью VBA Рома_Чайник Microsoft Office Excel 4 16.02.2009 11:31
Передача формул из ячейки таблицы в программу Rekky Общие вопросы Delphi 5 20.01.2009 17:10
как решить с помощью формул? Liko Microsoft Office Excel 10 09.12.2008 17:05
Как с помощью формул можно сравнить и вывести данные kutt Microsoft Office Excel 2 24.09.2008 17:05
защита ячейки в VBA tat-besidovska Microsoft Office Excel 4 06.02.2008 04:57