한 Excel 테이블이 다른 테이블에서 동일한 열 이름을 조회하도록 동적 수식을 만듭니다.

한 Excel 테이블이 다른 테이블에서 동일한 열 이름을 조회하도록 동적 수식을 만듭니다.

두 개의 Excel 테이블, 테이블 A와 테이블 B가 있습니다. 테이블 A에는 고객 ID, 우편 번호, 고객 이름 열과 테이블 B의 열과 동일한 열 이름을 가진 여러 열이 포함되어 있습니다. 이상적으로는 구조적 참조를 사용하여 수식을 만들고 싶습니다. 따라서 테이블 B의 열 순서는 무관하므로 테이블 A에서 내가 있는 행의 고객 ID와 내가 있는 열의 열 값과 일치하는 테이블 B의 값을 조회합니다.

예를 들어 내 수식이 테이블 A의 세 번째 열과 고객 ID가 "123"인 행에 있는 경우 자체 열 이름(고객 이름)을 확인하고 고객 ID = 표 B의 "123"

다음 수식은 고객 이름 열에 적합합니다.

=INDEX(TableB[Customer Name], MATCH([@[Customer Number]], TableB[Customer Number], 0))

하지만 [고객 이름] 부분을 내가 속한 열의 이름으로 동적으로 바꾸는 단일 수식을 만들어 모든 열에 복사할 수 있기를 원합니다. #Headers를 사용하고 간접을 사용하여 참조를 생성하려고 시도했지만 Ref 오류가 발생합니다.

=INDIRECT("INDEX(TableB["&[#Headers]&"], MATCH([@[Customer Number]], TableB[Customer Number], 0))")

답변1

INDEX MATCH올바른 접근 방식이므로 구조화 방법에 주의해야 합니다.

왼쪽의 테이블 A. 오른쪽 테이블 B. [고객 번호]를 사용하여 [우편번호]를 조회하겠습니다.

작성하는 공식은 다음과 같습니다 D2.

=INDEX(TableB,MATCH([@[Customer Number]],TableB[Customer Number],0),MATCH(D$1,TableB[#Headers],0))

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

INDEX는 아시다시피 행과 열의 교차점에 있는 셀의 값을 반환합니다. MATCH배열에 있는 값의 상대 위치를 반환합니다.

따라서 에 대한 두 개의 입력에 대해 INDEX먼저 우리가 사용하는 조회 값(고객 번호)(이것은 전통적인 전반부임 INDEX MATCH) 과 일치하는 소스 테이블의 행 번호를 찾아 MATCH수직 배열을 입력하여 찾습니다. MATCH소스 열의 헤더 행으로 구성된 수평 배열을 공급하여 현재 있는 열의 이름과 일치하는 열 번호를 찾습니다 .

원본 테이블에 필드를 추가하고 수식 테이블의 머리글을 변경하면 수식을 변경하지 않고도 새 결과를 얻을 수 있습니다.

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

..그리고 이 공식은 아래뿐만 아니라 가로로도 복사됩니다.

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

여기에 있는 두 가지 키는 다음과 같습니다.

  • MATCH가 아래로 계산될 뿐만 아니라 가로로 계산된다는 것을 알고 있습니다.
  • Excel에서 제공하는 구조적 참조를 실제 R1C1 스타일 셀 참조로 수동으로 변경하여 해당 셀 참조의 열 인덱스를 고정이 아닌 동적으로 만들 수 있습니다 TableA[[#Headers],[Post Code]]. 필드에 있으므로 복사할 수 없습니다. 단, 조회 수식이 있는 열의 이름을 수동으로 변경하는 경우에는 작동하며 대상 테이블에 조회 필드가 하나만 있으면 됩니다.) .

주의이 질문이 3년이 넘었다는 것을 알고 있지만 좋은 질문이고 기술의 다양성을 보여주는 훌륭한 질문입니다 INDEX MATCH.

관련 정보