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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.04.2016, 18:41   #1
7in
(aka Jin X) !RTFM!
Форумчанин
 
Аватар для 7in
 
Регистрация: 14.12.2014
Сообщений: 295
Восклицание Проблема с автообновлением ячеек

Суть в следующем: мне нужно получать значения ячеек (в формулах на листе) из строк, находящихся на 1 выше текущей. Обратиться к ячейке напрямую (т.е. A1, например) я не могу, т.к. строки могут перемещаться, и верхняя строка может уехать ещё выше или даже ниже, а меня интересует именно предыдущая.
Передавать параметры через "Диспетчер имён" не представляется возможным (в 2010, по крайней мере), а задавать для каждого столбца именную переменную (и писать там =ДВССЫЛ(АДРЕС(СТРОКА()-1;СТОЛБЕЦ($A$1)))) неудобно.
Посему я написал вот такую функцию (она возвращает сумму всех указанных ячеек, но со сдвигом на 1 позицию вверх):
Код:
Public Function UPS(X As Range) As Double
Dim i As Long, j As Long
  UPS = 0
  On Error Resume Next
  For i = 0 To X.Cells.Rows.Count - 1
    For j = 1 To X.Cells.Columns.Count
      UPS = UPS + CDbl(X.Cells(i, j))
  Next j, i
End Function
Теперь я могу указать в формуле UPS(нужная_мне_ячейка_в_текущей_стр оке) или UPS(несколько_ячеек_в_текущей_строк е) и получить числовое значение ячейки или сумму нескольких нужных мне ячеек, находящихся непосредственно над текущей строкой.
Здорово, неправда ли? Неправда! Потому что некоторые из таких формул автоматом не пересчитываются. Почему – спросите у , я предполагаю, что из-за того, что он видит обращение к ячейке в текущей строке и зачем ему пересчитывать формулу, если изменилась ячейка строкой выше?

Внимание, вопрос: как этот баг можно пофиксить? А может, есть более простой способ реализовать доступ к ячейке на 1 позицию выше? (p.s. Вариант создавать именные переменные для каждого столбца просьба не предлагать!)
Делаю лабы на Asm/Delphi/C++/Python/VBA(Excel): asmlabs.ru

Последний раз редактировалось 7in; 16.04.2016 в 18:47.
7in вне форума Ответить с цитированием
Старый 16.04.2016, 19:02   #2
7in
(aka Jin X) !RTFM!
Форумчанин
 
Аватар для 7in
 
Регистрация: 14.12.2014
Сообщений: 295
По умолчанию

Чего ж я туплю-то! Есть же прекрасная функция СМЕЩ!
Ч(СМЕЩ(ячейка_в_текущей_строке);-1;0))
СУММ(СМЕЩ(ячейки_в_текущей_строке);-1;0))

Делаю лабы на Asm/Delphi/C++/Python/VBA(Excel): asmlabs.ru
7in вне форума Ответить с цитированием
Старый 16.04.2016, 19:06   #3
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

установите в Excel стиль ссылок R1C1
скопируйте в ячейку эту формулу:
Код:
=ИНДЕКС(C;СТРОКА()-1)
пробуйте удалять, перемещать строки, столбцы... следите за содержимым ячейки))
удачи!
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с форматом ячеек clasterit Microsoft Office Excel 1 02.03.2012 09:18
Проблема с диапазоном ячеек в Excel. a1bert Microsoft Office Excel 12 04.01.2012 15:12
Проблема - обнуление значений формул из ячеек, ссылающихся на сторонний .xls Igor123 Microsoft Office Excel 8 21.09.2010 16:31
Проблема с автозаполнением объединенных ячеек alec_av Microsoft Office Excel 6 05.05.2010 12:02
Запрос на вставку данных в таблицу (Проблема непустых ячеек) Ramires SQL, базы данных 3 02.10.2008 08:03