
예:
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)
- 전체 열을 사용하면 열의 데이터 양에 맞게 조정할 필요가 없습니다.
- 이후
Index
보다는 사용이 휘발성이고 그렇지 않습니다. (휘발성 함수는 시트를 계산할 때마다 다시 계산하는 반면, 비휘발성 함수는 참조된 데이터가 변경될 때만 다시 계산합니다. 휘발성 함수가 너무 많으면 Excel 속도가 느려질 수 있습니다.)Offset
Offset
Index
답변2
MATCH를 사용하여 필요한 것을 얻을 수 있습니다.
MATCH(0,B2:B6,-1)+1
B2: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 열이 정렬되더라도 작동합니다.