Como atribuir uma chave com base na contagem de chaves disponíveis e no valor do indicador?

0

Preciso de ajuda para escrever uma fórmula que faça o seguinte:

  1. Procura ver se um indicador = 1
  2. Se o indicador = 1, procure o valor da chave com base no número disponível para essa chave específica
  3. Continue pesquisando valores adicionais, usando o histórico das chaves usadas para essa linha específica
  4. Redefinir e repetir para a próxima linha

Como um exemplo:

COLUMN   A      B   C   D       E       F   G   H       I       J   K   L   M
         Row    Indicators      |       Matched Key     |       Key Counts          
           3    U1  U2  U3      |       U1  U2  U3      |       A   B   C   D
           4    1   0   1       |       B   N/A D       |       0   1   0   1   
           5    1   1   1       |       A   A   D       |       2   0   0   2  

A fórmula que preciso escrever é para a seção "Chave correspondente".

Lendo a linha 4 da esquerda:

  • U1 e U3 têm indicadores, então eu chego à tabela Contagens de Chaves e descobri que tenho 1 B e um D
  • U1 em "Chave Combinada" recebe "B" como chave e U3 em "Chave Combinada" recebe D. U2 não recebe nenhum valor, pois seu indicador está definido como 0.

Na linha 5:

  • U1, U2 e U3 todos requerem atribuição de teclas.
  • Olho em "Principais contagens" e vejo que tenho 2 A e 1 D.
  • U1 e U2 recebem os A's e U3 obtém um dos Ds (haverá um restante).
mrkb80
fonte
Por que o U2 recebe A na linha 5?
Petr Fedorov
Eu tenho 2 contagens de teclas "A" disponíveis na linha 5, a prioridade de atribuir chaves funciona da esquerda para a direita. Então, primeiro vou usar todos disponíveis de um, então B do, etc.
mrkb80
@ mrkb80 Por favor, edite sua fórmula na pergunta.
precisa saber é o seguinte

Respostas:

0

Consegui responder minha própria pergunta usando fórmulas de matriz (essa fórmula é para a célula H4):

{=IF(D4=1,OFFSET($I$2,0,COLUMN(INDEX(OFFSET($J$4,0, ( (MIN(IF((J4:M4>=1) *(J4:M4<>0)*(O4:R4>=SUM(B4:D4)),COLUMN(J4:M4)))-1))-COLUMN($I$2) ):$N$4,MATCH(TRUE,OFFSET($J$4,0,  ( (MIN(IF((J4:M4>=1) *(J4:M4<>0)*(O4:R4>=SUM(B4:D4)),COLUMN(J4:M4)))-1))-COLUMN($I$2)  ):$N$4>=1,0)))-COLUMN($I$4)),NA())}

Eu tive que adicionar mais uma "matriz", que é para contagens cumulativas (que está no intervalo O4: R5):

COLUMN  N     O    P   Q    R
        Row   Cumulative Counts         
          3    A    B   C   D
          4    1    2   4   4
          5    2    2   2   3

Outras maneiras de esfolar esse gato, mas isso funciona para mim.

mrkb80
fonte