Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
812to816
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
812to816
812to816
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Zeilen kopieren wenn bestimmte Werte vorhanden sin

Zeilen kopieren wenn bestimmte Werte vorhanden sin
30.10.2006 14:02:31
Kai
Hallo,
ich habe zwar schon ein wenig im Archiv gesucht und auch teilweise Beiträge gefunden, jedoch lösen diese nicht zu 100% meine Frage.
Ich einem Tabellenblatt habe ich mehrere Konfigurationsmöglichkeiten für Serversysteme aufgelistet. Die Spalten gehen von A bis I, wobei die Spalten C bis F ausgeblendet sind. Nun möchte ich gerne, dass wenn in Spalte G ein Wert größer als 0 hinterlegt wird, Excel nach den anklicken eines Buttons die Zeilen durchsucht und falls in Spalte G ein Wert größer als 0 vorhanden ist, diese Zeile in ein neues Tabellenblatt kopiert werden. Dabei sollen die eingefügten Zeilen jedoch nicht ab Zeile 1 eingefügt werden sondern erst ab Zeile 13.
Bzgl. den ausgeblendeten Zeilen gäbe es zwei Möglichkeiten: entweder sie werden mitkopiert, müssen dann aber wieder ausgeblendet werden oder sie werden nicht mitkopiert. Jenachdem was einfacher wäre.
Gibt es hierfür eine Möglichkeit dies mit einem Makro zu erledigen?
Schon mal vielen Dank im voraus.
Gruß
Kai

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeilen kopieren wenn bestimmte Werte vorhanden sin
30.10.2006 14:47:48
Stefan
Hallo Kai,
du must hierzu eine Schleife programmieren (hoffe du kannst ein wenig VBA, den ich habs auch nur so mittelmäßig drauf)
dim i as string
dim h as string
sheets ("tabelle1").activate
for I=1 to 10000(würde bis zeile 10000 arbeiten, es gibt auch auch eine Funktion, die anch der letzten beschriebenen Zelle sucht)
if cells(7,1)="G"then
rows (1:1).copy
sheets ("tabelle2").activate
for H=13 to 10000 (funktion wie oben)
selection. paste
end if
next i
next H
Für das rüberkopieren ist es am besten, es mit dem Makrorecorder aufzuzeichnen und dann zu ändern
Wahrscheinlich must du am Makro noch etwas ändern, da ich es nicht probiert habe aus Zeitgründen, hoffe aber doch, dir geholfen zu haben.
Gruß
Stefan
Anzeige
AW: Zeilen kopieren wenn bestimmte Werte vorhanden sin
30.10.2006 15:38:44
IngGi
Hallo Kai, hallo Stefan,
ich hab mal ein Makro gebaut, das ein neues Tabellenblatt "Ziel" erstellt und die relevanten Zeilen aus dem Tabellenblatt "Quelle" dort hinein kopiert. Die Tabellenblattnamen musst du eben anpassen. Falls die Daten in ein bereits vorhandenes Tabellenblatt kopiert werden sollen, musst du einfach die beiden Zeilen nach der Variablendeklaration (Dim ...) löschen. Stefan, mit den Schleifen hast du völlig recht. Aber wenn du die zwei Schleifen so inneinander schachtelst wie bei dir, werden alle relevanten Zeilen 10000 mal in das andere Tabellenblatt rüberkopiert, wobei jede neu zu kopierende Zeile die 10000 Kopien der Vorgängerzeile überschreibt. Schau dir das noch mal genau an.


Sub Zeilen_kopieren()
Dim Zeile As Long
Worksheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Name = "Ziel"
With Sheets("Quelle")
   For Zeile = 1 To .Range("G65536").End(xlUp).Row
      If .Cells(Zeile, 7) > 0 Then
         .Cells(Zeile, 7).EntireRow.Copy
         If Sheets("Ziel").Range("A13") = "" Then
            Sheets("Ziel").Range("A13").PasteSpecial Paste:=xlPasteAll
         Else
            Sheets("Ziel").Range("A65536").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteAll
         End If
      End If
   Next 'Zeile
End With
End Sub


