Comment attribuer une clé en fonction du nombre de clés disponibles et de la valeur de l'indicateur?

0

J'ai besoin d'aide pour écrire une formule qui effectue les tâches suivantes:

  1. Regarde si un indicateur = 1
  2. Si indicateur = 1, recherchez la valeur de clé en fonction du nombre disponible pour cette clé particulière.
  3. Continuez à rechercher des valeurs supplémentaires en utilisant l'historique des clés utilisées pour cette ligne particulière
  4. Réinitialiser et répéter pour la ligne suivante

Par exemple:

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  

La formule que je dois écrire concerne la section "Clé correspondante".

Lecture de la rangée 4 à gauche:

  • U1 et U3 ont tous les deux des indicateurs, je vais donc dans le tableau Chiffres clés pour trouver que j'ai 1 B et un D
  • U1 dans "Matched Key" obtient "B" comme clé et U3 dans "Matched Key" obtient D. U2 ne reçoit aucune valeur car son indicateur est défini sur 0.

Au rang 5:

  • U1, U2 et U3 nécessitent tous une affectation de clé.
  • Je regarde dans "Key Counts" et vois que j'ai 2 A et 1 D.
  • U1 et U2 obtiennent les A et U3 un des D (il en restera un).
mrkb80
la source
Pourquoi U2 est-il assigné A dans la rangée 5?
Petr Fedorov
J'ai 2 "A" clés disponibles dans la rangée 5, la priorité d'attribution des clés fonctionne de gauche à droite. Donc, d’abord, je vais utiliser tous les A disponibles, puis les B, etc.
mrkb80
@ mrkb80 Veuillez modifier votre formule dans la question.
Excellll

Réponses:

0

J'ai pu répondre à ma propre question à l'aide de formules matricielles (cette formule concerne la cellule 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())}

J'ai dû ajouter une autre "matrice" pour les comptes cumulés (qui se situe dans la plage 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

Autres façons de peau ce chat, mais cela fonctionne pour moi.

mrkb80
la source