2009-08-07 7 views
0

J'ai un test commeComment faire correspondre un modèle générique de chaîne dans une macro Excel

LEFT('F13',2)='F1' 

Je veux changer d'un match côté gauche à un test qui prend en charge les caractères génériques

'F13'='F?3' 

Excel ne supporte pas regex sauf dans le code VBA mais je préférerais que cela soit fait dans une macro. Je tiens à souligner que le test réel n'est pas une chaîne simple, mais les références de cellule (cela peut être important, je ne suis pas sûr):

IF(LEFT($DATA.$A$2:$A$1501,LEN($B$3))=$B$3,... 

La gamme évalue en fait à une seule cellule en fonction de l'endroit où la la macro est appelée. $ B $ 3 est le motif entré par l'utilisateur.

+0

"Excel ne prend pas en charge regex sauf dans le code VBA mais je préférerais que cela soit fait dans une macro." Je suis confus: les macros sont écrites avec du code VBA. Voulez-vous dire que vous préférez une fonction/formule de feuille de calcul pure? – devuxer

+0

Je me suis mélangé avec l'accès je pense où les «macros» sont distinctes des «fonctions VBA». Je veux dire une formule oui. – SpliFF

Répondre

0

= SEARCH ("F 3?", "F13") = 1

Dans votre deuxième exemple, si B3 contient wildcards texte infusé

= SEARCH (B3, DATA $ $ A $ 2.: $ A $ 1501) = 1

SEARCH renvoie la position où il trouve le premier argument. Le "= 1" assure que la chaîne commence avec le premier argument, par opposition à quelque part au milieu. Je ne suis pas sûr de la façon dont votre argument $ DATA fonctionne, alors je l'ai simplement copié mot pour mot.

+0

$ DATA est une faute de frappe due à la copie de la fonction depuis Open Office (qui convertit les formules en StarBasic). Il devrait dire DATA! comme c'est une référence de feuille de calcul. – SpliFF

+0

Cette solution échoue car la recherche génère une erreur #VALUE lorsque la chaîne n'est pas trouvée. Cela casse toute la formule. Même chose avec FIND. Y a-t-il un moyen de tester #VALUE? – SpliFF

+0

ne importe pas. IF (NOT (ISERROR (TROUVER ($ B $ 3, DONNEES $ A $ 2: $ A $ 1501) = 1))) – SpliFF

Questions connexes