Формула не корректируется :-(

Автор Paulson, 20 марта 2015, 23:51

0 Пользователи и 1 гость просматривают эту тему.

Paulson

Здравствуйте!
Помогите please разобраться...
Есть таблица, в ней много строк и столбцов Почти во все столбцах в каждой строке есть простейшая формула. К примеру строка 25 столбец I такая: SUM(I24;H25)
Перед 25-й строкой (в середину таблицы) вставляю пустую строку. 25-я строка становится 26-й. НО! Формула становится SUM(I24;H26)! То есть 25-я строка не учитывается в последующих строках...   >:(

И можно было бы править вручную... Но, как я уже писал выше, столбцов много! Да и строки частенько приходится вставлять...
Если скопировать какую-то строку из таблицы и сделать "вставить как...", то все равно то же самое, формула не корректируется...  :-\

Долго курил интернет, не нашел ничего по этому поводу  :-\

Я не понимаю, почему не пересчитывается I24 на I25??!  ??? Может мне кот-нибудь подсказать, как сделать, чтобы пересчитывалось? Или это глюк?

kompilainenn

версия офиса какая и желательно сам файл выкладывайте
Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут

kompilainenn

хм, а действительно, так и происходит...проверил в ЛО 4.3.6, есть мнения, ЧТО это? бага или фича?=)
Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут

rami

Цитата: Paulson от 20 марта 2015, 21:51Перед 25-й строкой (в середину таблицы) вставляю пустую строку. 25-я строка становится 26-й.
Но 24-я ведь остаётся на месте! Вы хотите шагать вперёд не отрывая правую пятку от левой ??? Я хочу посмотреть :o

Я не вижу никаких баг и фич.

kompilainenn

2rami: но согласись, если формула будет вида А10+В10, то при вставке строки выше она превратится таки в А11+В11. А здесь, кусок формулы изменяется, а кусок нет! Может тут и нет багов или фич, но правильным это назвать тоже нельзя, имхо.

зы: а еще надо бы в эксель поглядеть, как там это сделано...а точно так же и сделано! в 2003 офисе во всяком случае...
Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут

rami

Цитата: kompilainenn от 20 марта 2015, 22:32но согласись,
Не соглашусь, если все ссылки ниже вставляемой строки, то они смещаются на количество вставляемых строк, а если строки вставляются между ссылок, то они растягиваются.

kompilainenn

Ну это просто так принято, разве трудно реализовать другое поведение, пусть и в виде опции?
Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут

rami

Цитата: kompilainenn от 20 марта 2015, 23:35Ну это просто так принято, разве трудно реализовать другое поведение, пусть и в виде опции?
???
Цитата: Paulson от 20 марта 2015, 21:51Я не понимаю, почему не пересчитывается I24 на I25??! ???
Новая строка смещает старую и все нижние строки со всем их содержимым включая ссылки, а верхние остаются неизменные. Ссылки привязаны к ячейкам, если смещаются ячейки, то изменяются привязанные к ним ссылки.
Цитата: Paulson от 20 марта 2015, 21:51Может мне кот-нибудь подсказать, как сделать, чтобы пересчитывалось?
Нужно заменить привязку к ячейке на смещение.
Например следующая формула в  ячейке I25 =SUM(OFFSET(I25;-1;0);H25)
позаботится о том, чтобы первое слагаемое всегда бралось из соседней ячейки сверху. Можно задать смещение в любом направлении на любое количество ячеек.

JohnSUN

Сделаем шаг в сторону от обсуждения. Что вообще должна делать формула
Цитата: Paulson от 20 марта 2015, 23:51
SUM(I24;H25)
Ладно бы, если бы адреса были записаны через двоеточие - сумма всех ячеек диапазона. Тогда вставляемая строка просто растягивает исходный диапазон по высоте и особых претензий к изменению адресов вроде бы не возникает: верхняя левая ячейка осталась на месте, а правая нижняя сползла чуть ниже...
Здесь же встроенная функция вызывается вместо обычного знака плюс.
Разумеется, такая запись тоже имеет право на существование - именно так SUM() проиллюстрирован в Справке.
Но, как по мне, такая запись всего для двух слагаемых - дурной тон. Это не вежливо по отношению к Calc'у и к пользователям, которые будут эту формулу читать. Вон сколько форумчан озадачилось!
Согласитесь, если бы речь шла о формуле
=I24+H25вопросов, скорее всего, тоже бы не возникло: после вставки строки формула ссылалась бы на те же ячейки, что и вначале
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

rami

Цитата: JohnSUN от 21 марта 2015, 08:24Но, как по мне, такая запись всего для двух слагаемых - дурной тон.
Просто начальный уровень пользователя. Я всегда в таких случаях использую +, а не SUM — это легче и наглядней.

Как мне кажется, суть вопроса в том, что есть таблица, которая накапливает данные(как значения, а не как формулы). Только в последней(нижней) строке есть формулы которые всегда должны ссылаться на ячейки в текущей(последней) и предпоследней строке. Нижняя строка с формулами как-бы является точкой отсчёта и при смещении тянет за собой ссылки.
Пользователь:
1. ставит курсор в начало последней строки
2. выделяет строку
3. копирует
4. вставляет новую строку, которая смещая последнюю вниз становится предпоследней, при этом сохраняя выделение
5. вставляет ранее скопированные данные как значения

Paulson

Цитата: rami от 21 марта 2015, 01:19Нужно заменить привязку к ячейке на смещение.Например следующая формула в  ячейке I25 Код:=SUM(OFFSET(I25;-1;0);H25) позаботится о том, чтобы первое слагаемое всегда бралось из соседней ячейки сверху. Можно задать смещение в любом направлении на любое количество ячеек.

Получилось реализовать этим способом. Большое спасибо за помощь! :)

Paulson

Цитата: JohnSUN от 21 марта 2015, 08:24Здесь же встроенная функция вызывается вместо обычного знака плюс.Разумеется, такая запись тоже имеет право на существование - именно так SUM() проиллюстрирован в Справке.Но, как по мне, такая запись всего для двух слагаемых - дурной тон. Это не вежливо по отношению к Calc'у и к пользователям, которые будут эту формулу читать.

На самом деле формула сложнее, просто я ее упростил  ;),  т.к. мне нужно было просто понять, как сделать так, чтобы таки после вставки строки Calc пересчитывал ячейку.  :)