Obtendo um resultado de array de volta da correspondência de índice

1

Portanto, um pouco diferente da maioria das questões de matriz de correspondência de índice

Eu tenho uma tabela de movimentos de A para B. Eu posso ter movimento Tipo 1, Tipo 2, Tipo 3 ou Tipo 4.

Cada um desses movimentos corresponde a um conjunto diferente de "Etapas de preenchimento". Estes seriam o Passo 1, o Passo 2 ou o Passo 3.

Esse relacionamento é capturado em uma tabela limpa, assim:

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

Onde a 1 é "Sim, eles estão relacionados" e a 0 é "Não, eles não são".

Agora, há uma subetapa na tabela de passos, assim:

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

Agora, tenho uma tabela de subetapas e quantas subetapas eu preciso fazer. Eu tenho uma tabela de movimentos e quantas unidades de movimentos estão sendo movidas de A para B. Estou tentando descobrir quantas unidades precisam ser adicionadas a cada subpasso.

Por exemplo:

Se eu tiver o tipo de movimento 1 para 100 unidades, precisarei adicionar 100 unidades à subetapa 1 a 6. Se eu tiver o tipo de movimento 2 para 200 unidades, precisarei adicionar outras 200 unidades ao subpasso 1-6, para um total de 300 unidades movidas e, em seguida, 200 unidades adicionadas às subetapas 7-9.

Eu descobri que um sumproduct é provavelmente a melhor maneira de fazer isso. Atualmente, a primeira parte é assim:

=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]]))

No entanto, a parte que não está funcionando é a (INDEX(MovementToStepLookup[Roll up Step],MATCH(UnitMovementWorksheetCurrent[Movement Type],MovementToStepLookup[Movement Number],0))=[@[Roll up Step]])) - eu esperaria obter uma matriz VERDADEIRA / FALSA, mas em vez disso, recebo um erro de #VALUE. O Index propriamente me dá o array, o Match gera apropriadamente um array, ao mesclar os dois (ao percorrer) ele só me dá um número como resultado, ao invés de um array de números, então ele está me dando (Por exemplo) { 1} = 1, então, um único VERDADEIRO.

Isso funciona quando estou percorrendo a fórmula, mas quando realço tudo para calcular, só me dá #VALUE. Então eu suponho que eu tenho duas perguntas (Realmente, a única questão é como obter meus dados, mas quebrando um pouco ...):

1) Como faço para que minha correspondência de índice retorne um resultado de matriz?
2) O que estou fazendo de errado na minha fórmula?

    
por Selkie 07.08.2018 / 19:39

1 resposta

0

Então, depois de muito mais googling, a resposta é estranha e contra-intuitiva, e até o momento da escrita, eu não conheço todas as razões pelas quais ele funciona, apenas que (parece estar!) funcionando.

Eu já tinha cometido um erro quando comecei a fazer o rollup e comparei isso. Isso estava incorreto, eu precisava puxar para fora se fosse usado ou não. A partida mudou um pouco para refletir isso.

A maneira de coagir o Index a retornar vários resultados parece ser dupla: 1) Para ter uma instrução condicional, 2) Para ter a função N, assim:

INDEX (MovementToStepLookup [Usado?], N (SE (VERDADEIRO, CORRESP) (UnitMovementWorksheetCurrent [Tipo de Movimento], MovementToStepLookup [Número de Movimento] * (MovementToStepLookup [Roll Up Step] = [@ [Roll Up Step]]), 0 ))))

Para o meu condicional, eu só tinha como TRUE. Por que se preocupar com algo mais complexo? Para o N, simplesmente passe o array para ele.

Eu não tenho idéia porque isso funciona. O (artigo muito melhor) explicando como fazê-lo diz que não tem certeza do porquê. Mais leitura pode ser encontrada aqui: link . No entanto, funciona, por isso estou feliz

    
por 07.08.2018 / 21:29