Gruß Ingolf
Anzeige
AW: Zeilen kopieren wenn bestimmte Werte vorhanden
30.10.2006 17:01:19
Kai
Hallo Ingolf,
super. Dein Makro fuktioniert soweit bei mir. Jetzt noch eine Sache. Ich habe dem Makro noch folgende Zeilen hinzugefügt
Sheets("Auftrag").Select
Columns("C:F").Select
Selection.EntireColumn.Hidden = True
Range("A1").Select
Ich möchte nämlich, dass im Zielblatt die Spalten ausgeblendet werden und Excel in eine beliebige Zelle springt (in diesem Fall habe ich jetzt einfach mal A1 genommen). Beim Ausführen erhalte ich nun folgende Meldung:
Laufzeitfehler 1004
Die Select-Methode des Range-Objektes konnte nicht ausgeführt werden.
und er markiert die Zeile
Columns("C:F").Select
Was müsste ich hier noch ändern?
Nochmal danke und einen schönen Abend noch.
Gruß
Kai
Anzeige
AW: Zeilen kopieren wenn bestimmte Werte vorhanden
30.10.2006 17:19:38
Kai
Hallo,
ferner bräuchte ich noch die Möglichkeit, dass das "Quelltabellenblatt" und weitere Tabellenblätter bis auf das "Zieltabellenblatt" ohne Abfrage gelöscht werden.
Gruß
Kai
AW: Zeilen kopieren wenn bestimmte Werte vorhanden
30.10.2006 17:33:54
IngGi
Hallo Kai,
alle Tabellenblätter mit Ausnahme von "Auftrag"? Dann so:
Dim wks As Worksheet
For Each wks In ActiveWorkbook.Worksheets
Application.DisplayAlerts = False
wks.Delete
Application.DisplayAlerts = True
Next 'wks
Gruß Ingolf
AW: Zeilen kopieren wenn bestimmte Werte vorhanden
30.10.2006 17:29:42
IngGi
Hallo Kai,
versuch' mal folgendes an Stelle der vier Zeilen:
With Sheets("Auftrag")
.Columns("C:F").EntireColumn.Hidden = True
.Activate
.Range("A1").Select
End With
Gruß Ingolf
Anzeige
AW: Zeilen kopieren wenn bestimmte Werte vorhanden
30.10.2006 17:36:37
Kai
Hi,
danke nochmal für die schnelle Hilfe.
Es klappt nun soweit alles wie es soll ;o)
Gruß
Kai
AW: Zeilen kopieren wenn bestimmte Werte vorhanden
02.11.2006 15:05:42
Kai
Hi,
ich muss jetzt doch noch einmal stören, da sich noch eine Änderung ergeben hat. Da in der ersten Spalte noch ein Text hinterlegt ist, welcher nicht mitkopiert werden soll, liegt der Bereich nicht A bis I sondern B bis H. Wie müsste ich das Makro ändern?
Vielen Dank im voraus.
Gruß
Kai
AW: Zeilen kopieren wenn bestimmte Werte vorhanden
03.11.2006 07:40:41
Kai
Hatte vergessen die Frage noch als offen zu kennzeichnen.
AW: Zeilen kopieren wenn bestimmte Werte vorhanden
03.11.2006 10:56:29
IngGi
Hallo Kai,
bezogen auf mein ursprüngliches Makro würde das dann so aussehen:


Sub Zeilen_kopieren()
Dim Zeile As Long
Worksheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Name = "Ziel"
With Sheets("Quelle")
   For Zeile = 1 To .Range("G65536").End(xlUp).Row
      If .Cells(Zeile, 7) > 0 Then
         .Range(.Cells(Zeile, 2), .Cells(Zeile, 8)).Copy
         If Sheets("Ziel").Range("B13") = "" Then
            Sheets("Ziel").Range("B13").PasteSpecial Paste:=xlPasteAll
         Else
            Sheets("Ziel").Range("B65536").End(xlUp).Offset(1, 0) _
               .PasteSpecial Paste:=xlPasteAll
         End If
      End If
   Next 'Zeile
End With
End Sub


Die Namen der Tabellenblätter musst du natürlich wieder anpassen.
Gruß Ingolf
Anzeige
AW: Zeilen kopieren wenn bestimmte Werte vorhanden
03.11.2006 11:27:45
Kai
Hallo Ingolf,
danke nochmal. Hab die Zellen im Code noch etwas angepasst. Hab' mich da wohl blöd ausgedrückt. Aber es funktioniert und mittlerweile denke ich, verstehe ich auch ein wenig von dem Code.
Wünsch dir noch ein schönes Wochenende.
Gruß
Kai

314 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige