Страницы: 1
RSS
Использование функции, определяющей зависимость между ячейками.
 
Здравствуйте!  
Довольно часто встречается задача описанная в обобщенном виде ниже.  
 
Существует общее входное данное для расчета по какой либо таблице. Например это данное задается в ячейке A1. В результате расчета по таблице в которой участвует значение ячейки A1 получается некое итоговое число, которое допустим выводится в ячейке B1. Таким образом между ячейкой A1 и B1 существует зависимость описываемая функцией: B2 = f (A1).  
Далее интересует диаграмма данной функции B2 = f (A1). Для этого необходимо заполнить таблицу со столбцами аргумента (для интересующего диапазона вариации аргумента) и значениями функции. В настоящее время заполнять данную таблицу приходится вручную изменяя A1 (подставляя значение аргумента) и копируя значения функции из B2 в таблицу диаграммы. Если внутри таблицы, определяющей функцию B2 = f (A1) необходимо что либо изменить, или то естественно приходится перезаполнять таблицу диаграммы, что занимает значительное время.  
Конечно можно написать процедуру на VBA, которая сама выполняет данное действие, но это тоже занимает определенное время. К тому же может возникнуть потребность в изменении положения таблицы диаграммы или содержимого ячеек A1 и B1 путем перетаскивания ячеек (нужно отметить, что при перетаскивании во всей книге происходят соответствующие изменения ссылок на перемещаемые ячейки), после чего процедура VBA перестанет работать.  
Сообщите пожалуйста, существует ли стандартный инструмент в Excel, позволяющий определить функцию между ячейками, в данном случае функцию B2 = f (A1) и использовать ее в дальнейших расчетах, в данном случае использовать ее в расчете таблицы диаграммы.  
 
Заранее благодарен за ответ, который можно отправить по адресу skavronov@rambler.ru.  
 
С уважением,  
Вадим.
 
Практически  нифига не понял. А нельзя диаграму строить по рядам А1:А10 и В2:В11 или как-то там.  
{quote}{login=Вадим}{date=28.08.2007 06:30}{thema=Использование функции, определяющей зависимость между ячейками.}{post}К тому же может возникнуть потребность в изменении положения таблицы диаграммы или содержимого ячеек A1 и B1 путем перетаскивания ячеек (нужно отметить, что при перетаскивании во всей книге происходят соответствующие изменения ссылок на перемещаемые ячейки), после чего процедура VBA перестанет работать.{/post}{/quote}Чтобы не зависить от перемещения ячеек стоит использовать именованные диапазоны, ёксель перетаскивает имена вместе с ячейками, а в VBA ссылаться на имена.
 
Спасибо за отклик!  
 
В прикрепленном файле пример описанной задачи. Здесь интересующей функцией является зависимость между ячейками: H16=f(G5). В файле содержится процедура, заполняющая таблицу диаграммы. Если нажать на кнопку, то процедура перезаполнит таблицу. В случае, если необходимо изменить что либо (например, курс рубля к евро), то после нажатия на кнопку произойдет перезаполнение таблицы и изменится диаграмма.  
 
Однако, если начать модифицировать таблицу функции (например, добавить еще одну или несколько позиций, что потребует добавления строк), то процедура перестанет работать корректно, поскольку в ней фигурируют координаты ячеек ячеек, которые после вставки строк изменятся. Необходимо будет корректировать процедуру.  
 
Если существует стандартная возможность определения данной функции (в данном случае H16=f(G5)), то такая проблема бы отсутствовала. Попытка с использованием пользовательской функции которая предназначалась для решения этой задачи оказалась безуспешной (колонка рядом).  
 
Тексты процедуры и функции см. после перехода в среду VBA (Alt+F11).  
 
С уважением,  
Вадим.
 
Есть несколько способов защититься от изменений адресов при сдвигах ячеек, но самый правильный уже сказали - дать итоговой ячейке имя (Insert -> Name -> Define), и обращаться к этому имени (вместо Cells(x,y) использовать Range(name)).  
Про именование диапазонов на этом сайте наверняка есть толковые статьи.
 
Сделал без макросов с помощью надстройки "Таблица данных" (Главное меню - Данные - Таблица подстановки) Как пользоваться  можно посмотрите в справке, так объянять достаточно сложно
 
Спасибо всем кто откликнулся!  
Создание Таблицы подстановки - это хороший способ решать аналогичные задачи. Можно считать, что я получил ответ на заданный вопрос.
Страницы: 1
Читают тему
Наверх