2017-12-30 42 views
-3

enter image description hereVBA Excel Kopieren Paste

Hallo, ich bin völlig neu in Excel VBA. Zuerst möchte ich die Daten kopieren, wenn die Bedingung erfüllt ist (kopiere Daten mit Bezug auf 144). Zweitens, vergleiche die Zellen, wenn es IT-Operationen (Tabelle1) zu IT-Operationen (Tabelle2), dann kopiere den Preis (Geld) nach Spalte F. Wenn die Variable nicht vorhanden ist, lassen Sie das Feld leer.

+1

Abgesehen von nicht zu verstehen, was Sie tun, gibt Ihre Frage absolut keine Hinweise auf, was das Problem Sie konfrontiert sind ist. – YowE3K

+0

Willkommen bei S.O! Hast du irgendwas probiert? Wenn ja, bitte, geben Sie den Code an. Schaut euch die [tour] (http://stackoverflow.com/tour) und [how to ask] (http://stackoverflow.com/help/how-to-ask) an. Freundliche Erinnerung: StackOverflow ist kein "Wir-Code für Sie" -Dienstanbieter. [Einführung in VBA] (https://blog.udemy.com/excel-macros-tutorial/) oder [Mid-Advanced Tutorials] (http://analysistabs.com/excel-vba/codes-examples-macros-how-tos-most-useful-basics-advanced/) und mein [persönlicher Favorit] (http://analystcave.com/excel-vba-tutorial/) – Sgdva

Antwort

0

Dies kann mit Formeln erfolgen. Hier ist eine Art zu denken, die Spalte F mit den Preisen für die übereinstimmenden Artikel in der Spalte E zu füllen, indem man die Nummer in der letzten Reihe in E (144 Total) anpasst; was ich annehmen soll ist E10 in diesem Fall.

Gesamtformel in F1, die Sie dann nach unten ziehen ist:

=IFERROR(IFERROR(VLOOKUP(E1,INDIRECT(CELL("address",OFFSET($H$1,MATCH(1*LEFT($E$10,FIND(" ",TRIM($E$10),1)-1),$G:$G,0)-1,,1,1))&":"&CELL("address",OFFSET($I$1,MATCH($E$10,$G:$G,0)-1,,1,1))),2,FALSE),VLOOKUP(E1,G:I,3,FALSE)),"") 

In den Schritten:

die Anzahl von Interesse Extract z.B. 144, und jeder nachlauf loszuwerden/führende Leerzeichen verwenden:

LEFT($E$10,FIND(" ",TRIM($E$10),1)-1) 

finden, welche Zeile dieser Wert in ist, da dies die erste Zeile des Lookup-Bereichs für diese Zahl sein wird. *1 wandelt Text in eine Zahl um.

MATCH(1*LEFT($E$10,FIND(" ",TRIM($E$10),1)-1),$G:$G,0) 

Dies gibt Zeile 9.

Wir etwas einfacher zu finden die letzte Zeile des Bereichs verwenden, die 144 Total

MATCH($E$10,$G:$G,0) 

Dies gibt Reihe hält 15. So kennen wir die Daten liegt zwischen den Zeilen 9 und 15 für 144.

Wir können dies in einen Bereich für die Verwendung in einem VLOOKUP mit INDIRECT und OFFSET drehen.

=CELL("address",OFFSET($G$1,MATCH(1*LEFT($E$10,FIND(" ",TRIM($E$10),1)-1),$G:$G,0)-1,,1,1))&":"&CELL("address",OFFSET($H$1,MATCH($E$10,$G:$G,0)-1,,1,1)) 

Dies gibt uns $G$9:$H$15. Beachten Sie Anpassungen von -1, setzen Sie OFFSET zurück in die rechte Reihe, und dass die OFFSET Startzellen in verschiedenen Spalten sind, um die für die VLOOKUP erforderlichen Spalten bereitzustellen.

So können wir nun Spalten E-Werte z.B. Enhancement, in unserem neu definierten Bereich, die über INDIRECT zugegriffen wird:

=VLOOKUP(E1,INDIRECT(CELL("address",OFFSET($H$1,MATCH(1*LEFT($E$10,FIND(" ",TRIM($E$10),1)-1),$G:$G,0)-1,,1,1))&":"&CELL("address",OFFSET($I$1,MATCH($E$10,$G:$G,0)-1,,1,1))),2,FALSE) 

Dies wird VLOOKUP(E1,$G$9:$H$15,2,FALSE) sagen, das heißt erhalten die price Spalte aus dem Bereich für die in E1 angegebene Element.

Wenn dies nicht gefunden wird, d. H. #N/A, können wir dies verwenden, um zuerst zu überprüfen, ob dies an der verbundenen Zelle liegt, die die 144 Total; wo der Wert tatsächlich in Spalte G nicht H ist, und verwenden Sie eine IFERROR zu sagen, wenn nicht in $G$9:$H$15 gefunden, dann versuchen Sie für eine Übereinstimmung mit Spalten G:I und Spalte 3 zurückgeben.

, die mit Pseudo-Formel, mit priorLookup als Platzhalter, für die in den Schritten oben beschriebenen Formel, wie folgt aussieht:

IFERROR(priorLookup, VLOOKUP(E1,G:I,3,FALSE)) 

Wenn dies noch #N/A gibt, wissen wir den Wert nicht vorhanden ist, und wir sollten zurückkehren "". Das können wir damit umgehen mit einem anderen IFERROR:

IFERROR(IFERROR(priorLookup, VLOOKUP(E1,G:I,3,FALSE)),"") 

uns die gesamte Formel zu Beginn angegeben So geben.

Hier ist es in dem Blatt verwendet wird:

Formula in sheet