Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1848to1852
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

Daten in neues Tabellenblatt Autofilter

Daten in neues Tabellenblatt Autofilter
21.09.2021 12:58:13
Christina
Hallo!
Ich habe jetzt bei meiner Aufgabenstellung noch ein Problem.
Ich würde gerne nur die Inhalte der Zellen in der Tabelle "Fenster" der Spalte A, ab A9 in die Tabelle "AJ Warema" ab A19 übernehmen, wo der Zellinhalt D9-D38 "AJ" enthält.
Ich habe versucht das mit einer AutoFilter Funktion zu lösen, aber es funktioniert so nicht. Ich vermute, dass mir der Teil noch fehlt, mit dem ich ansprechen kann, dass ich D9-D38 filtern will, aber wenn das Kriterium "AJ" zutrifft, der Inhalt aus A9-A38 ausgegeben werden soll.
Momentan kommt zwar keine Fehlermeldung, aber befüllt wird auch nichts.
With Bestellung.Worksheets("fenster")
loLetzte = .Cells(.Rows.Count, 4).End(xlUp).Row
.Range(.Cells(9, 4), .Cells(loLetzte, 4)).AutoFilter field:=1, Criteria1:="AJ"
With .AutoFilter.Range
.Offset(0, -3).Resize(.Rows.Count - 1).Copy _
Bestellung.Worksheets("AJ Warema").Range("A19")
End With
.Range("A19").AutoFilter
End With
Danke für eure Hilfe!
LG

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten in neues Tabellenblatt Autofilter
21.09.2021 13:01:07
Werner
Hallo,
lad mal deine Mappe hier hoch.
Gruß Werner
AW: Daten in neues Tabellenblatt Autofilter
21.09.2021 13:36:28
Christina
Die Datei Test.xlsx entspricht vom Inhalt der Tabellenblätter der Testdatei.xlsm
AW: Daten in neues Tabellenblatt Autofilter
21.09.2021 14:04:38
Werner
Hallo,
ich weiß jetzt nicht, ob die Datei auch dann gespeichert werden soll, wenn AJ in Spalte D nicht vorhanden ist.
Im Moment wird nur gespeichert, wenn auch was kopiert wird. Sprich, wenn zumindest einmal AJ in Spalte D vorkommt.
Wenn gespeichert werden soll, auch wenn AJ nicht vorkommt, dann mußt du im Code das Speichern im If Zwei vom Filter raus nehmen und ganz am Ende wieder einfügen/aktivieren.

