Разбив, чтобы длинная строка стала читабельной.
=IF(C2="Confirmed";
(TODAY()-D2);
IF(C2="Unloaded";
(TODAY()-D2);
IF(C2="Unloading";
(TODAY()-D2);
IF(C2="Not confirmed";
(TODAY()-S2);
IF(C2="Started";
(TODAY()-D2);
IF(C2="In route";
(TODAY()-S2);
IF(C2="Pick-up pending";
(TODAY()-E2);
IF(C2="Prepared";
(TODAY()-S2);
"null"
)
)
)
)
)
)
)
)
На первый взгляд, здесь я вижу график вертикального поиска.
Итак, я создал эти два столбца. Один - это текстовый статус, который мы ищем.
Другой - расчетная дата.
Одна дата VLOOKUp
Предполагая, что D2, S2 и E2 являются фиксированными полями, я сделал формулу =TODAY() - $D$2
Тогда просто сделать VLOOKUP в правильном поле.
Поскольку мы работаем с полем типа даты, нам нужно преобразовать число в текст, чтобы получить полную дату. (Я использовал JJ на скриншоте в течение многих лет, потому что у меня есть голландский язык)
Затем мы должны обработать, когда VLOOKUP ничего не может найти, для этого мы используем IFERROR.
=IFERROR(TEXT(VLOOKUP(F6;$A$2:$B$9;2);"MM-DD-YY");"NULL")
И теперь у вас есть простая таблица поиска, которую вы можете разместить где угодно, спрятать на вкладке работника и т. Д. c .. где вы можете вычислить ваши значения, где вы можете добавлять и удалять значения.
Много строк, много дат
Но, скажем, у вас есть много строк с разными статусами и датами, и вы будете sh, чтобы узнать количество дней это займет Тогда этот вертикальный поиск не выглядит столь полезным, поскольку его можно использовать только для одной строки.
Мы все еще можем использовать VLOOKUP, чтобы сделать нашу жизнь немного проще
Предполагая, что в столбцах есть даты D, E и S
=IFERROR(DATEDIF(TODAY();INDIRECT(ADDRESS(ROW();VLOOKUP(F2;$A$2:$B$9;2;FALSE)));"d");"NULL")
Мы используем VLOOKUP, чтобы увидеть, какой столбец нам нужно искать. Здесь мы используем номер для столбца, а не букву.
Затем используйте ADDRESS, чтобы получить ссылку на адрес Excel для текущего ROW()
, и столбец, который мы нашли с помощью vlookup
Мы направляем его через INDIRECT, чтобы мы могли получить значение из этой целевой ячейки.
Затем мы получаем DATEDIFference в дней со смещения сегодня. Чтобы все было чистым, мы завертываем его в ИСПОЛЬЗОВАНИЕ.
- Вы можете использовать
INDEX($D2:$S2;0;VLOOKUP($F2;$A$2:$B$9;2;FALSE))
, чтобы получить то же самое эффект, как указывает Dirk Reichel , но вам следует помнить, что индекс используется с начала диапазона матрицы. Здесь матрица начинается со строки D. Таким образом, D2 - это индекс 1, а не 4, как в моем исходном методе, поэтому вам необходимо соответствующим образом настроить таблицу поиска.