2011-09-28 10 views
2

J'ai tout essayé et je n'arrive pas à l'obtenir. Essayer de remplacer les valeurs de la ligne B (SiteTag) d'une feuille de calcul par le sitetag approprié d'une correspondance d'index dans une autre feuille de calcul.Excel 2010 index match VBA

Feuille de travail (Site_Visit) SiteTag AL27 AS26 GBEM4 ...

Feuille de travail (Sites) SiteTagNom du projet 203AL27 AL27 203AS26 AS26 201GBEM4 GBEM4 ... ...

Je dois remplacer les valeurs SiteTag dans Sheets ("Site_Visit") avec le SiteTag approprié de Sheets ("Sites"). Pour l'instant j'ai simplement essayé d'obtenir le code pour placer la valeur d'index correcte dans une variable dans laquelle je placerai comme valeur pour chaque cellule, et l'exécuterai dans une boucle. Mais pour la vie de moi ne peut pas l'obtenir pour avoir une valeur. C'est ce que j'ai essayé pour la variable (tout a été déclaré).

ST_Cells2 = Application.WorksheetFunction.Index("Sites!A2:A34", Application.WorksheetFunction.Match("Site_Visit!B2", "Sites!B2:B34", 0), 0) 

Où "Sites A2: A34" est la plage de la valeur de remplacement appropriée "Sites B2: B34" "! Sites_Visit B2" est la valeur de recherche est la plage de recherche

I Je reçois une erreur d'exécution '1004' Unable to get the Match property of the WroksheetFunction class. Quelqu'un a des idées?

Répondre

4

Les fonctions Index et Correspondance attendent des plages, mais vous leur envoyez des chaînes. La façon de tourner plus facile des chaînes dans des plages est d'utiliser la fonction Range Excel:

st_cells2 = Application.WorksheetFunction.Index(Range("Sites!A2:A34"), Application.WorksheetFunction.Match(Range("Site_Visit!B2"), Range("Sites!B2:B34"), 0), 0) 
+1

Quelqu'un vous êtes mon héros. Je travaille sur ce sujet depuis deux jours et je jure que j'ai essayé la fonction Range à un moment donné. Cela a totalement fait ma journée! Merci. –

+0

Salut, je viens à cette question aussi, mais j'ai plusieurs critères. Comment puis-je y parvenir? – useR

+0

@useR Je n'utilise pas Excel depuis longtemps (je vis maintenant dans le monde Linux et apprécie chaque instant), donc je vais devoir vous rediriger vers l'article de Microsoft à ce sujet - https: // support.microsoft.com/en-us/kb/59482 –

0

J'ai eu la même erreur, mais il fonctionne ok quand je l'ai changé pour « Application » indstead de WorksheetFunction:

Cells(12, 12).Value = Application.Index("Sheet1!B1:9", 2)

D'une manière ou d'une autre la fonction de l'application a fonctionné directement ... /K