À l'aide de l'Index et de la Correspondance dans Excel VBA fonction Recherchev

J'ai une formule excel que j'utilise souvent un VLookup. Il a intégré Index/Match que donne la dernière valeur numérique dans le "M" de la Colonne.

La formule de Feuille de calcul est: est-ce

=VLOOKUP(INDEX($M$10:$M75,MATCH(9.99999999999999E+307,$M$10:$M75)),Data,4)

Cellule $M75 étant la cellule de la ligne cette formule est en. Il y a numérique, non-numériques et des cellules vides dans la Colonne M, mais l'ID est que je veux toujours numérique.

Donc je suis en train d'écrire une fonction personnalisée qui permettez-moi de simplement écrire =current()

Voici ce que j'ai:

Function Current()
  Dim LookupRange As Variant
  Dim indexVar As Variant
  LookupRange = Range("$M$1:M" & ActiveCell.Row)
  indexVar = Application.Index(Range(LookupRange), Application.Match(9.99999999999999E+307, Range(LookupRange)))
  Current = Application.WorksheetFunction.VLookup(indexVar, Worksheets("Info").Range("Data"), 4)
End Function

J'ai essayé en utilisant différents types de variables (String, Long, Variant) mais je n'arrive pas à obtenir la fonction de travail.

Je ne sais pas si c'est assez d'infos, mais quelqu'un peut voir si il me manque quelque chose?

Je ne reçois #VALUE!

À l'aide d'Excel 2013 sur Windows 7

  • Avant d'aller en VBA, est votre excel fonction retournant des résultats corrects?
  • Étape par le biais de votre code et de déterminer 1) est la valeur affectée à LookupRange correct? 2) est la valeur affectée à indexVar correct?
  • Ma formule d'origine fonctionne correctement.
  • Mon LookupRange montre la plage correcte si je fais une chaîne de caractères. Et si je fais la indexVar une chaîne de caractères et utiliser une macro pour insérer une formule recherchev dans une cellule sur ma feuille il donne le bon numéro d'identification. Mais les Chaînes ne fonctionne pas quand j'essaie de faire la Recherchev dans VBA.
  • OK permettez-moi d'essayer quelques choses...
  • LookupRange est un tableau de type variant. Cela permettra d'amasser une Type Mismatch dans l'attribution de indexVar... Si je Dim LookupRange As String j'ai aussi une Type Mismatch erreur.

InformationsquelleAutor Brad | 2013-09-29