J'utilise actuellement MATCH()
dans Excel 2016 des colonnes de formules telles que:
= MATCH( [@[ITEM_CODE]], IM_PURCH_VENDOR_SUBLIST[[#All],[ITEM-CODE]], 0 )
Le résultat est essentiellement une clé étrangère. Il est utilisé dans d'autres colonnes avec INDEX()
ou OFFSET()
expressions pour associer la ligne en cours à la ligne correspondante dans l'autre table.
Certaines valeurs de recherche contiennent des signes de ponctuation, y compris les caractères génériques spéciaux *
, ?
et ~
. Cela provoque une correspondance involontaire. Un exemple réel est le code d'article *XA1
, qui correspond involontairement au code d'article 1SC0021REXA1
dans l'autre table.
Ma solution actuelle pour l'exemple ci-dessus est la suivante:
= MATCH(
SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( [@[ITEM_CODE]], "~", "~~" ), "*", "~*" ), "?", "~?" ),
IM_PURCH_VENDOR_SUBLIST[[#All],[ITEM-CODE]],
0
)
Qu'est-ce que je n'aime pas? Il est facile d'oublier lors de l' écriture des INDEX(MATCH())
expressions, facile de se tromper (questions d'ordre), et tout simplement maladroit et difficile à lire. Toutefois, je n'ai pas trouvé d' MATCH()
alternative ne comportant pas de caractère générique , ni même un moyen de simplifier l'expression de substitution, sans créer davantage de complexité ailleurs, telle que l'écriture d'une fonction personnalisée dans VBA.
[ITEM_CODE]=IM_PURCH_VENDOR_SUBLIST[[#All],[ITEM-CODE]]
me ressemble à une formule matricielle. Mais cela ne nécessite pas de CST?