일치하는 기간을 기준으로 데이터를 반환합니다.

일치하는 기간을 기준으로 데이터를 반환합니다.

우리 그룹에는 순환 책임을 추적하는 데 사용되는 Excel 시트가 있습니다. 간단한 예는 다음과 같이 배치됩니다.

  • A열:시작각 항목이 나타내는 기간의 시작을 정의하는 날짜가 있습니다.
  • B열:각 항목이 나타내는 기간의 끝을 정의하는 날짜가 있습니다.
  • C열:양수인같은 줄에 START 및 END로 정의된 기간 동안 지정된 책임에 할당된 사람을 나타내는 문자열이 있습니다.

목록 자체는대개시작일 기준으로 오름차순으로 정렬됩니다. 그러나 시트가 다시 배열될 수도 있습니다.

목록에 정의된 기간 사이에는 중복이 있어서는 안 됩니다.

내가 추가하고 싶은 것은 세 가지 값(별도의 셀에 있음)이 있는 정보 섹션입니다.

  • 이전의현재 기간 바로 전 기간에 해당하는 ASSIGNEE입니다.
  • 현재의현재 책임을 맡은 담당자가 됩니다.
  • 다음우리가 현재 있는 기간 이후의 기간에 해당하는 ASSIGNEE가 됩니다.

스프레드시트가 올바른 순서(START 기준으로 오름차순)로 유지된다고 가정하면 CURRENT에 대한 공식을 알아낸 후 PREVIOUS 및 NEXT를 반환하는 것이 쉬워야 합니다. 그러나 나는 그것을 어디서부터 시작해야 할지조차 확신하지 못합니다.

답변1

생각하다이것은 전류를 찾는 데 효과적입니다. 어디까지나 테스트해봤지만추측이 경우 한 가지 특성을 무시하는 것은 문제가 되지 않습니다.

먼저 B와 C 사이에 열을 추가합니다(이후 담당자는 D가 됩니다). 이 열에 다음 수식을 입력하세요.

=IF(NOW()-A2>0,IF(NOW()-B2<0,"Yes","No"),"No")

그러면 예가 포함된 행 하나와 아니요가 포함된 나머지 행(현재 슬롯에 ​​대해)이 생성됩니다.

이제 현재 담당자의 셀에 다음을 입력합니다.

=INDEX($C$2:$D$4, MATCH("Yes", $C$2:$C$4,0), 2)

이전: =INDEX($C$2:$D$4, MATCH("Yes", $C$2:$C$4,0) - 1, 2)
다음: =INDEX($C$2:$D$4, MATCH("Yes", $C$2:$C$4,0) + 1, 2)

일반적으로 MATCH는 검색 열을 정렬하려고 하지만 열에는 Yes가 하나만 있어야 하기 때문에생각하다(이것은 추측 부분입니다) 우리는 그 제한을 무시할 수 있습니다.

내 테스트 스프레드시트는 행이 3개뿐이므로 YMMV입니다.

current가 첫 번째 줄 등인 경우 이전에 대한 오류 검사가 필요하며 소스 범위의 이름을 지정하는 것이 아마도 좋은 생각일 것입니다.

추가 열을 숨길 수도 있습니다.

답변2

순서대로 입력:

현재 담당자: currRow=match(now(),A:A,1)- 데이터가 정렬되면 현재 행을 찾게 되며 도우미 열이 필요하지 않습니다. 쉽게 참조할 수 있도록 이를 계산하는 셀 이름을 currRow로 설정합니다.
양수인: =indirect("C"& currRow + x)- x: 이전, 현재 및 다음 행에 대해 각각 -1, 0, 1입니다.

비순차 입력:

현재 행: currRow=match(max(if(A:A>now(),"",A:A)),A:A,0)- 배열 수식이므로 CTRL+SHIFT+ENTER를 눌러 입력해야 합니다.
현재 담당자: 이전과 동일합니다.
이전: =indirect("C" & match(max(if(A:A>=indirect("A" & currRow),"",A:A)),A:A,0))- 배열 수식이기도 합니다.
다음: =indirect("C" & match(min(if(A:A<=indirect("A" & currRow),"",A:A)),A:A,0))- 여전히 배열 수식입니다.

관련 정보