Excel ближайший срок - PullRequest
0 голосов
/ 02 июля 2018

У меня есть строка с датами, и под ней у меня есть пустая строка, в которой я могу набрать «C» на любом количестве ячеек, которые нужны или необходимы для получения дат над ним, но я получаю только первый C, так что Я пытаюсь сделать, на самом деле игнорировать все написанные мною «С», которые соответствуют прошлым сегодняшним датам, и только дать мне более близкую одну или следующую сегодняшнюю дату.

Например: допустим, сегодня 1 июля 2018 года, поэтому у меня есть строка 1 с рядом дат, таких как A1=June 30 2018, B1= July 1 2018, C1=July 2 2018, D1=July 3 2018 и т. Д., А в строке 2 я набрал C на А2, С2 и Е2 так же с HLOOKUP it returns 30 июня 2018`, но я не хочу, чтобы, поскольку эта дата уже прошла, я хочу получить следующую и более близкую дату после настоящего дня, так что это должен быть С2, что 2 июля 2018 года и т. д., поскольку сегодняшняя формула будет обновляться по мере прохождения дней.

Это чтобы получить следующую контрольную дату на хронограмме проекта, чтобы все даты были определены, но результат для каждой задачи должен автоматически обновляться, чтобы оставаться актуальным для расписания, поэтому прошлые даты просто не имеют смысла быть результаты показаны на диаграмме таблицы Ганта, и да, я знаю, что это легко, просто удалить «С», которые соответствуют прошлым датам, но тогда в чем тогда смысл Excel?

enter image description here

1 Ответ

0 голосов
/ 02 июля 2018

Я пойду на конечности здесь ... вы хотите найти первый C в строке 2 после сегодняшней даты, которая находится в строке 1.

  • MATCH сообщит вам, в какой дате находится столбец: MATCH(TODAY(),$1:$1,0) возвращает 3, так как 2 июля в C1.
  • INDEX вернет ссылку на ячейку ниже текущей даты при использовании вместе с MATCH: INDEX($2:$2,,MATCH(TODAY(),$1:$1,0))
  • COUNTA скажет вам последний столбец, который заполнен датами в строке 1: COUNTA($1:$1) возвращает 9 в моем случае, так как я поставил даты из A1:I1.
  • Снова используйте INDEX, чтобы вернуть ссылку на последнюю ячейку в строке 2. INDEX($2:$2,,COUNTA($1:$1))
  • Соедините оба INDEX вместе, чтобы получить ссылку на диапазон от текущей даты до конца ваших данных: INDEX($2:$2,,MATCH(TODAY(),$1:$1,0)):INDEX($2:$2,,COUNTA($1:$1)) - это возвращает ошибку, так как возвращает ссылку на несколько ячеек.
  • Теперь найдите первое C в указанном диапазоне: MATCH("C",INDEX($2:$2,,MATCH(TODAY(),$1:$1,0)):INDEX($2:$2,,COUNTA($1:$1)),0) возвращает 1, так как я получил C во 2 июля.
  • Добавьте столбец с текущей датой к столбцу, который был возвращен (и минус 1 для его ада). SUM(-1,MATCH(TODAY(),$1:$1,0),MATCH("C",INDEX($2:$2,,MATCH(TODAY(),$1:$1,0)):INDEX($2:$2,,COUNTA($1:$1)),0)) возвращает номер столбца первого C на сегодняшнюю дату или после нее.
  • Используйте этот номер для возврата ссылки на дату в строке 1: =INDEX($1:$1,,SUM(-1,MATCH(TODAY(),$1:$1,0),MATCH("C",INDEX($2:$2,,MATCH(TODAY(),$1:$1,0)):INDEX($2:$2,,COUNTA($1:$1)),0))).

Итак, ваша окончательная формула:

=INDEX($1:$1,,SUM(-1,MATCH(TODAY(),$1:$1,0),MATCH("C",INDEX($2:$2,,MATCH(TODAY(),$1:$1,0)):INDEX($2:$2,,COUNTA($1:$1)),0)))

Немного длиннее, и я уверен, что это можно сделать в гораздо более короткой формуле.
Редактировать: Я также согласен с Rawrplus - вы могли бы объяснить это немного лучше.

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