Public Sub CommandButton_OK_Click()
Dim Bestellung As Workbook, Basisdaten As Workbook
Dim strFileName As Variant, Zelle As Range
Dim i As Long, v As String
Const strDateiname = "C:\Users\cg\Desktop\Test.xlsx"
'Vorlage öffnen
Set Bestellung = Workbooks.Open(strDateiname, UpdateLinks:=False, ReadOnly:=True)
'Bestellung unter Zielname speichern
ThisWorkbook.Activate
Bestellung.SaveAs strPfad & ActiveSheet.Range("B2").Value & " " & ActiveSheet.Range("D2").Value & ".xls"
Bestellung.Worksheets("fenster").Range("B2").Value = ActiveSheet.Range("B2").Value
Bestellung.Worksheets("fenster").Range("D2").Value = ActiveSheet.Range("D2").Value
'Basis öffnen
Set Basisdaten = BasisDatei_öffnen
If Not Basisdaten Is Nothing Then
MsgBox "Die Datei '" & Basisdaten.Name & "' wurde geöffnet.", vbInformation, "Hinweis"
'Daten übertragen
On Error Resume Next
With Basisdaten.Worksheets("Fenster- und Terrassentüren")
For i = 3 To 40
Bestellung.Worksheets("fenster").Cells(i + 6, 1) = .Cells(i, 1).Value 'Spalte A = Spalte-Nr 1
Bestellung.Worksheets("fenster").Cells(i + 6, 2) = .Cells(i, 2).Value 'Spalte B = Spalte-Nr 2
Bestellung.Worksheets("fenster").Cells(i + 6, 3) = .Cells(i, 3).Value 'usw.
Bestellung.Worksheets("fenster").Cells(i + 6, 4) = .Cells(i, 4).Value
Bestellung.Worksheets("fenster").Cells(i + 6, 5) = Split(.Cells(i, 5).Value, "×")(0) 'in Spalte E, der Teil vor dem "x"
Bestellung.Worksheets("fenster").Cells(i + 6, 6) = Split(.Cells(i, 5).Value, "×")(1) 'in Spalte E, der Teil nach dem "x"
Bestellung.Worksheets("fenster").Cells(i + 6, 7) = .Cells(i, 8).Value
Next i
End With
Worksheets("Fenster- und Terrassentüren").Shapes.SelectAll
With Basisdaten.Worksheets("Fenster- und Terrassentüren")
Bestellung.Worksheets("fenster").Shapes.Range("H9:H36") = .Shapes.Range("I3:I30")
End With
Application.ScreenUpdating = False
If WorksheetFunction.CountIf(Bestellung.Worksheets("fenster").Columns("D"), "AJ") > 0 Then
With Bestellung.Worksheets("fenster")
.Range("A8").AutoFilter field:=4, Criteria1:="AJ"
With .AutoFilter.Range
.Offset(1).Resize(.Rows.Count - 1).Columns(1).Copy
Bestellung.Worksheets("AJ Warema").Range("A19").PasteSpecial Paste:=xlPasteValuesAndNumberFormats
End With
.Range("A8").AutoFilter
Bestellung.Save
End With
Else
MsgBox "Fehler: Suchbegriff ""AJ"" ist in Spalte D nicht vorhanden."
End If
End If
'Bestellung.Save
End Sub
Gruß Werner
Anzeige
AW: Daten in neues Tabellenblatt Autofilter
21.09.2021 14:51:50
Christina
Hallo Werner,
danke, der Code wirkt sehr plausibel soweit ich das nachvollziehen kann, aber leider wird in Tabelle "AJ Warema" in A19 nichts befüllt, obwohl in der Basisdatei "AJ" stehen würde. Hast du den Code getestet? Hat es bei dir funktioniert?
LG
Christina
AW: Daten in neues Tabellenblatt Autofilter
21.09.2021 15:13:57
Werner
Hallo,
wieso "Basisdatei"?
Ich habe mich an deiner Beschreibung
Ich würde gerne nur die Inhalte der Zellen in der Tabelle "Fenster" der Spalte A, ab A9 in die Tabelle "AJ Warema" ab A19 übernehmen, wo der Zellinhalt D9-D38 "AJ" enthält.
und an deinem bereits vorhandenen Code orientiert. Und da wolltest du doch aus der Datei Bestellung aus dem Worksheet "Bestellung" Daten kopieren, wenn in Spalte D der Wert "AJ" vorhanden ist. Und genau das Macht der Code auch. In deiner Besipielmappe sind aber im Blatt "Bestellung" in Spalte D keinerlei AJ vorhanden.
Gruß Werner
Anzeige
AW: Daten in neues Tabellenblatt Autofilter
21.09.2021 15:32:08
Christina
Hallo Werner,
ich glaube, es gibt ein Kommunikationsproblem.
Die Änderung mit dem Autofilter soll die Daten aus der durch Drücken auf die Befehlsfläche "Bestellung erstellen" neu erstellte Datei aus einer Vorlagedatei (gleicher Aufbau) wie die Testdatei nehmen. Die Daten in der Spalte D, wo tlw. AJ steht, kommen aus einer anderen Datei, die über den Code manuell ausgewählt wird. Wenn ich jetzt in diese Datei Daten mit AJ eingtrage, werden diese zwar bei der Erstellung der neuen Datei mit dem Namen "Bestellung" in der Tabelle "Fenster" eingetragen, aber in der Tabelle "AJ Warema", wo etwas eingetragen werden sollte, passiert nichts.
Es gibt folgende Dateien:
1. Datei mit der Befehlsfläche
2. Vorlagedatei aus der die Bestellung erstellt wird (entspricht der Datei mit Befehlsfläche und wird automatisch über Code erstellt und tlw. befüllt)
3. Basisdatei, aus der die Daten in die neu erstellte Bestellungsdatei befüllt werden (wird manuell erstellt)
Anzeige
AW: Daten in neues Tabellenblatt Autofilter
21.09.2021 15:58:06
Werner
Hallo,
meinst du so?

