eine ganze Zeile kopieren wenn Bdingung erfüllt ist. Excel?
Hallo, ich bastel mal wieder an einer excel liste rum. Ich möchte gerne eine ganze zeile aus dem Tabellenblatt "eingabe" in ein anderes Tabellenblatt "Irlbach" kopieren, wenn in der Spalte 4 ("D") "Irlbach" drin steht. einzelne Zellen kopieren bringe ich hin aber eine ganze zeile zu kopieren irgenwie nicht. Ich weis jetzt nicht ob es sinnvoll ist dann die ganze zeile oder nur die 5 zellen mit daten zu kopieren.
2 Antworten
Da würde ich mir am besten ein Makro für verwenden, denn mit Formeln musst du nicht nur die Zeile 1:1 übertragen, sondern auch die Lücken schließen, die in den Zeilen entstehen, in denen nicht Irlbach steht.
Sub ExtrahiereIrlbach() Dim i, j As Integer Dim wsQuelle, wsIrlbach As Worksheet Set wsIrlbach = Worksheets("Irlbach") Set wsQuelle = Worksheets(1) i = 1: j = 1 While wsQuelle.Range("D" & i).Value <> "" If LCase(wsQuelle.Range("D" & i).Value) = "irlbach" Then wsQuelle.Rows(i).Copy wsIrlbach.Rows(j) j = j + 1 End If i = i + 1 Wend End Sub
Das kann man natürlich noch abstrahieren.
das ist eine super lösung :) so kurz und macht alles was ich will.
Danke für die HA.
Klar, dann verbindest du die Bedingungen einfach mit And.
If D = SK And E = LP Then
'...
End If
und was muss ich ändern wenn alle anderen außer Irlbach in der Liste Gast kopiert werden soll? bzw kann man das in ein befehl zusammen machen? wenn Irbach steht dann in die liste Irlbach und wenn irlbach nicht drin steht sondern z.b. grünthal dann soll die besagte zeile nach Gast kopiert werden?
Der Code ist ausbaufähig. Wenn alles, was nicht Irlbach ist, nach Gast soll, ist die Änderung kleiner, als wenn du für jeden möglichen Wert ein Tabellenblatt ansteuern willst oder gar dynamisch solche erzeugen willst.
Lösung mit allem Nicht-Irlbach nach Gast:
Sub ExtrahiereIrlbach() Dim i, j, k As Integer Dim wsQuelle, wsIrlbach, wsGast As Worksheet Set wsGast = Worksheets("Gast") Set wsIrlbach = Worksheets("Irlbach") Set wsQuelle = Worksheets(1) i = 1: j = 1: k = 1 While wsQuelle.Range("D" & i).Value <> "" If LCase(wsQuelle.Range("D" & i).Value) = "irlbach" Then wsQuelle.Rows(i).Copy wsIrlbach.Rows(j) j = j + 1 Else wsQuelle.Rows(i).Copy wsGast.Rows(k) k = k + 1 End If i = i + 1 Wend End Sub
Verwende zunächst einen (Auto)Filter für Spalte D, die du dann nach "Irlbach" filterst. Jetzt kannst du den ganzen Bereich markieren und in das neue Tabellenblatt einfügen.
Wenn du eine ganze Zeile kopieren möchtest, markierst du sie, indem du den Zeilenkopf links anklickst.
ist es mit diesem makro auch möglich wenn zwei Bedingungen erfüllt sein müssen? zb. D=SK und E=LP ?