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

Excel Datei filtern und in neue Datei kopieren

Excel Datei filtern und in neue Datei kopieren
24.01.2015 17:24:00
sascha
allo allerseits,
ich (selber nur die grundkenntnisse der grundkenntnisse) von vba suche nach einer möglichkeit eine vorhandene tabelle mit x spalten automatisch nach inhalten der spalte a zu filtern und die filterung in eine neue exceldatei zu integrieren.
es können die buchstaben A , P, E und S auftreten.
Bsp: Er soll alle Datensätze filtern die in Spalte A den Buchstaben P haben und diese Datensätze in eine neue Exceldatei kopieren.
ich weiß, dass schon mehrere themenfelder ähnlicher art im netz kursieren ich jedoch für den fall noch nicht das passende gefunden habe, dass ich mit meinem gefährlichen 1/16 Wissen auf meine wünsche anpassen könnte.
daher mein hilferuf an das VBA-Volk dadraußen, könnt ihr mir weiterhelfen ?
vielen dank im voraus und schönen samstag noch.

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel Datei filtern und in neue Datei kopieren
24.01.2015 17:57:29
Tino
Hallo,
vielleicht geht es so?
Daten stehen in der Tabelle1 und in der ersten Zeile ist eine Überschrift!
kommt als Code in Modul1
Option Explicit 
 
Sub FilternKopieren() 
Dim rngHelp As Range, rngUsedRange As Range 
Dim NewWB As Workbook, i%, ii% 
Dim ArSuche 
 
ArSuche = Array("A", "E", "P", "S") 
 
On Error GoTo ErrorHandler: 
 
Application.ScreenUpdating = False 
 
With Tabelle1 'Tabelle anpassen <<<<<<<<<<<< 
    Set rngUsedRange = .UsedRange 
    Set rngHelp = .UsedRange.Columns(.UsedRange.Columns.Count).Cells(1, 1) 
    Set rngHelp = rngHelp.Offset(, 1).Resize(2) 
End With 
 
Set NewWB = Workbooks.Add 
     
With NewWB 
    For i = Lbound(ArSuche) To Ubound(ArSuche) 
        rngHelp.Cells(2, 1).FormulaR1C1 = "=RC1=""" & ArSuche(i) & """" 
        ii = ii + 1 
         
        If .Worksheets.Count < ii Then .Worksheets.Add After:=.Worksheets(.Worksheets.Count) 
         
        With .Worksheets(ii) 
            rngUsedRange.AdvancedFilter xlFilterCopy, rngHelp, .Cells(1, 1), False 
        End With 
    Next i 
End With 
 
ErrorHandler: 
If Not rngHelp Is Nothing Then rngHelp.EntireColumn.Delete 
Application.ScreenUpdating = True 
 
If Err.Number <> 0 Then 
    MsgBox Err.Description, _
           vbCritical + vbMsgBoxSetForeground + vbMsgBoxHelpButton, _
           "Error: " & Err.Number, Err.HelpFile, Err.HelpContext 
End If 
End Sub 
 
Gruß Tino

Anzeige
AW: Excel Datei filtern und in neue Datei kopieren
25.01.2015 15:44:00
sascha
Hi Tino,
erstmal großen Dank für deine Hilfe. Das kommt meinen Vorstellungen schon sehr sehr nahe:).
Ich habe nur noch zwei Fragen.
1. Besteht auch die Möglichkeit die Filterungen in seprate Dateien einzuspielen ?
2. Könnte man auch einige Buchstaben zusammen filten? Das bedeute er soll mir zum Beispiel A und P filtern und rüber ziehen .
Vielen dank im Voraus
Gruß
sascha

Variante 2
25.01.2015 17:02:08
Tino
Hallo,
vielleicht geht es so?!
Sub FilternKopieren()
Dim rngHelp As Range, rngUsedRange As Range
Dim NewWB As Workbook
Dim i%, ii%
Dim lngSuchSpalte&
Dim varFormel
Dim ArSuche


'Filter OR = Oder; AND = Und, Trennzeichen in Or/And = , (Komma) 
ArSuche = Array("OR(A,E)", "P", "S")
'Suchspalte angeben 1 = Spalte A; 2 = Spalte B usw... 
lngSuchSpalte = 1

On Error GoTo ErrorHandler:
 
Application.ScreenUpdating = False
Application.DisplayAlerts = False
 
With Tabelle1 'Tabelle anpassen <<<<<<<<<<<< 
    Set rngUsedRange = .UsedRange
    Set rngHelp = .UsedRange.Columns(.UsedRange.Columns.Count).Cells(1, 1)
    Set rngHelp = rngHelp.Offset(, 1).Resize(2)
End With
 

For i = Lbound(ArSuche) To Ubound(ArSuche)
    If InStr(ArSuche(i), "(") > 0 Then
        varFormel = Replace(ArSuche(i), "(", "(RC" & lngSuchSpalte & "=" & Chr(34))
        varFormel = Replace(varFormel, ",", Chr(34) & ",RC" & lngSuchSpalte & "=" & Chr(34))
        varFormel = Replace(varFormel, ")", Chr(34) & ")")
    Else
        varFormel = "RC" & lngSuchSpalte & "=" & Chr(34) & ArSuche(i) & Chr(34)
    End If
    
    rngHelp.Cells(2, 1).FormulaR1C1 = "=" & varFormel
    

    Set NewWB = Workbooks.Add
         
    With NewWB
        For ii = .Worksheets.Count To 2 Step -1
            Worksheets(ii).Delete
        Next ii
        With .Worksheets(ii)
            rngUsedRange.AdvancedFilter xlFilterCopy, rngHelp, .Cells(1, 1), False
        End With
    End With
Next i

 
ErrorHandler:
If Not rngHelp Is Nothing Then rngHelp.EntireColumn.Delete
Application.ScreenUpdating = True
Application.DisplayAlerts = True
If Err.Number <> 0 Then
    MsgBox Err.Description, _
           vbCritical + vbMsgBoxSetForeground + vbMsgBoxHelpButton, _
           "Error: " & Err.Number, Err.HelpFile, Err.HelpContext
End If
End Sub
Gruß Tino

Anzeige
AW: Variante 2
26.01.2015 22:09:49
sascha
hey Tino,
hat alles super geklappt. Vielen Dank nochmal. Eine letzte Frage habe ich doch noch:). Ist es eigentlich auch möglich, dass die Tabelle auch erst ab A5 zum beispiel losgeht. also ich meine die überschriften. im beispiel wird ja von A1 ausgegangen.
vielen dank erstmal für alles , das ist jetzt eher noch nice to have:) trotzdem vielen dank

AW: Variante 2
27.01.2015 17:35:39
Tino
Hallo,
mach aus den Zeilen
Application.ScreenUpdating = False
Application.DisplayAlerts = False
With Tabelle1 'Tabelle anpassen 
diese
With Tabelle1 'Tabelle anpassen 
Gruß Tino

Anzeige
AW: Variante 2
29.01.2015 21:54:08
sascha
Hallo Tino,
etwas verspätet, aber ich wollte noch danke sagen. Es hat alles super geklappt.Danke für deine geduldige Hilfe:)
Gruß
Sascha

310 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige