인덱스 일치에서 배열 결과를 다시 가져오기

인덱스 일치에서 배열 결과를 다시 가져오기

따라서 대부분의 인덱스 일치 배열 질문과는 약간 다릅니다.

A부터 B까지의 동작 테이블이 있습니다. 동작 유형 1, 유형 2, 유형 3 또는 유형 4를 가질 수 있습니다.

이러한 각 동작은 서로 다른 "롤업 단계" 세트에 해당합니다. 1단계, 2단계, 3단계가 됩니다.

이 관계는 다음과 같이 깔끔한 테이블에 캡처됩니다.

Step      Type   Relationship
Step 1 - Type 1 - 1
Step 2 - Type 1 - 0
Step 3 - Type 1 - 0
Step 1 - Type 2 - 1
Step 2 - Type 2 - 1
Step 3 - Type 2 - 0
Step 1 - Type 3 - 0
Step 2 - Type 3 - 0
Step 3 - Type 3 - 1
Step 1 - Type 4 - 1
Step 2 - Type 4 - 1
Step 3 - Type 4 - 1

여기서 1은 "예, 관련이 있습니다"이고 0은 "아니요, 관련이 없습니다"입니다.

이제 단계 테이블에 대한 하위 단계가 다음과 같습니다.

SubStep  --- Step
1             1
2             1
3             1
4             1
5             1
6             1
7             2
8             2
9             2
10            3
11            3
12            3

이제 하위 단계와 수행해야 할 하위 단계 수에 대한 테이블이 생겼습니다. 나는 동작 테이블을 가지고 있으며 A에서 B로 몇 개의 동작 단위가 이동되고 있는지를 알고 있습니다. 각 하위 단계에 몇 개의 단위를 추가해야 하는지 계산하려고 합니다.

예를 들어:

100단위에 대한 이동 유형 1이 있는 경우 하위 단계 1~6에 100단위를 추가해야 합니다. 200단위에 대한 이동 유형 2가 있는 경우 하위 단계 1~6에 200단위를 추가해야 합니다. , 총 300개의 단위가 이동된 후 하위 단계 7~9에 200개의 단위가 추가됩니다.

나는 sumproduct가 아마도 이 작업을 수행하는 가장 좋은 방법이라는 것을 알아냈습니다. 현재 첫 번째 부분은 다음과 같습니다.

=SUMPRODUCT(UnitMovementWorksheetCurrent[Units],--(UnitMovementWorksheetCurrent[Month]=[@Month]),--(UnitMovementWorksheetCurrent[Year]=[@Year]),--(UnitMovementWorksheetCurrent[From]=[@[Lab Abbr]]),--(INDEX(MovementToStepLookup[Roll up Step],MATCH(UnitMovementWorksheetCurrent[Movement Type],MovementToStepLookup[Movement Number],0))=[@[Roll up Step]]))

그러나 작동하지 않는 부분은 (INDEX(MovementToStepLookup[Roll up Step],MATCH(UnitMovementWorksheetCurrent[Movement Type],MovementToStepLookup[Movement Number],0))=[@[Roll up Step]]))TRUE/FALSE 배열을 얻으려고 했지만 대신 #VALUE 오류가 발생한다는 것입니다. Index는 나에게 배열을 올바르게 제공하고, Match는 배열을 올바르게 생성합니다. 두 개를 병합할 때(단계적으로 진행할 때) 결과적으로 숫자 배열 대신 하나의 숫자만 제공합니다. 그러면 나에게 제공됩니다(예를 들어) { 1} = 1이고 단일 TRUE입니다.

이는 수식을 단계별로 실행할 때 작동하지만 계산할 전체 항목을 강조 표시하면 #VALUE만 표시됩니다. 그래서 두 가지 질문이 있다고 가정합니다(실제로 유일한 질문은 내 데이터를 가져오는 방법이지만 데이터를 조금 세분화하는 것입니다...).

1) 배열 결과를 반환하기 위해 인덱스 일치를 어떻게 얻나요?
2) 내 수식에서 내가 뭘 잘못하고 있는 걸까요?

답변1

그래서 훨씬 더 많은 인터넷 검색을 한 후에는 대답이 이상하고 직관에 어긋나며, 글을 쓰는 시점에서 실제로 그것이 작동하는 이유를 모두 알지 못하고 단지 작동하는 것 같습니다(!).

이전에 롤업 단계를 꺼내서 비교하는 실수가 있었습니다. 그건 틀렸어요. 사용됐는지 안됐는지 뽑아내야 했어요. 이를 반영하기 위해 경기가 약간 변경되었습니다.

여러 결과를 반환하도록 Index를 강제하는 방법은 두 가지로 나타납니다. 1) 조건문을 사용하려면, 2) N 함수를 사용하려면 다음과 같이 하세요.

INDEX(MovementToStepLookup[사용?],N(IF(TRUE,MATCH(UnitMovementWorksheetCurrent[이동 유형],MovementToStepLookup[이동 번호]*(MovementToStepLookup[롤업 단계]=[@[롤업 단계]]),0))) )

내 조건의 경우 TRUE로 설정했습니다. 왜 더 복잡한 일을 하려고 합니까? N의 경우 간단히 배열을 전달하세요.

나는 이것이 왜 작동하는지 전혀 모릅니다. 이를 수행하는 방법을 설명하는 (훨씬 더 나은 기사)는 이유도 확실하지 않다고 말합니다. 더 많은 자료는 여기에서 찾을 수 있습니다:https://excelxor.com/2014/09/05/index-returning-an-array-of-values/. 그래도 효과가 있어서 다행이에요

관련 정보