2017-10-04 4 views
2

J'ai un grand ensemble de données avec plusieurs colonnes - chaque ligne a un type de cas et une valeur de contrat. Sur une autre feuille j'ai une table de mappage (montrée ci-dessous) des types de cas et des gammes de valeurs qui décident quel "Type" chaque rangée devrait être assignée aussi. Par exemple, une ligne avec le type de cas 1 et une valeur contractuelle de 20 000 000 $ serait de type 1 - une ligne avec Case type 3 d'une valeur de 4 000 000 serait de type 3 car elle se situe entre les valeurs du type 3 (N4 et O4)IF imbriqués Excel - Alternative

Je sais que je pourrais coder une instruction IF dans 14 colonnes auxiliaires à remplir pour chaque type de cas, puis combiner des cellules qui ne sont pas vides, mais j'aimerais savoir s'il existe une façon plus intelligente de le faire?

enter image description here

+1

Utiliser l'index avec deux correspondances; un avec 0 comme intervalle de recherche et un avec -1 comme distance de recherche. – Jeeped

+0

Quinn, avez-vous déjà trouvé une réponse utilisable à votre question? – TotsieMae

Répondre

0

Tout d'abord, l'en-tête de l'ensemble de données de table de correspondance doit être ajustée. Dissociez les cellules fusionnées et attribuez un titre à chaque colonne. Cela devrait se traduire par quelque chose de semblable à ceci:

example of header


J'ai ensuite créé une table de résultats sur une deuxième feuille qui ressemble à ceci:

results table


Il peut être grossièrement trop simplifié, mais j'espère que vous pouvez modifier la formule au besoin.

Maintenant, voici la formule créée en C2:

{=INDEX(MappingTable!$K$1:$S$1,1,SUMPRODUCT(IF(B2<INDIRECT("MappingTable!"&ADDRESS(MATCH($A2,MappingTable!$I$2:$I$15,0)+1,11)&":"&ADDRESS(MATCH($A2,MappingTable!$I$2:$I$15,0)+1,19)),1,0))+1)}

Note: Ceci est une formule de tableau et doit être engagé avecCtrl + Maj + Entrez. Les accolades - {} - qui entourent la formule ci-dessus ne seront pas entrées par l'utilisateur, mais seront créées une fois la formule validée comme décrit ci-dessus.

NOTES CLÉS:
B2 fera référence à la Contract Value dans votre tableau des résultats.

"MappingTable!" est une valeur codée en dur qui devrait être le nom de votre feuille plus le point d'exclamation à la fin.

$A2 référencera le Case Type dans votre tableau de résultats.

MappingTable!$I$2:$I$15 est une référence absolue aux en-têtes ligne sur la table de mappage.

11, qui se trouve dans la première fonction ADDRESS, est une référence à la colonne K de la feuille de calcul de la table de mappage. Il peut également être écrit comme COLUMN(K:K).

19, qui se trouve dans la deuxième fonction ADDRESS, est une référence à la colonne S sur la feuille de travail de la table de mappage. Il peut également être écrit comme COLUMN(S:S).