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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.05.2009, 18:54   #1
Lyubov1990
Пользователь
 
Аватар для Lyubov1990
 
Регистрация: 06.04.2009
Сообщений: 34
По умолчанию Не могу вставить формулы! Help!!!!

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

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

'Вычисление последней строки на листе Группа
n = WorksheetFunction.CountA(Worksheets ("Нагрузка").Ra nge("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 вне форума Ответить с цитированием
Старый 13.05.2009, 19:42   #2
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от Lyubov1990 Посмотреть сообщение
Sub ЗаписьФормулНагрузка()
ЕСЛИ
Де вы в vba видели по русски?
Если - IF
СУММ - SUM

Последний раз редактировалось valerij; 13.05.2009 в 19:44.
valerij вне форума Ответить с цитированием
Старый 13.05.2009, 22:09   #3
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию

Цитата:
Сообщение от valerij Посмотреть сообщение
Де вы в vba видели по русски?
Если - IF
СУММ - SUM
А что, Excel уже не понимает русские формулы?
Может, названия листов тоже на английский перевести?

Цитата:
Сообщение от Lyubov1990 Посмотреть сообщение
Помогите пожалуйста, не могу вставить формулы!
А оно Вам надо? Зачем настолько усложнять себе работу?
Одно дело - программно вставить одну-две формулы, а, когда формул много, проще найти другой способ.

Объясните, почему нельзя заранее (вручную) прописать на листе все необходимые формулы?
В любом случае, подход к решению задачи неправилен, поэтому даже не буду вносить изменения в код.
EducatedFool вне форума Ответить с цитированием
Старый 14.05.2009, 07:01   #4
Lyubov1990
Пользователь
 
Аватар для Lyubov1990
 
Регистрация: 06.04.2009
Сообщений: 34
По умолчанию

Дело в том что, мне программно нельзя вставить только формулы! Помимо формул мне нужно вставить еще кое что, т.е. мне нужно вставить сразу целую строку, в которой и должны находиться эти формулы!
Lyubov1990 вне форума Ответить с цитированием
Старый 14.05.2009, 09:08   #5
mchip
Форумчанин
 
Регистрация: 24.06.2008
Сообщений: 516
По умолчанию

Так пропиши строку заранее (в укромном уголке) со всеми формулами и при необходимости копируй и вставляй строку целиком.
Можно сделать все! Было бы время, да деньги...
mchip вне форума Ответить с цитированием
Старый 14.05.2009, 09:30   #6
Lyubov1990
Пользователь
 
Аватар для Lyubov1990
 
Регистрация: 06.04.2009
Сообщений: 34
По умолчанию

Мне нужно вставить формулы с помощью VBA, иначе нельзя!
Lyubov1990 вне форума Ответить с цитированием
Старый 14.05.2009, 12:59   #7
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию

Цитата:
Мне нужно вставить формулы с помощью VBA, иначе нельзя!
Никто же вас не заставляет прописывать формулы вручную...

mchip имел ввиду поместить эту строку с заранее внесёнными формулами на скрытый лист в тот же файл (из которого запускается макрос), и потом в нужный момент выполнить команду типа этой:
Код:
ThisWorkbook.Worksheets("Скрытый").[a3:d25].Copy ActiveSheet.[b4:e26]
EducatedFool вне форума Ответить с цитированием
Старый 14.05.2009, 14:28   #8
Lyubov1990
Пользователь
 
Аватар для Lyubov1990
 
Регистрация: 06.04.2009
Сообщений: 34
По умолчанию

Аааа! Ну хорошо, я попробую! Спасибо большое!
Lyubov1990 вне форума Ответить с цитированием
Старый 14.05.2009, 17:05   #9
mchip
Форумчанин
 
Регистрация: 24.06.2008
Сообщений: 516
По умолчанию

А что бы формулы не "портились" (не менялись ссылки), там где хранишь поставь "пробел"=формула
При копировании убираешь "пробел" и формула работает
Можно сделать все! Было бы время, да деньги...
mchip вне форума Ответить с цитированием
Старый 14.05.2009, 17:41   #10
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
А что, Excel уже не понимает русские формулы?
Заменив
Код:
Cells(n - 2, 8).FormulaLocal = "=ЕСЛИ(" & krit2 & ">0;ИНДЕКС(Группы!L:L;ПОИСКПОЗ(" & krit1 & ";Группы;0));"")"
На
Код:
ActiveCell.FormulaR1C1 = _
        "=IF("" & krit2 & "">0,INDEX(Группы!C[4],MATCH("" & krit1 & "",Группы,0)),"""")"
Все заработало, просит открыть файл, в исходном виде, ошибка
valerij вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Формулы SoAndSo Microsoft Office Word 2 09.11.2008 20:13
Как с поиощью hiew вставить в файл строчку, "раздвинуть" файл и вставить туда строчку? barand Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 28.06.2008 10:58
Формулы SunKnight Общие вопросы Delphi 2 07.04.2008 09:38