다른 열에서 조건이 처음 충족될 때 한 열의 값을 반환하는 수식

다른 열에서 조건이 처음 충족될 때 한 열의 값을 반환하는 수식

예:

A, B, C, D의 4개 열이 있는 스프레드시트가 있고 행 1은 머리글 행입니다.

A2=1
B2=(임의의 양의 정수)
C2=(또 다른 임의의 양의 정수)

A3=A2+1
B3=B2-C2
A4=A3+1
B4=B3-C2

...

D2가 문제 셀입니다. D2에서는 <=0인 B 열 값의 첫 번째 인스턴스와 일치하는 A 열의 값을 반환하려고 합니다.

여기에 이미지 설명을 입력하세요

답변1

Paul의 답변과 비슷한 맥락에서 나는 다음을 사용 Index하고Match

=INDEX($A:$A,MATCH(0,$B:$B,-1)+1)
  1. 전체 열을 사용하면 열의 데이터 양에 맞게 조정할 필요가 없습니다.
  2. 이후 Index보다는 사용이 휘발성이고 그렇지 않습니다. (휘발성 함수는 시트를 계산할 때마다 다시 계산하는 반면, 비휘발성 함수는 참조된 데이터가 변경될 때만 다시 계산합니다. 휘발성 함수가 너무 많으면 Excel 속도가 느려질 수 있습니다.)OffsetOffsetIndex

답변2

MATCH를 사용하여 필요한 것을 얻을 수 있습니다.

MATCH(0,B2:B6,-1)+1B2:B6숫자와 같거나 낮은 첫 번째 값을 찾아 상대 0위치를 반환합니다. 0부터 색인이 생성되므로 색인과 일치하도록 1을 추가합니다.

0부터 인덱싱하면 행 B2는 0, B3은 1, B4는 2, B5는 3임을 의미합니다. 따라서 MATCH는 "3"을 반환합니다.

A 열에 자체 인덱스가 있고 이것이 비순차적이거나 다른 값을 포함하거나 1부터 시작하지 않은 경우 오프셋을 사용하여 얻을 수 있습니다.

=OFFSET(A2,MATCH(0,B2:B6,-1),0)

따라서 이는 MATCH의 결과를 사용하여 A2에서 카운트다운하여 해당 행 위치의 값을 찾는 것입니다.

답변3

B2와 C2만 사용해서 계산할 수는 없나요?

=CEILING(B2/C2,1)+1

Chris의 답변에 대한 내 의견에 따르면 -업데이트된 버전

=INDEX($A:$A,MATCH(TRUE,INDEX($B:$B<=0,0),0))

이렇게 하면 첫 번째 값 <=0이 0일 때 잘못된 값을 얻는다는 Chris의 제안에 내재된 문제를 피할 수 있습니다.

이 부분은 값 $B:$B<0의 "배열"을 반환합니다 TRUE/FALSE. 첫 번째 값은 TRUE첫 번째 열 B 값 <0과 명백히 일치합니다. 그런 다음 MATCH는 첫 번째 인스턴스의 위치를 ​​찾은 다음 INDEX는 열 A에서 해당 값을 가져옵니다.

두 번째 INDEX는 "배열 입력"을 피하기 위해서만 존재합니다. 즉, 배열 입력 없이도 작동합니다.

=INDEX($A:$A,MATCH(TRUE,$B:$B<=0,0))

CTRL+SHIFT+ENTER......하지만 해당 버전은 "배열 입력"이 필요합니다 . 즉, .

전체 열을 사용하는 것은 이전 제안보다 조금 더 비효율적입니다(그리고 Excel 2003 이하에서는 작동하지 않습니다. 해당 버전에서는 특정 범위를 사용해야 합니다).

Chris의 제안에 따라 "일치 유형"이 -1인 MATCH는 B 열에서 내림차순 값을 가져야 합니다. 이 공식은 B 열이 정렬되더라도 작동합니다.

관련 정보