2017-05-12 5 views
2

Ich versuche, einen Prozess zu automatisieren, die gegen Berichte vom Typ Y. Überprüfung mehrerer Berichte vom Typ X beinhaltetExcel vlookup mit absoluten und relativen Referenzen sowie eine variable

Ich bin ein Makro zu schreiben irrelevante Daten zu löschen und Fügen Sie Daten aus Bericht X in Spalten A: O und Daten aus Bericht Y in Spalten AB: AF ein. Sowohl X als auch Y können variable Längen haben.

Ich möchte vlookup verwenden, um Bericht Y (Spalte AB) für Übereinstimmungen in Spalte O zu überprüfen, und geben Sie entweder den entsprechenden Wert in der 5. Spalte von Bericht Y (Spalte AE) zurück, oder wenn der Wert in Spalte 0 nicht ist t gefunden, zurück "Missing!".

Wenn dies ein Einzelnutzung wäre, würde ich die Formel unten in Excel verwenden und automatisch füllen sie manuell:

=IFERROR(VLOOKUP(O2,AB$2:AE$60,2,FALSE),"MISSING!")

Aber ich tun möchte der Lage sein, dies zu tun, in Verbindung mit vielen anderen Aufgaben in VBA, wiederholt für viele Berichte variabler Länge. Hier ist, was ich für Code haben bisher:

Range("P2:P" & lastRowX).Formula = _ 
    "=IFERROR(VLOOKUP(O2,AB$2:AE"&lastrowY&",2,FALSE),""MISSING!"")" 

wo lastRowX eine Integer-Variable für die letzte Zeile von Daten aus Report X und lastRowY ist die letzte Zeile des Berichts Y. VBA wird nicht einmal lassen Sie mich es kompilieren , geben Sie mir "Kompilierfehler: Erwartet: Ende der Anweisung".

Dieser Code funktioniert, aber es erlaubt mir nicht, mit unterschiedlichen Längen von Y zu arbeiten:

Range("P2:P" & lastRowX).Formula = _ 
    "=IFERROR(VLOOKUP(O2,AB$2:AE$60,2,FALSE),""MISSING!"")" 

Irgendwelche Ideen, wo ich falsch gegangen sind oder, wie dies besser machen? Vielen Dank!

+0

http://StackOverflow.com/a/42800024/4539709 – 0m3r

Antwort

1

Ich rätselte darüber und suchte das Internet den ganzen Nachmittag nach Antworten dafür. Kurz nach der Veröffentlichung erkannte ich meine eigenen Fehler: Sie müssen Räume vor und nach den Et-Zeichen ('&'), etwa so:

Range ("P2: P" & lastRowX) .Formula = _ „= IFERROR (VLOOKUP (O2, AB $ 2: AE "& lastRowY &", 2, FALSCH) "! FEHLT """)“

ich wie ein Idiot fühlen aber meine Frage im Fall lassen sie es anderen hilft. Oh!

+1

Sind Sie sicher, dass Sie lastRowSF wachsen möchten, während die Formel ausgefüllt ist? Vielleicht sollte es "AB $ 2: AE $" & lastRowSF' sein – Jeeped