
샘플 테이블 이미지:
목표: 샘플 테이블 이미지에서 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
.
LOOKUP
가 lookup_value
배열의 숫자보다 크면 함수는 배열의 마지막 숫자를 반환합니다. 구문 은 '를 오류로 1/(1/(...))
변환하므로 마지막 "숫자"는 마지막과 동일한 위치에 있거나 수식에 따라 0
값이 됩니다 .CST
VAT
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()
숫자 시퀀스를 생성하는 데 사용됩니다 .