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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.10.2009, 12:56   #1
tohdom
Пользователь
 
Регистрация: 29.10.2009
Сообщений: 10
По умолчанию защита формулы при перемещении аргумента

Проблема: Необходимо запретить само-изменение формулы при копировании одной из ячеек-параметров (с помощью "защиты ячейки" не получается).

Пример:
Формула A1=A2+A3, если вырезать A3 и вставить в A4, то формула превратиться в A1=A2+A4, а нужно чтобы она оставалась исходной (значение А3 соответственно становится нулем/пустотой)
tohdom вне форума Ответить с цитированием
Старый 29.10.2009, 13:59   #2
DV68
Форумчанин
 
Регистрация: 05.08.2009
Сообщений: 465
По умолчанию

При создании формулы, содержащей ссылку на ячейку, эта ссылка обновляется, если:
1) ячейка была перемещена с помощью команды Вырезать (т. е. удалена) 2) перемещение ячейки произошло в результате вставки или удаления строк или столбцов. Если требуется, чтобы формула всегда ссылалась на одну и ту же ячейку, независимо от удаления расположенных над нею строк или перемещения ячеек, воспользуйтесь функцией ДВССЫЛ.
Для приведенного примера:
А1=ДВССЫЛ("A2")+ДВССЫЛ("A3")
"Все следует делать настолько простым, насколько это возможно, но не проще." Альберт Эйнштейн
DV68 вне форума Ответить с цитированием
Старый 29.10.2009, 15:16   #3
tohdom
Пользователь
 
Регистрация: 29.10.2009
Сообщений: 10
По умолчанию

Спасибо. для приведенного примера действительно работает.
Но для моего частного случая увы нет:

=ДВССЫЛ("ЕСЛИ(A1=1;1;0)")

зы.
Мне тут подсказали, что в доллары можно заключить A1 и тогда ссылка при вырезании меняться не будет.
Но вот беда, мне это не единожды нужно, а "растянуть" формулу на десятки ячеек, а потом заблокировать получившееся, чтоб не менялось.

Последний раз редактировалось tohdom; 29.10.2009 в 15:26.
tohdom вне форума Ответить с цитированием
Старый 29.10.2009, 16:09   #4
tohdom
Пользователь
 
Регистрация: 29.10.2009
Сообщений: 10
По умолчанию

Вариант номер два - через макрос - нид хелп

For i = 5 To 7
For j = 5 To 7

Cells(i, j).Select
ActiveCell.FormulaR1C1 = "IF(cells(i-4,j-4)="",1,0)" - нужно чтобы в каждую выделенную ячейку сувал такую формулу с и долларами. Цель формулы - если одна ячейка пустая ставить в другую единицу).

Next
Next


зы. если есть какой-то более красивый способ посчитать кол-во ячеек каждого вида (сожержащих определенное слово и пустых), подскажите.
Признаю, что выбрал топорный способ.
tohdom вне форума Ответить с цитированием
Старый 29.10.2009, 16:57   #5
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
нужно чтобы в каждую выделенную ячейку сувал такую формулу с и долларами
Доллары лучше "сувать" не в ячейки, а в карман

Записать формулу в диапазон ячеек можно и без цикла - одной строкой кода.
Вот только зачем?

Цитата:
если есть какой-то более красивый способ посчитать кол-во ячеек каждого вида (сожержащих определенное слово и пустых), подскажите
Как раз для этого разработчики excel придумали формулы =СЧЁТЗ, =СЧЁТЕСЛИ и =СЧИТАТЬПУСТОТЫ
EducatedFool вне форума Ответить с цитированием
Старый 29.10.2009, 17:07   #6
tohdom
Пользователь
 
Регистрация: 29.10.2009
Сообщений: 10
По умолчанию

ндааа...как всё просто

только одно не понял как с ней сделать - посчитать все заполненные ячейки?
просто счет считает только ячейки с цифровыми значениями, нужно кол-во всех заполненных ячеек в диапазоне.
tohdom вне форума Ответить с цитированием
Старый 11.11.2009, 16:46   #7
tohdom
Пользователь
 
Регистрация: 29.10.2009
Сообщений: 10
По умолчанию

тоже касается защиты.
можно как-нибудь запретить копироваться границам ячеек?
ужас как задолбало постоянно "восстанавливать красоту"
tohdom вне форума Ответить с цитированием
Старый 11.11.2009, 16:55   #8
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
можно как-нибудь запретить копироваться границам ячеек?
Сразу после вставки диапазона "с границами" в контекстном меню вставки выберите пункт "Использовать форматы конечных ячеек"

И "красота" сохранится.
EducatedFool вне форума Ответить с цитированием
Старый 11.11.2009, 16:59   #9
tohdom
Пользователь
 
Регистрация: 29.10.2009
Сообщений: 10
По умолчанию

ясно, сделать чтобы это было умолчательно можно?
tohdom вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Моргает label при перемещении Maxs Компоненты Delphi 21 26.11.2009 19:57
Изменить курсор при перемещении формы Nester Общие вопросы Delphi 11 28.09.2009 18:29
Процедура при перемещении формы Alex Cones Общие вопросы Delphi 7 28.07.2009 09:11
Запоминание координат при перемещении формы Shouldercannon Общие вопросы Delphi 5 21.06.2009 23:11
Определение X и Y координат PaintBox при перемещении курсора мыши Vladimir K. Общие вопросы Delphi 3 04.01.2007 10:45