Остановить изменение формулы Excel при вставке / удалении строк

Я пытаюсь настроить книгу бюджета для моего личного бюджета, используя 13 листов, 1 для итогов и другие 12 для каждого месяца. Я не могу для жизни меня понять, почему формулы у меня меняются, когда я вставляю строку в один из ежемесячных листов. Вот пример одной из формул, которые у меня есть:

=SUMIF(JUN!$G:$G0,"Utilities", JUN!$D:$D0)

Если я вставлю строку в верхней части листа, она увеличит двойки до трех, отбрасывая вычисления. Есть ли способ, которым я могу заблокировать формулу меняется вообще? Это невероятно расстраивает.

4
задан Mike
04.02.2023 1:58 Количество просмотров материала 2406
Распечатать страницу

2 ответа

что вам нужно понять, так это абсолютность абсолютных ссылок, как указано в $, не абсолютно абсолютная ;-)

теперь, когда этот скороговорка в сторону, позвольте мне объяснить.

абсолютность применяется только при копировании-вставке или заполнении формулы. Вставка строк выше или столбцов слева от диапазона с абсолютной ссылкой приведет к" сдвигу " адреса диапазона так, что data диапазон указывает на остатки тот же.

кроме того, вставка строк или столбцов в средний диапазоне позволит расширить его, чтобы охватить новые строки/столбцы. Таким образом, чтобы "добавить" строку данных в диапазон (таблицу), нужно вставить ее после первая строка данных.

самый простой способ добавления строки данных выше текущий диапазон данных должен всегда иметь строку заголовка и включать строку заголовка в фактический диапазон. Это именно то решение, которое предлагает кибернетический.nomad in комментарий.



но, осталась еще одна проблема-добавление строки данных после end таблицы. Просто введите новые данные в строку после последней строки данных не будет работать. Также не будет вставка строки до строки после последней строки.

самое простое решение для этого-использовать специальную" последнюю " строку, Включить эту строку в диапазон данных, и всегда добавляйте новые строки, вставляя до эта специальная строка.

Я обычно уменьшаю высоту строки и заполняю ячейки соответствующим цветом:

Worksheet Screenshot

для вашего примера, полная" простейшая " формула будет таким образом:

=SUMIF(JUN!$G:$G1,"Utilities",JUN!$H:$H1)



Другим способом достижения той же цели является использование динамической формулы, которая автоматически подстраивается под объем данных в таблице. Там несколько различных вариаций в зависимости от конкретных обстоятельств, а именно то, что будет можно делать на стол.

если, как это обычно бывает (например, ваш пример), таблица начинается в верхней части листа, имеет один заголовок строки, а данные непрерывны без пробелов, простая динамическая формула будет:

=SUMIF(INDEX(JUN!$G:$G,2):INDEX(JUN!$G:$G,COUNTA(JUN!$G:$G)),"Utilities",INDEX(JUN!$H:$H,2):INDEX(JUN!$H:$H,COUNTA(JUN!$G:$G)))

Это лучшее решение, чем использование INDIRECT() as

  1. она является энергонезависимой, а следовательно, лист вычисляет быстрее, и
  2. он не сломается, если вставить столбцы слева от таблицы.

динамическая формула техника может быть дополнительно улучшена с помощью его в Именованные Формулы.




Конечно, the лучшие решение преобразовать таблицу в соответствующую таблицу, и использовать структурированные ссылки.

6
отвечен robinCTS 2023-02-05 09:46

Итак, вы утверждаете, что при вставке новой строки 2 (между текущей строкой 1 и строкой 2), вы хотите, чтобы формула смотрела на новую строку 2?  Вот несколько вариаций:

=SUMIF(INDIRECT("JUN!$G:$G0"),"Utilities", INDIRECT("JUN!$D:$D0"))

всегда будет смотреть на строки от 2 до 500, без учета строк, перенумерованных вставками (или удалениями).  Это означает, что при вставке строки, исходная строка 500 будет перенумерован в 501 и будет удален из диапазона.  Если вы хотите посмотреть на текущую строку 2 через исходная строка 500, используйте

=SUMIF(INDIRECT("JUN!$G"):JUN!$G0,"Utilities", INDIRECT("JUN!$D"):JUN!$D0)

в случае, если это не очевидно, INDIRECT() принимает строку (текст) аргумент и интерпретирует его как адрес.  Это позволяет делать инвариантную адресацию, поскольку строки (которые выглядят как адреса) не будут скорректированы когда другие адреса корректируются из-за вставки/удаления строки/столбца.

отметим, что $ символы в адресных строках необязательны; они не имеют никакого эффекта.

2
отвечен Scott 2023-02-05 12:03

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх