Supportnet / Forum / Tabellenkalkulation
bestimmt Zeilen mit Makro in neues Tabellenblatt
Frage
Hallo zusammen,
ich möchte aus einer Tabelle mit Hilfe eines Makro´s Zeilen in ein neues, bereits vorhandenes Tabellenblatt (Fehlerprotokoll) kopieren.
Diese Zeilen sollen kopiert werden, wenn in der Spalte J eine "1" steht. Sie sollen dann in das "Fehlerprotokoll" von oben nach unten kopiert werden.
Die Reihenfolge ist dabei nicht wichtig.
Wer weiss eine Lösung?
PS: Ist es auch möglich nicht die ganze Zeile zu kopieren sondern nur bestimmte Felder?
MFG
Tobias
Antwort 1 von Saarbauer
Hallo
am besten die Tabelle in ein neues Blatt kopieren
und über das Blatt das nachfolgende Makro laufen lassen
Sub Finden()
´ Finden Makro
´ Makro am 04.07.2005 von Saarbauer
´Sheets("Bezeichnung Arbeitsblatt").Select
´Es wird vorausgesetzt, dass in Zeile 1 die Spaltennamen stehen und dass die zu überprüfenden Werte in Spalte j stehen.
Range("j2").Select
While IsEmpty(ActiveCell) = False
If ActiveCell.Value = 1 Then
Rows(ActiveCell.Row()).Select
ActiveCell.Offset(0, 9).Select
Selection.Delete
Else
ActiveCell.Offset(1, 0).Select
End If
End Sub
In der Spale J muß in jeder Zeile ein Wert stehen sonst funktioniert es nicht, da die Abfrage
While IsEmpty(ActiveCell) = False
auf leere Zeilen erfolgt
Gruß
Helmut
am besten die Tabelle in ein neues Blatt kopieren
und über das Blatt das nachfolgende Makro laufen lassen
Sub Finden()
´ Finden Makro
´ Makro am 04.07.2005 von Saarbauer
´Sheets("Bezeichnung Arbeitsblatt").Select
´Es wird vorausgesetzt, dass in Zeile 1 die Spaltennamen stehen und dass die zu überprüfenden Werte in Spalte j stehen.
Range("j2").Select
While IsEmpty(ActiveCell) = False
If ActiveCell.Value = 1 Then
Rows(ActiveCell.Row()).Select
ActiveCell.Offset(0, 9).Select
Selection.Delete
Else
ActiveCell.Offset(1, 0).Select
End If
End Sub
In der Spale J muß in jeder Zeile ein Wert stehen sonst funktioniert es nicht, da die Abfrage
While IsEmpty(ActiveCell) = False
auf leere Zeilen erfolgt
Gruß
Helmut
Antwort 2 von master-t
Morgen,
ich hab das gerade versucht und irgendwie geht es nicht.
Er zeigt als Fehlermeldung:
"Fehler beim Kompilieren
While ohne Wend"
Damit kann ich leider nicht viel mit anfangen.
Woran liegt das?
MFG Tobias
ich hab das gerade versucht und irgendwie geht es nicht.
Er zeigt als Fehlermeldung:
"Fehler beim Kompilieren
While ohne Wend"
Damit kann ich leider nicht viel mit anfangen.
Woran liegt das?
MFG Tobias
Antwort 3 von Saarbauer
Hallo,
leider ist mir beim Übertragen ein Fehler unterlaufen.
es ist einzufügen :
End If
Wend
End Sub
Gruß
Helmut
leider ist mir beim Übertragen ein Fehler unterlaufen.
es ist einzufügen :
End If
Wend
End Sub
Gruß
Helmut
Antwort 4 von master-t
HI,
funktioniert dieses Makro auch dann, wenn nicht nur Zahlen in der Spalte ist sondern auch Zahlen und Buchstaben zusammen?
Oder muss man es dan ganz anders machen?
MFG
Tobias
funktioniert dieses Makro auch dann, wenn nicht nur Zahlen in der Spalte ist sondern auch Zahlen und Buchstaben zusammen?
Oder muss man es dan ganz anders machen?
MFG
Tobias
Antwort 5 von Saarbauer
Hallo,
das ganze funktioniert unabhängig vom Inhalt der Spalte J, das Programm hört auf sobald in der Spalte J keine Angabe ist. Dies wird über diese Angaben gesteuert
While IsEmpty(ActiveCell) = False
........
Wend
Bei Auswertung nach anderen Kriterien ist fogendes zu ändern
If ActiveCell.Value = 1 Then
Die 1 ist durch den aktuellen wert zu ersetzen.
Gruß
Helmut
das ganze funktioniert unabhängig vom Inhalt der Spalte J, das Programm hört auf sobald in der Spalte J keine Angabe ist. Dies wird über diese Angaben gesteuert
While IsEmpty(ActiveCell) = False
........
Wend
Bei Auswertung nach anderen Kriterien ist fogendes zu ändern
If ActiveCell.Value = 1 Then
Die 1 ist durch den aktuellen wert zu ersetzen.
Gruß
Helmut
Antwort 6 von master-t
HI,
die Probleme scheinen bei mir ja gar nicht zu enden.
Ich bin jetzt soweit, dass ich 2 Spalten der Tabelle in ein neues Blatt kopiert habe und über die Spalte A ( in der nur 1 und 2 stehen) das Makro laufen lasse. Das funktioniert auch, nur löscht das Makro nicht die Zeilen in denen eine 2 steht. Das irritiert mich.
Woran könnte das liegen?
Liegt es vielleicht daran, dassich in der ersten Zeile keine Zahlen stehen habe sondern die Bezeichnung der Spalte?
So sieht es aus: Eingebunden in ein größeres Makro
Range("A2").Select
While IsEmpty(ActiveCell) = False
If ActiveCell.Value = 1 Then
Rows(ActiveCell.Row()).Select
ActiveCell.Offset(0, 9).Select
Selection.Delete
Else
ActiveCell.Offset(1, 0).Select
End If
Wend
MFG
Tobias
die Probleme scheinen bei mir ja gar nicht zu enden.
Ich bin jetzt soweit, dass ich 2 Spalten der Tabelle in ein neues Blatt kopiert habe und über die Spalte A ( in der nur 1 und 2 stehen) das Makro laufen lasse. Das funktioniert auch, nur löscht das Makro nicht die Zeilen in denen eine 2 steht. Das irritiert mich.
Woran könnte das liegen?
Liegt es vielleicht daran, dassich in der ersten Zeile keine Zahlen stehen habe sondern die Bezeichnung der Spalte?
So sieht es aus: Eingebunden in ein größeres Makro
Range("A2").Select
While IsEmpty(ActiveCell) = False
If ActiveCell.Value = 1 Then
Rows(ActiveCell.Row()).Select
ActiveCell.Offset(0, 9).Select
Selection.Delete
Else
ActiveCell.Offset(1, 0).Select
End If
Wend
MFG
Tobias
Antwort 7 von Saarbauer
Hallo,
siehe Antwort 5
Bei Auswertung nach anderen Kriterien ist fogendes zu ändern
If ActiveCell.Value = 1 Then
Die 1 ist durch den aktuellen Wert zu ersetzen.
Gruß
Helmut
siehe Antwort 5
Bei Auswertung nach anderen Kriterien ist fogendes zu ändern
If ActiveCell.Value = 1 Then
Die 1 ist durch den aktuellen Wert zu ersetzen.
Gruß
Helmut
Antwort 8 von master-t
Hi,
danke.
Aber warum löscht er die Zeilen mit einer 2 nicht.
Er geht nur bis zur ersten 1 und dann endet das Makro.
Kannst du dir das erklären?
Bin ich zu doof dafür?
MFG
Tobias
danke.
Aber warum löscht er die Zeilen mit einer 2 nicht.
Er geht nur bis zur ersten 1 und dann endet das Makro.
Kannst du dir das erklären?
Bin ich zu doof dafür?
MFG
Tobias
Antwort 9 von Saarbauer
Hallo,
setzte ein Hochkomma vor
ActiveCell.Offset(0, 9).Select
dann müßte es funktionieren. Da bei dieser Funktion die aktive Zelle auf Spalte J gesetzt wird und dort eine leere Zelle ist.
Gruß
Helmut
setzte ein Hochkomma vor
ActiveCell.Offset(0, 9).Select
dann müßte es funktionieren. Da bei dieser Funktion die aktive Zelle auf Spalte J gesetzt wird und dort eine leere Zelle ist.
Gruß
Helmut
Antwort 10 von master-t
Ich werd verrückt!!
Es funktioniert!
Vielen Dank!!!
MFG
Tobias
Es funktioniert!
Vielen Dank!!!
MFG
Tobias
Antwort 11 von Saarbauer
Hallo,
mir ist aufgefallen, dass die Reihenfolge so nicht gut ist
Rows(ActiveCell.Row()).Select
ActiveCell.Offset(0, 9).Select
Selection.Delete
ändern in
Rows(ActiveCell.Row()).Select
Selection.Delete
ActiveCell.Offset(0, 9).Select
es wird sonst nur die Zelle und nicht dir Zeile gelöscht.
Gruß
Helmut
mir ist aufgefallen, dass die Reihenfolge so nicht gut ist
Rows(ActiveCell.Row()).Select
ActiveCell.Offset(0, 9).Select
Selection.Delete
ändern in
Rows(ActiveCell.Row()).Select
Selection.Delete
ActiveCell.Offset(0, 9).Select
es wird sonst nur die Zelle und nicht dir Zeile gelöscht.
Gruß
Helmut