Microsoft Excel에서 Index and Match 또는 유사한 기능을 사용하여 동일한 열에 있는 두 숫자 세트에 대해 마지막으로 채워진 숫자 행을 찾을 수 있습니까?

Microsoft Excel에서 Index and Match 또는 유사한 기능을 사용하여 동일한 열에 있는 두 숫자 세트에 대해 마지막으로 채워진 숫자 행을 찾을 수 있습니까?

샘플 테이블 이미지:

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

목표: 샘플 테이블 이미지에서 C열에서 추출하고 싶습니다. 마지막으로 채워진 CST 번호는 1235이고 마지막으로 채워진 Vat 번호는 204입니다.

=VLOOKUP("CST",B2:C5,2,FALSE)을 사용하면 첫 번째 CST 값, 즉 1234가 반환됩니다. VLOOKUP을 사용하는 VAT의 경우에도 마찬가지로 203이 반환됩니다.

Match를 시도하면 CST에 대해서는 잘 작동하지만 Lookup_value가 더 작은 VAT 동일한 수식의 경우 250(VAT 값이 250 미만이므로)은 결과로 #N/A를 제공합니다.

스크린샷(동일한 열에서 다른 lookup_value로 MATCH 사용):

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

답변1

이와 같은 경우에는 MATCH보다 AGGRAGATE를 선호합니다.

=INDEX($B:$B,AGGREGATE(14,6,ROW($A$2:INDEX($A:$A,MATCH("ZZZ",$A:$A)))/($A$2:INDEX($A:$A,MATCH("ZZZ",$A:$A))=D$1),1))

실제 기준을 D1과 D2에 넣어서 하드 코드가 아닌 공식에 직접 참조할 수 있도록 하여 "CST"드래그 "VAT"가능하게 만들었습니다.

두 개의 $A$2:INDEX($A:$A,MATCH("ZZZ",$A:$A))배열식이므로 기준 범위를 동적으로 설정합니다. A2부터 텍스트 문자열이 있는 A열의 마지막 셀로 설정됩니다.

Aggregate는 기준과 일치하는 가장 큰 행 번호(마지막 행)를 INDEX에 반환합니다.

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

답변2

로 이 작업을 수행할 수 있습니다 LOOKUP.

LOOKUPlookup_value배열의 숫자보다 크면 함수는 배열의 마지막 숫자를 반환합니다. 구문 은 '를 오류로 1/(1/(...))변환하므로 마지막 "숫자"는 마지막과 동일한 위치에 있거나 수식에 따라 0값이 됩니다 .CSTVAT

Last CST:  =LOOKUP(9E+307,1/(1/(($B$2:$B$999="CST")*$C$2:$C$999)))
Last VAT:  =LOOKUP(9E+307,1/(1/(($B$2:$B$999="VAT")*$C$2:$C$999)))

위 수식에서는 송장 번호가 항상 숫자라고 가정합니다. 문자열일 수 있는 경우 수식을 약간 수정해야 합니다.

Last CST:  =LOOKUP(2,1/(($B$2:$B$999="CST")*ROW($B$2:$B$999)),$C$2:$C$999)
Last VAT:  =LOOKUP(2,1/(($B$2:$B$999="VAT")*ROW($B$2:$B$999)),$C$2:$C$999)

답변3

수직 조회에는 VLOOKUP을 사용합니다. 두 번째 인수는 행렬입니다. 행에 제한이 없으면 행 번호를 지정하지 말고 열 문자만 지정하세요. 세 번째 인수는 사용할 열을 알려줍니다. 2는 두 번째, 즉 행렬의 C를 의미합니다.

기본적으로 이 기능은 처음 찾을 때 중지되지 않습니다. 계속해서 더 많은 항목을 찾아 궁극적으로 원하는 대로 정확히 맨 아래 항목(일반적으로 최신 항목)을 찾습니다.

따라서 사용

=VLOOKUP("CST", B:C, 2)

그리고

=VLOOKUP("VAT", B:C, 2)

수평 조회를 위한 HLOOKUP도 있습니다.

답변4

낮에는 테이블을 거꾸로 뒤집어서 VLOOKUP()가능하면 사용하고 INDEX/MATCH그렇지 않을 때는 사용했습니다. 중요한 부분은 테이블을 거꾸로 뒤집는 것인데, 다음은 그 방법을 보여줍니다. 이를 테이블로 사용하여 조회하려는 항목을 찾고 첫 번째 항목을 찾으면 원래("실제") 테이블에 있는 것처럼 "실제" 마지막 항목을 찾습니다.

따라서 값 테이블은 A1:B22입니다. 그 다음에:

=INDEX(A1:B22,  ROWS(A1:A22)+1-ROW(INDIRECT("1:"&ROWS(A1:A22))),  {1,2})

기본적으로 행 수(22)를 찾아 1(23)을 더한 다음 해당 값(23)에서 1부터 행 수(22)까지의 일련의 값을 뺀 값의 배열을 만듭니다. 반환할 행 수: 23-1=22, 23-2=21, 23-3=20 등이므로 22, 21, 20 등에서 1까지 내려갑니다. 따라서 INDEX()행을 역순으로 반환합니다.

XLOOKUP()요즘(2022년)에는 그냥 처음부터 끝까지 검색해서 사용하겠습니다 . 확실히, 위의 작업을 수행하면 SEQUENCE()숫자 시퀀스를 생성하는 데 사용됩니다 .

관련 정보