Sub uebertragen() Dim i As Integer Dim letzte As Integer Dim erste As Integer
letzte = Sheets("Tabelle2").Cells(Rows.Count, 2).End(xlUp).Row erste = Sheets("Tabelle1").Cells(Rows.Count, 1).End(xlUp).Row + 1
With Sheets("Tabelle2") For i = 2 To letzte If .Cells(i, 2).Value = "nein" Then Sheets("Tabelle1").Range("A" & erste & ":J" & erste).Value = .Range("E" & i & ":N" & i).Value erste = erste + 1 End If Next i End With
Auch wenn Du eine funktionierende gute Formellösung hast: Aggregat ist bei großen Bereichen recht träge und imo nicht zu empfehlen. Warum nicht einfach Autofilter Spalte B = nein? oder erweiterter Filter mit entsprechendem Kriterienbereich?
Wenn es VBA sein soll/muss: Nutze ebenfalls den Autofilter und kopiere ab der ersten Werte-Zeile. Den Turbo zündest Du, indem Du vorher Spalte B sortierst, so dass der Filterbereich nicht fragmentiert ist.
Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
ich bekomme leider die Fehlermeldung "Index ist außerhalb des gültigen Bereichs".
Da meine Datei deutlich größer ist als das Beispiel, habe ich den Code wie folgt abgeändert:
Code:
Sub uebertragen() Dim i As Integer Dim letzte As Integer Dim erste As Integer
letzte = Sheets("Tabelle2").Cells(Rows.Count, 2).End(xlUp).Row erste = Sheets("Tabelle1").Cells(Rows.Count, 1).End(xlUp).Row + 1
With Sheets("Tabelle2") For i = 2 To letzte If .Cells(i, 2).Value = "nein" Then Sheets("Tabelle1").Range("A" & erste & ":Z" & erste).Value = .Range("E" & i & ":Z" & i).Value erste = erste + 1 End If Next i End With
End Sub
Da die ich mehr Spalten habe (bis "Z") habe ich das "N" jeweils durch das "Z" ersetzt. BG Fabian
(12.06.2018, 12:44)RPP63 schrieb: Auch wenn Du eine funktionierende gute Formellösung hast: Aggregat ist bei großen Bereichen recht träge und imo nicht zu empfehlen. ... Gruß Ralf
Hallo, dafür kann man ja eine Hilfsspalte einfügen (nach lupo1-Art) mit VERGLEICH() und dann superschnell mit INDEX()...
Gruß Jörg stolzes Mitglied im ----Excel-Verein Freund einer excellenten Power Query-Abfrage
Theoretisch ja, Jörg! Hier soll aber ja ein "gefiltertes" Ergebnis generiert werden. Die Vergleich-Spalte könnte man nach diesem Schema aufbauen: http://www.herber.de/excelformeln und bitte suchen .../formeln.html?welcher=224 Trotz Zählenwenn() dürfte (natürlich die dritte, also die Index-Formel) dies schneller als Aggregat sein. Jetzt bin ich aber trotzdem zickig :21: und bleibe bei meiner Filterlösung nebst vorherigem Sortieren.
Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Ausnahmsweise mal ein Textbaustein: Ein Tabellenblatt kannst Du in plain Excel nur mit dem Namen, der auf dem "Tabellenreiter" steht ansprechen! Bei VBA gibt es drei Möglichkeiten:
Die .Name-Eigenschaft: Worksheets("Meine Tabelle").Range("A1") [steht in der Klammer]
Den Code-Name: Tabelle4.Range("A1") [vor der Klammer]
Den Index (lfd. Nr. des Sheets, von links mit 1 beginnend) Worksheets(4).Range("A1")
Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)