Application.ScreenUpdating = False
If WorksheetFunction.CountIf(Basisdaten.Worksheets("Fenster- und Terrassentüren").Columns("D"), "AJ") > 0 Then
With Basisdaten.Worksheets("Fenster- und Terrassentüren")
.Range("A2").AutoFilter field:=4, Criteria1:="AJ"
With .AutoFilter.Range
.Offset(1).Resize(.Rows.Count - 1).Columns(1).Copy
Bestellung.Worksheets("AJ Warema").Range("A19").PasteSpecial Paste:=xlPasteValuesAndNumberFormats
End With
.Range("A2").AutoFilter
Bestellung.Save
End With
Else
MsgBox "Fehler: Suchbegriff ""AJ"" ist in Spalte D nicht vorhanden."
End If
Gruß Werner
Anzeige
AW: Daten in neues Tabellenblatt Autofilter
21.09.2021 16:21:45
Christina
Hallo Werner!
Danke für deine Mühen, ich bin schon halb am Verzweifeln.
Von der Logik her, müsste dein Code so passen.
Leider wird in der Datei Bestellung in der Tabelle "AJ Warema" immer noch nichts befüllt. Es sollte hier in der Zelle A19 der Wert 1 stehen nach dem Durchlaufen des Codes, da in der Basisdatei in D3 ein 1er steht.
Hast du eine Idee?
Danke!
LG
AW: Daten in neues Tabellenblatt Autofilter
21.09.2021 17:21:09
Werner
Hallo,
mach doch mal als erstes das On Error Resume Next raus und lass den Code laufen.
Wird ein Fehler angezeigt? Wenn ja, welcher und in welcher Codezeile?
Wenn nein, dann geh doch den Code mal im Einzelschritt durch und überprüf nach dem Filtervorgang, ob auch die richtige Datei und das richtige Blatt gefiltert wird.
Zudem weiß ich nicht, wie der Code, den du im Moment einsetzt, tatsächlich aussieht.
Lade doch mal alle Mappen hier hoch, die notwendig sind und bezeichne sie so, dass man auch versteht um welche Datei es sich jetzt dabei handelt.
Gruß Werner
Anzeige
AW: Daten in neues Tabellenblatt Autofilter
24.09.2021 21:27:59
Christina
Hallo Werner!
Danke für deine Geduld mit mir! Ich weiß jetzt, warum es nicht funktioniert hat.
Es ist vorher im Code eine Fehlermeldung gekommen mit "Index außerhalb des gültigen Bereichs". Nachdem trotzdem etwas passiert ist, habe ich mir gedacht, dass der Code danach weitergelaufen ist, was aber nicht der Fall war.
Ich habe jetzt den von dir gesendeten Code für das Autofilter-Thema davor gestellt und jetzt funktioniert es genauso wie gedacht.
Ich habe jetzt halt noch das Problem mit der Fehlermeldung "Index..." und der Code zum Einfügen der Bilder aus einem anderen Forenbeitrag von mir funktioniert leider auch noch nicht. Hier gibt es auch eine Fehlermeldung.
Ich lade dir mal Testdateien hoch, vielleicht kannst du mir dann ja hier auch noch weiterhelfen. Das wäre supertoll.
https://www.herber.de/bbs/user/148251.xlsm#
https://www.herber.de/bbs/user/148252.xlsx
https://www.herber.de/bbs/user/148253.xls
Die erste Datei ist die Datei in der das Makro mit dem Kommandofeld gestartet wird. Die zweite Datei ist die Vorlage, die befüllt wird (Bestellungen) und die dritte Datei ist die Datei, die manuell ausgewählt wird (Basisdaten).
LG
Christina
Anzeige
AW: Daten in neues Tabellenblatt Autofilter
25.09.2021 11:27:01
Werner
Hallo,
zu dem "Problem" mit deinen Bildern habe ich dir doch im anderen Post von dir eine Code eingestellt. Warum antwortest du denn da nicht?
Hast du dir das überhaupt mal angeschaut und getestet?
Gruß Werner
AW: Daten in neues Tabellenblatt Autofilter
26.09.2021 08:59:51
Christina
Hallo Werner,
tut mir leid, ich habe nicht daran gedacht, dass es wichtig ist, dass die Themen immer bei den Ursprungsbeiträgen beantwortet werden.
Bezüglich Bilder habe ich jetzt in dem ursprünglichen Thread geantwortet.
Hast du eine Idee wie ich die Fehlermeldung mit dem ungültigen Index korrigieren könnte?
Danke für deine Hilfe!
LG
Christina
Anzeige
AW: Daten in neues Tabellenblatt Autofilter
27.09.2021 11:33:08
Werner
Hallo,
teste mal:

Option Explicit
Const strPfad = "C:\Users\cg\Desktop\"
Private Sub CommandButton_OK_Click()
Dim Bestellung As Workbook, Basisdaten As Workbook
Dim strFileName As Variant, i As Long, j As Long
Dim raFund As Range, sh As Shape
Const strDateiname = "C:\Users\cg\Desktop\Test.xlsx"
Application.ScreenUpdating = False
'Vorlage öffnen
Set Bestellung = Workbooks.Open(strDateiname, UpdateLinks:=False, ReadOnly:=True)
'Basis öffnen
Set Basisdaten = BasisDatei_öffnen
If Not Basisdaten Is Nothing Then
MsgBox "Die Datei '" & Basisdaten.Name & "' wurde geöffnet.", vbInformation, "Hinweis"
'Bestellung unter Zielname speichern
Bestellung.SaveAs strPfad & ThisWorkbook.Worksheets("fenster").Range("B2").Value & " " _
& ThisWorkbook.Worksheets("fenster").Range("D2").Value & ".xls"
'neue Zuweisung, da die Datei ja jetzt unter einem anderen Namen gespeichert wurde
Set Bestellung = Workbooks(ThisWorkbook.Worksheets("fenster").Range("B2") & " " _
& ThisWorkbook.Worksheets("fenster").Range("D2").Value & ".xls")
'Prüfen ob in Basisdaten in Spalte D AJ vorhanden ist
If WorksheetFunction.CountIf(Basisdaten.Worksheets("Fenster- und Terrassentüren").Columns("D"), "AJ") > 0 Then
'Wenn ja, Spalte D nach AJ filtern und Filterergebnis (Spalte A) kopieren
With Basisdaten.Worksheets("Fenster- und Terrassentüren")
.Range("A2").AutoFilter field:=4, Criteria1:="AJ"
With .AutoFilter.Range
.Offset(1).Resize(.Rows.Count - 1).Columns(1).Copy
Bestellung.Worksheets("AJ Warema").Range("A19").PasteSpecial Paste:=xlPasteValuesAndNumberFormats
End With
.Range("A2").AutoFilter
Bestellung.Save
End With
Else
MsgBox "Fehler: Suchbegriff ""AJ"" ist in Spalte D nicht vorhanden."
End If
End If
With Basisdaten.Worksheets("Fenster- und Terrassentüren")
For i = 3 To .Cells(.Rows.Count, "A").End(xlUp).Row
If .Cells(i, "A")  "" Then
Bestellung.Worksheets("fenster").Cells(i + 6, "A") = .Cells(i, "A").Value
Bestellung.Worksheets("fenster").Cells(i + 6, "B") = .Cells(i, "B").Value
Bestellung.Worksheets("fenster").Cells(i + 6, "C") = .Cells(i, "C").Value
Bestellung.Worksheets("fenster").Cells(i + 6, "D") = .Cells(i, "D").Value
Bestellung.Worksheets("fenster").Cells(i + 6, "E") = Split(.Cells(i, "E").Value, "×")(0)
Bestellung.Worksheets("fenster").Cells(i + 6, "F") = Split(.Cells(i, "E").Value, "×")(1)
Bestellung.Worksheets("fenster").Cells(i + 6, "G") = .Cells(i, "H").Value
End If
Next i
End With
'Suchen und kopieren der Bilder
Bestellung.Worksheets("fenster").Activate
With Bestellung.Worksheets("Fenster")
.Columns("H").ColumnWidth = 37.6
For j = 9 To .Cells(.Rows.Count, "A").End(xlUp).Row
If .Cells(j, "A")  "" Then
Set raFund = Basisdaten.Worksheets("Fenster- und Terrassentüren").Columns("A").Find(what:=.Cells(j, "A"), _
LookIn:=xlValues, lookat:=xlWhole)
If Not raFund Is Nothing Then
For Each sh In Basisdaten.Worksheets("Fenster- und Terrassentüren").Shapes
If sh.TopLeftCell.Address = raFund.Offset(, 8).Address Then
sh.Copy
.Paste
Selection.ShapeRange.LockAspectRatio = msoFalse
Selection.Top = .Cells(j, "H").Top
Selection.Left = .Cells(j, "H").Left
.Rows(j).RowHeight = 150
Selection.Height = .Rows(j).Height
Selection.Width = 200
End If
Next sh
End If
End If
Next j
.Range("A12").Select
End With
Bestellung.Save
Set raFund = Nothing
End Sub
Gruß Werner
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige