Nasza grupa ma arkusz Excela, który służy do śledzenia obowiązków związanych z rotacją. Oto prosty przykład:
- Kolumna A: START zawiera daty określające początek okresu reprezentowanego przez każdy element zamówienia.
- Kolumna B: KONIEC ma daty określające koniec okresu reprezentowanego przez każdy element zamówienia.
- Kolumna C: NABYWCA posiada ciągi znaków reprezentujące osobę przypisaną do danej odpowiedzialności w okresie określonym przez START i KONIEC w tej samej linii.
Sama lista jest zwykle w porządku rosnącym według daty START. Możliwe jest jednak, że arkusz może zostać ponownie ułożony.
Pomiędzy okresami zdefiniowanymi na liście nie powinno się nakładać.
To, co chcę dodać, to sekcja informacyjna z trzema wartościami (w osobnych komórkach):
- POPRZEDNI byłby CZYNNIKIEM odpowiadającym okresowi bezpośrednio przed bieżącym.
- AKTUALNY byłby CELEM obecnie odpowiedzialnym.
- NASTĘPNY będzie NABYWCĄ odpowiadający okresowi po dniu, w którym się obecnie znajdujemy.
Zakładając, że arkusz kalkulacyjny pozostaje w odpowiedniej kolejności (rosnąco przez START), zwracanie POPRZEDNIEGO i NASTĘPNEGO powinno być łatwe po ustaleniu formuły dla BIEŻĄCEGO. Ale nie jestem nawet pewien, od czego zacząć.
=IF(C1="Current","Next",IF(C3="Current","Previous",IF(AND(NOW()>A2,NOW()<B2),"Current","")))
. 2. Skopiuj C2 do końca. 3. Dla „Current” zrobilibyśmy=VLOOKUP(C:D,"Current",2,FALSE)
. 4. Napisz podobne formuły jak w 3, dla „Poprzedni” i „Następny”.=IF(NOW()>=A2,IF(NOW()<=B2,"Current",IF(NOW()<=B3,"Previous","")),IF(AND(NOW()>=A1,NOW()<=B1),"Next",""))
Zamówione dane wejściowe:
Bieżący cesjonariusz:
currRow=match(now(),A:A,1)
- przy uporządkowaniu danych znajdzie się bieżący wiersz, nie ma potrzeby stosowania kolumny pomocniczej. Ustaw nazwę komórki liczącej to currRow tylko dla łatwiejszego odwoływania się.Cesjonariusz:
=indirect("C"& currRow + x)
- x: -1, 0, 1 odpowiednio dla poprzedniego, bieżącego i następnego wiersza.Niezamówione dane wejściowe:
Bieżący wiersz:
currRow=match(max(if(A:A>now(),"",A:A)),A:A,0)
- jest to formuła tablicowa, więc musisz ją wprowadzić za pomocą CTRL + SHIFT + ENTER.Obecny cesjonariusz: taka sama formuła jak poprzednio.
Poprzedni:
=indirect("C" & match(max(if(A:A>=indirect("A" & currRow),"",A:A)),A:A,0))
- także formuła tablicowa.Dalej:
=indirect("C" & match(min(if(A:A<=indirect("A" & currRow),"",A:A)),A:A,0))
- i nadal formuła tablicowa.źródło