Как добавить / удалить столбцы, сохранив предварительно заполненные формулы без изменений? - PullRequest
0 голосов
/ 15 апреля 2019

Я создаю график, который будет использоваться коллегами, которые не очень разбираются в Excel. Они хотели, чтобы запланированные даты начала / окончания рассчитывались исходя из одной введенной даты, а также продолжительности, которую они могут редактировать. Они НЕ хотят редактировать фактические запланированные даты.

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

Я пытался вводить формулы непосредственно в таблицу, а также пытался вводить формулы рядом с таблицей (но не внутри нее) и ссылаться на эти ячейки для заполнения дат.

Я также попытался сослаться на действительные имена столбцов вместо букв столбцов.

Объяснение того, что представляет каждая ячейка:

D7: Whether to calculate the dates based on Project Start Date or In Warehouse Date
D8: Specified date
Column E: Duration (Days)
Column F: Planned Start
Column G: Planned End

Формула плановой даты начала (самая первая строка):

=IF($D$8="","",IF($D$7="Project Start Date",$D$8,IF($D$7="In Warehouse Date",G11-E11+1,"")))

Формула плановой даты начала (все строки после первой строки):

=IF($D$8="","",IF($D$7="Project Start Date",F11+E11,IF($D$7="In Warehouse Date",G12-E12+1,"")))

Формула плановой даты окончания (самая последняя строка):

=IF($D$8="","",IF($D$7="Project Start Date",F35+E35-1,IF($D$7="In Warehouse Date",$D$8,"")))

Формула плановой даты окончания (все строки до последней строки):

=IF($D$8="","",IF($D$7="Project Start Date",F34+E34-1,IF($D$7="In Warehouse Date",G35-E35,"")))

Формулы рассчитывают даты правильно. Однако они ломаются всякий раз, когда я добавляю или удаляю строки. При добавлении строк он выталкивает ссылку Duration так, что она всегда отключается на одну строку после добавленной строки. При удалении строк он полностью нарушает формулу и заменяет ссылку на продолжительность на # REF.

Я немного знаком с VBA, поэтому, если мне удастся как-то решить эту проблему с помощью кода Macro или VBA, я буду более чем счастлив попробовать.

Спасибо!

1 Ответ

1 голос
/ 17 апреля 2019

Мне кажется, я нашел решение для своего вопроса!Я заменил все относительные ссылки на комбинации OFFSET и INDIRECT в формулах, и теперь это работает!Я оставил формулы для самой первой строки для плановой даты начала и самой последней строки для плановой даты окончания.

Для средних строк плановой даты начала вот как выглядит формула теперь:

=IF(OR($D$7="",$D$8="",INDIRECT("E" & ROW())=""),"",IF($D$7="Project Start Date",OFFSET(INDIRECT("F" & ROW()),-1,0)+OFFSET(INDIRECT("E" & ROW()),-1,0),IF($D$7="In Warehouse Date",INDIRECT("G" & ROW())-INDIRECT("E" & ROW())+1,"")))

А для средних строк плановой конечной даты, вот как выглядит формула:

=IF(OR($D$7="",$D$8="",INDIRECT("E" & ROW())=""),"",IF($D$7="Project Start Date",INDIRECT("F" & ROW())+INDIRECT("E" & ROW())-1,IF($D$7="In Warehouse Date",OFFSET(INDIRECT("G" & ROW()),1,0)-OFFSET(INDIRECT("E" & ROW()),1,0),"")))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...