Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1344to1348
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
Inhaltsverzeichnis

Liste filtern,Filterinhalt in neue Datei kopieren

Liste filtern,Filterinhalt in neue Datei kopieren
28.01.2014 13:03:44
Darius
Hallo zusammen,
ich bin neu hier im Forum. Ich hätte ein ANliegen.
Es geht um das Erstellen eines Standarddokumentes. Und zwar um ein sogenanntes Preisblatt. Ich will nach einem Lastenheft ein Preisblatt erstellen und dann an die verschiedene Lieferanten schicken. Nachdem die Lieferanten ihre Zahlen eingetragen haben, kann ich die einzelnen Spaltenbereich in ein neues Excel-File kopieren und vergleichen.
Nun zum Problem:
In diesem Preisblatt gibt es Punkte, die sind immer gleich, z.b 1.Projektierung, 1.1 1.2; usw.
dann gibt es Punkte, wie z.b. Optionen. Dieser Punkt varriert natürlich je ANlagenanschaffung.
Nun möchte ich eine Excelliste erstellen, die alle Punkte beinhaltet. Ich will durch "Häkchen setzen" meine benötigten Punkte auswählen, dann nach Häkchen filtern und dann die ausgewählten Punkte in einer neuen Datei öffnen. Dann kann ich sozusagen diese Datei speichern und habe mein preisblatt.
Das ganze hört sich sehr umfangreich an und mir fehlen dazu einfach die Kenntnisse und die Erfahrung. Die Suchfunktion habe ich verwendet, bin aber nicht auf eine Lösung gestoßen....gibt es sowas in ähnlicher Form?
Wäre super, wenn mir jmd helfen könnte!
Vielen Dank schon mal

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Liste filtern,Filterinhalt in neue Datei kopieren
28.01.2014 14:51:04
fcs
Hallo Darius,
wenn du keine Formeln mit in die Preisliste kopieren musst, dann kann man dies mit der Autofilterfunktion realisieren.
Allerdings halte ich nichts davon "Häkchen" (in Checkboxen je Zeile) zu setzten. Verwende zum markieren der zu kopierenden Zeilen in einer Spalte rechts der Hauptdaten einfach ein einzelnes Zeichen, das du in die Zellen eínträgst.
In der Datei mit der Tabelle, die alle Punkte enthält, legst du zusätzlich ein Tabellenblatt an, das als Muster für die Preisliste dient.
Nachfolgend ein Makro mit entsprechender Funktionalität.
Blattnamen, Weret von Konstanten und die zu kopierenden Spalten musst du noch anpassen.
Gruß
Franz
'Erstell unter Excel 2010
'Code in einem allgemeinen Modul
Sub Filter_plus_Copy()
Dim wksAlle As Worksheet
Dim wksListe As Worksheet
Dim Zeile_L As Long
Const Zeile_Titel As Long = 1 'Zeile mit den Spaltentitel im Blatt mit allen Punkten
Const Spalte_X As Long = 10 ' Spalte J - Spalte in der die zu filternden Zeilen _
mit x oder anders markiert werden..
Set wksAlle = ActiveWorkbook.Worksheets("AllePunkte") 'Tabellenblatt mit allen Punkten
Set wksListe = ActiveWorkbook.Worksheets("Preisliste") 'Musterblatt mit allen  _
Seitenformatierungen
wksListe.Copy
Set wksListe = ActiveSheet
With wksAlle
If .AutoFilterMode = True Then
If .FilterMode = True Then
.ShowAllData
End If
.AutoFilterMode = False
End If
Zeile_L = .Cells(.Rows.Count, Spalte_X).End(xlUp).Row
.Range(.Cells(Zeile_Titel, Spalte_X), .Cells(Zeile_L, Spalte_X)).AutoFilter _
Field:=1, Criteria1:=""
.Range(.Cells(Zeile_Titel, 1), .Cells(Zeile_L, Spalte_X - 1)).Copy wksListe.Cells(4, 1)
.ShowAllData
.AutoFilterMode = False
End With
End Sub

