Excel: INDEX( ,MATCH( ), )) 조합은 범위에서 작동하지만 TABLE 형식의 데이터에서는 작동하지 않습니다.

Excel: INDEX( ,MATCH( ), )) 조합은 범위에서 작동하지만 TABLE 형식의 데이터에서는 작동하지 않습니다.

설정:

데이터가 포함된 두 개의 Excel 시트가 있습니다. 둘 다 "테이블 형식"입니다. 하나는 많은 행과 열(필드)로 구성된 대규모 데이터 세트이고, 다른 하나는 단 2개의 행과 2개의 열(필드)로 구성된 일종의 "사전"입니다.

1 번 테이블 (데이터 세트)

+----------------------------------------------------+
| month | week | productName | price     | sold pcs. |
+---------------------------------------------------+|
| jan   | 1    | heavy       | (formula) | 25        |
| jan   | 2    | heavy       | (formula) | 51        |
| jan   | 3    | heavy       | (formula) | 06        |
| jan   | 4    | heavy       | (formula) | 00        |
| jan   | 1    | light       | (formula) | 39        |
| jan   | 2    | light       | (formula) | 11        |
| jan   | 3    | light       | (formula) | 98        |

표2 (딕셔너리)

+---------------------+
| productName | price |
+---------------------+
|  heavy      | 125   |
|  light      | 65    |

내가 해야하는 것:

내가 해야 할 일은 값을 가져오는 것입니다(제품 가격)을 사전에서 대규모 데이터 세트로 가져옵니다. 여기서 특정 값(제품 이름) 성냥.

내가 시도한 것:

=INDEX(Table2[@price], MATCH(Table1[@productName], Table2[@productName], 0))

범위로 작업할 때 이 조합은 매우 효과적입니다. 그러나 이렇게 하면 데이터 형식이 테이블로 지정되어 Table1의 첫 번째 행에서만 일치합니다.

이것이 내가 얻은 결과입니다:

+-------------------------------------------------+
| month | week | productName | price  | sold pcs. |
+-------------------------------------------------+
| jan   | 1    | heavy       | 125    |  25       |
| jan   | 2    | heavy       | #N/A   |  51       |
| jan   | 3    | heavy       | #VALUE |  06       |
| jan   | 4    | heavy       | #VALUE |  00       |
| jan   | 1    | light       | #VALUE |  39       |
| jan   | 2    | light       | #VALUE |  11       |
| jan   | 3    | light       | #VALUE |  98       |

첫 번째 행이 제대로 일치하고 두 번째 행(역시 첫 번째 행과 동일)을 찾을 수 없으며 거기에서 오류 값이 시작됩니다. 어떻게 해야 하나요?

감사해요

답변1

명명된 범위를 잘못 사용하고 있습니다.

  • Table2[@productName]테이블의 단일 요소를 가리킵니다.
  • Table2[productName]전체 열을 가리킨다
  • Table2헤더를 제외한 테이블의 모든 열과 줄을 가리킵니다.

VLOOKUP을 사용하면 쉽게 할 수 있습니다.

=INDEX(Table2,MATCH([@productName],Table2[productName],0),MATCH("price",Table2[#Headers],0))

대체 솔루션:

=VLOOKUP([@productName],Table2,2,0)

=VLOOKUP([@productName],Table2,MATCH("price",Table2[#Headers]),0)

또는 각 productName이 고유한 경우 SUMIF를 사용할 수 있습니다.

=SUMIF(Table2[productName],[@productName],Table2[price])

답변2

이것은 당신에게 도움이 될 것입니다:

=INDEX(Table2[[#All],[Price]],MATCH([@productName],Table2[[#All],[ProductName]],0),1)

메모. #ALL을 사용하면 ROW뿐만 아니라 전체 열이 선택됩니다.

관련 정보