Excel 다중 테이블 조회, 더 우아한 솔루션을 찾을 수 있습니까?

Excel 다중 테이블 조회, 더 우아한 솔루션을 찾을 수 있습니까?

이것은 부분적으로 재미를 위한 것이며 주관적인 근거로 종결되지 않기를 바랍니다. "어떤 솔루션이 가장 우아한지"는 주관적이지만 "현재 솔루션은 복잡하고 추악합니다"는 모두가 쉽게 알 수 있기 때문입니다.

어쨌든 sheet1에는 다음과 같은 목록이 있습니다.

*Thing*            *type of thing*
Apple
Orange
Larceny
Cake
Banana
Murder

시트 2에서는 다음과 같습니다.

              fruit    confectionary      crime
Apple           x                                
Orange          x                                
Larceny                                     x    
Cake                         x                   
Banana          x                                
Murder                                      x   

시트 1의 B열을 이렇게 반환하고 싶습니다.

*Thing*               *type of thing*                                   
Apple                 fruit                        
Orange                fruit                        
Larceny               crime                        
Cake                  confectinary               
Banana                fruit                        
Murder                crime                        

현재 솔루션을 답변으로 게시하겠습니다. 작동합니다. 그렇게 할게요...

이 문제에 어떻게 접근하시겠습니까?

답변1

내 해결책은 다음과 같습니다. Index+match를 사용하면 테이블의 값을 양방향으로 조회할 수 있습니다. 이는 일반 솔루션을 조정하여 x를 찾고 열 헤더를 반환합니다.

=INDEX($E$1:$G$1,MATCH("x",OFFSET($E$1:$G$1,MATCH(A2,$D$2:$D$7,0),),0))

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

보기 편하도록 모든 것을 한 장에 담았고, 기능도 좀 더 짧게 만들었습니다.

아래 Barry의 의견에 따르면 더 나은 옵션은 다른 인덱스 함수로 오프셋을 피하여 휘발성이 아닌 것입니다.

=INDEX($E$1:$G$1,MATCH("x",INDEX($E$2:$G$7,MATCH(A2,$D$2:$D$7,0),0),0))

답변2

현재 솔루션의 경우

=MATCH(A1,Sheet1!A1:A10,0)

B 열에서 sheet2의 항목이 포함된 행을 반환합니다. 여태까지는 그런대로 잘됐다. 그러나 시트 2의 해당 행 내에서 x의 위치를 ​​반환하고 올바른 단어를 제공하려면 간접 함수 내에서 연결된 문자열을 참조하는 R1C1을 사용하여 행 번호를 실제로 사용할 수 있는 참조로 변환하는 이 괴물이 있습니다. :

=IF(INDIRECT("sheet2!R"&B1&"C2",0)="X","fruit",IF(INDIRECT("sheet2!R"&B1&"C3",0)="X","confectionary",IF(INDIRECT("sheet2!R"&B1&"C4",0)="X","crime","ERROR")))

그런 다음 문자열은 "sheet2R[rownumber]C[column]"으로 평가되어 간접 참조(일반 참조로 변환)로 공급된 다음 if 문으로 이동하여 x의 존재를 관련 단어로 변환합니다.

답변3

여기에 제가 선호하는 솔루션이 있습니다. gtwebb와 비슷한 개념이지만(데이터가 그의 스크린샷과 같이 정렬되어 있다고 가정) 사용하지 않습니다 OFFSET(다른 옵션이 없을 때만 사용해야 한다고 생각합니다.휘발성 물질).

=INDEX($E$1:$G$1,MATCH("x",$E2:$G2,0))

관련 정보