Anzeige
AW: Liste filtern,Filterinhalt in neue Datei kopieren
28.01.2014 15:23:16
Darius
Hallo Franz und vielen Dank für deine Antwort,
Ich habe wohl vergessen zu erwähnen, dass es sich um einen ganzen Bereich handelt und auch Formlen verwendet werden. ALso einfache Summenformeln,die z.b immer den Betrag eines Gliederungspunktes bilden z.b 1. Projektierung 3000,00€ und zum Schluss dann alle Punkte addiert werden.
Ideal wäre natürlich, wenn mein bestehndes Blatt 1:1 übernommen werden würde, nur die nicht relevanten Zeilen sozusagen wegbleiben.....ich weiß kompliziert, aber vielleicht gibt es doch eine ga rnicht sooo komplizierte Lösung =)

AW: Liste filtern,Filterinhalt in neue Datei kopieren
28.01.2014 16:03:32
fcs
Hallo Darius,
die Lösung ist nicht komplizierter, sondern "nur" anders, wenn die Formeln erhltenbleiben sollen.
Gruß
Franz
'Erstell unter Excel 2010
'Code in einem allgemeinen Modul
Sub Copy_plus_Filtern2()
Dim wksListe As Worksheet
Dim Zeile As Long, Zeile_L As Long
Dim rng As Range
Const Zeile_Titel As Long = 1 'Zeile mit den Spaltentitel im Blatt mit allen Punkten
Const Spalte_X As Long = 10 ' Spalte J - Spalte in der die zu filternden Zeilen _
mit x oder anders markiert werden..
ActiveWorkbook.Worksheets("AllePunkte").Copy 'Tabellenblatt mit allen Punkten
Set wksListe = ActiveSheet
With wksListe
.Name = "Preisliste"
'letzte Zeile mit Daten ermitteln
Set rng = .Cells.Find(What:="*", after:=.Cells(1, 1), LookIn:=xlFormulas, _
lookat:=xlWhole, searchorder:=xlByRows, searchdirection:=xlPrevious)
If rng Is Nothing Then Exit Sub Else Zeile_L = rng.Row
'leere Zellen in der Markierungspalte suchen und ganze Zeilen löschen
With .Range(.Cells(Zeile_Titel + 1, Spalte_X), .Cells(Zeile_L, Spalte_X))
If Application.WorksheetFunction.CountBlank(.Cells) > 0 Then
.SpecialCells(xlCellTypeBlanks).EntireRow.Delete shift:=xlShiftUp
End If
End With
'Spalte mit Markierungen löschen
.Columns(Spalte_X).Delete
End With
End Sub

Anzeige
AW: Liste filtern,Filterinhalt in neue Datei kopieren
29.01.2014 07:59:13
Darius
Hallo Franz,
vielen Dank das passt schon wunderbar!!! nur eine kleine Frage hätte ich noch. ICh habe immer einen definierten Bereich Bereich A1:L8, sozsuagen eine Kopfzeile mit Bezeichnung der ANlage Lieferant usw....
wie kann ich festlegen, dass dieser immer ehalten bleibt unter unmittelbar darunter meine gefilterten Daten mit einfließen?
AUßerdem habe ich das Problem, dass ich ja z.b bei 1. Projektierung diverse unterpunkte habe...1.1..1.2...1.3...usw.....wenn ich jetzt nur 1.1 und 1.3 auswähle fehlt ja 1.2....kann mann so die summenformel autoamtisch anpassen, dass sie 1.2 nicht mehr berücksichtigt und auch die Bezeichnungen automatisch angepasst werden? also aus 1.3 1.2 wird usw?
das wäre top....
ansonsten super vielen Dank!!!

Anzeige
AW: Liste filtern,Filterinhalt in neue Datei kopieren
29.01.2014 08:16:19
Darius
Hallo Franz,
vielen Dank das passt schon wunderbar!!! nur eine kleine Frage hätte ich noch. ICh habe immer einen definierten Bereich Bereich A1:L8, sozsuagen eine Kopfzeile mit Bezeichnung der ANlage Lieferant usw....
wie kann ich festlegen, dass dieser immer ehalten bleibt unter unmittelbar darunter meine gefilterten Daten mit einfließen?
AUßerdem habe ich das Problem, dass ich ja z.b bei 1. Projektierung diverse unterpunkte habe...1.1..1.2...1.3...usw.....wenn ich jetzt nur 1.1 und 1.3 auswähle fehlt ja 1.2....kann mann so die summenformel autoamtisch anpassen, dass sie 1.2 nicht mehr berücksichtigt und auch die Bezeichnungen automatisch angepasst werden? also aus 1.3 1.2 wird usw?
das wäre top....
ansonsten super vielen Dank!!!

Anzeige
AW: Liste filtern,Filterinhalt in neue Datei kopieren
29.01.2014 08:42:07
fcs
Hallo Darius,
für die Titelzeilen änderst du
in Zeile
    Const Zeile_Titel As Long = 1 'Zeile mit den Spaltentitel im Blatt mit allen Punkten

Die 1 in 8
Wenn du die Summenformeln korrekt angelegt hast, dann sollten diese nach dem Löschen von Zeilen eigentlich funktionieren.
Bei den Positions-Nummer fällt mir auf die Schnell nichts ein, geht wahrscheinlich nur mit einer Hilfspalte.
Anonymisierte Beispieldatei wäre für Problemlösung hilfreich.
Gruß
Franz

AW: Liste filtern,Filterinhalt in neue Datei kopieren
29.01.2014 08:54:50
Darius
puh würde ich gerne, aber ich bin am Geschäftsrechner...weiß dahe rnicht ob ich da Probleme bekommen könnte....
das mit der Reihenfolge wäre natürlich top, aber nicht das wichtigstes
zur summenberechnung sieht folgendermaßen aus
1. projektireung SUmme (1.1:1.2)
1.1
1.2
2....
3....
4...
SUMME 1+2+3+4
da hakst dann...wenn ich z.b Punkt 3 rausnehme, kommt ein bezugfehler in der neue datei
Danke!

Anzeige
AW: Liste filtern,Filterinhalt in neue Datei kopieren
29.01.2014 09:01:24
Darius
puh würde ich gerne, aber ich bin am Geschäftsrechner...weiß dahe rnicht ob ich da Probleme bekommen könnte....
das mit der Reihenfolge wäre natürlich top, aber nicht das wichtigstes
zur summenberechnung sieht folgendermaßen aus
1. projektireung SUmme (1.1:1.2)
1.1
1.2
2....
3....
4...
SUMME 1+2+3+4
da hakst dann...wenn ich z.b Punkt 3 rausnehme, kommt ein bezugfehler in der neue datei
Danke!

AW: Liste filtern,Filterinhalt in neue Datei kopieren
29.01.2014 11:10:32
fcs
Hallo Darius,
verwende für alle Summen und Zwischensummen die Funktion TEILERGEBNIS und gib immer Zellbereiche und nie Einzelzellen an.
Beispiel:
Position	Feld02	Anzahl	Einzelpreis	Gesamt
1		Text001			=TEILERGEBNIS(9;E10:E16)
1.1		Text002			=TEILERGEBNIS(9;E11:E12)
1.1.1		Text003	2	300	=C11*D11
1.1.2		Text004	5	100	=C12*D12
1.2		Text005			=TEILERGEBNIS(9;E14:E16)
1.2.1		Text006	1	120	=C14*D14
1.2.2		Text007	1	222	=C15*D15
1.2.3		Text008	1	132	=C16*D16
2		Text009			=TEILERGEBNIS(9;E18:E22)
2.1		Text010	1	567	=C18*D18
2.2		Text011			=TEILERGEBNIS(9;E20:E22)
2.2.1		Text012	2	123	=C20*D20
2.2.2		Text013	2	321	=C21*D21
2.2.3		Text014			=C22*D22
3		Text015	1	1234	=C23*D23
Summe					=TEILERGEBNIS(9;E9:E24)

Die Positionsnummern kann man nur neu generieren per Makro.
Ich hab es mal in das Makro eingebaut. Das ist jetzt komplizierter als alles vorherige.
Gruß
Franz
Sub Copy_plus_Filtern_3()
Dim wksListe As Worksheet
Dim Zeile As Long, Zeile_L As Long
Dim rng As Range
Const Zeile_Titel As Long = 8 'Zeile mit den Spaltentitel im Blatt mit allen Punkten
Const Spalte_X As Long = 10 ' Spalte J - Spalte in der die zu filternden Zeilen _
mit x oder anders markiert werden..
ActiveWorkbook.Worksheets("AllePunkte").Copy 'Tabellenblatt mit allen Punkten
Set wksListe = ActiveSheet
With wksListe
.Name = "Preisliste"
'letzte Zeile mit Daten ermitteln
Set rng = .Cells.Find(What:="*", after:=.Cells(1, 1), LookIn:=xlFormulas, _
lookat:=xlWhole, searchorder:=xlByRows, searchdirection:=xlPrevious)
If rng Is Nothing Then Exit Sub Else Zeile_L = rng.Row
'leere Zellen in der Markierungspalte suchen und ganze Zeilen löschen
With .Range(.Cells(Zeile_Titel + 1, Spalte_X), .Cells(Zeile_L, Spalte_X))
If Application.WorksheetFunction.CountBlank(.Cells) > 0 Then
.SpecialCells(xlCellTypeBlanks).EntireRow.Delete shift:=xlShiftUp
End If
End With
.Columns(Spalte_X).Delete
'Positionen neu nummerieren in Spalte 1 (A)
Dim intNr(1 To 4) As Integer, strPos(1 To 4) As String
Dim intStufe As Integer, intI As Integer, strText As String
'letzte Zeile mit Daten ermitteln
Set rng = .Cells.Find(What:="*", after:=.Cells(1, 1), LookIn:=xlFormulas, _
lookat:=xlWhole, searchorder:=xlByRows, searchdirection:=xlPrevious)
If rng Is Nothing Then Exit Sub Else Zeile_L = rng.Row
For Zeile = Zeile_Titel + 1 To Zeile_L
With .Cells(Zeile, 1)         '1 anpassen, wenn Pos.-Nr. nicht in Spalte A
If IsNumeric(Left(.Text, 1)) Then
'Stufe aus Anzahl "." in Positionsnummer ermitteln
intStufe = Len(.Text) - Len(VBA.Replace(.Text, ".", "")) + 1
intNr(intStufe) = intNr(intStufe) + 1
Select Case intStufe
Case 1
strPos(intStufe) = "'" & Format(intNr(intStufe), "0")
Case Else
strPos(intStufe) = "." & Format(intNr(intStufe), "0")
End Select
For intI = intStufe + 1 To UBound(intNr)
strPos(intI) = ""
intNr(intI) = 0
Next
strText = ""
For intI = 1 To UBound(intNr)
strText = strText & strPos(intI)
Next
.Value = strText
End If
End With
Next
End With
End Sub

Anzeige
AW: Liste filtern,Filterinhalt in neue Datei kopieren
29.01.2014 12:58:14
Darius
ich weiß gar nicht was ich sagen soll^^
perfekt^^
wenn ich jetzt meine zahlen 1. 1.1 usw in spalte c stehen habe einfach 1 in 3 umwandeln oder?
weil wenn ich das mache nummeriert er durchgängig .1 .2 .3 .4
also er beginnt mit .1 bis ende durchgängig nummeriert
woran könnte dies liegen?
muss ich außer der einen Zahl sonst noch was ändern?
vielen vieln DANK

AW: Liste filtern,Filterinhalt in neue Datei kopieren
29.01.2014 15:14:09
fcs
Hallo Darius,
bei mir sehen Positionsnummern so aus:
1
1.1
1.1.1
1.1.2
1.2
1.2.1
1.2.2
1.2.3
2
2.1
2.2
2.2.1
2.2.2
2.2.3
3
also am Ende nie einen Punkt - auch nicht bei der 1. Stufe.
Aus der Anzahl der Punkte wird im Makro die Stufe der Position ermittelt und die fortlaufende Nummerierung neu berechnet.
Lasse bei dir bei der 1. Stufe der Pos.-Nr am Ende den Punkt weg, dann sollte es funktionieren.
Warum soll denn in der 1. Stufe am Ende ein Punkt sein und bei den weiteren Stufen nicht?
Oder du machst bei allen Stufen am Ende einen Punkt. Dann muss im Makro die folgende Zeile angepasst werden:
               'Stufe aus Anzahl "." in Positionsnummer ermitteln
intStufe = Len(.Text) - Len(VBA.Replace(.Text, ".", "")) + 1
in
intStufe = Len(.Text) - Len(VBA.Replace(.Text, ".", ""))

Gruß
Franz

Anzeige
AW: Liste filtern,Filterinhalt in neue Datei kopieren
29.01.2014 15:42:42
Darius
das war mein Fehler!
Vielen Dank, die Lösung funktioniert genau so wie ich mir das vorgestellt habe...unglaublich =)
vielen vielen Dank!
Ist VBA nur ein Hobby von dir oder auch beruflich damit zu tun?

AW: Liste filtern,Filterinhalt in neue Datei kopieren
30.01.2014 08:33:15
Darius
Hi,
das Makro funktioniert echt wunderbar =)
gibt es noch eine Möglichkeit, dass ich einen code einbinde, dass man das Excelfile bearbeiten,aber nicht speichern kann?
der benutzer kann somit sein preisblatt generieren, aber ein versehentliches speichern soll verhindert werden

AW: Liste filtern,Filterinhalt in neue Datei kopieren
30.01.2014 10:22:22
fcs
Hallo Darius,
der einfachste und sicherste Weg:
Schutz der Datei mit Kennwort zum Ändern. Ohne Kennwort-Eingabe wird die Datei dann schreibgeschütz geöffnet und kann nur unter einem anderen Namen gespeichert werden.
Eine Makro-Lösung funktioniert nur wenn beim Öffnen der Datei die Makros auch aktiviert werden.
'Code unter diese Arbeitsmappe
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'beim Schliessen der Datei wird der Satus automatisch auf gespeichert gesetzt
'Datei wird nach Änderungen ohne Sicherheitsabfrage geschlossen
Me.Saved = True
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
'Der Speichern unter Dialog wird nicht angezeigt, sondern nur ein Hinweis
'gespeichert wird nur wenn in Message-Box ein  korrektes Kennwort eingegeben wird.
Dim varEingabe
If SaveAsUI = True Then
MsgBox "Datei darf nur mit Kennwort gespeichert werden" & vbLf _
& """Speichern unter"" nicht möglich", vbOKOnly, _
"Datei Speichern Unter"
Cancel = True
Else
varEingabe = InputBox("Kennwort zum Speichern", "Speichern Datei")
If varEingabe = "" Or varEingabe = False Then
Cancel = True
Else
If varEingabe  "Test" Then 'Prüfung eingegebenes Kennwort
Cancel = True
MsgBox "Kennwort ist falsch", vbOKOnly, "Datei Speichern - Kennworteingabe"
End If
End If
End If
End Sub

Damit das VBA-Projekt mit dem Kennwort nicht eingesehen werden kann muss dieses dann per Kennwort geschützt werden.
Gruß
Franz
Anzeige

308 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige