florian86
Goto Top

Excel Tabelle gefiltert auf neues Tabellenblatt

Hallo,

ich habe folgendes Problem und zwar möchte ich eine Excel Tabelle mit folgenden Aufbau

Datum Lfd. Nr. Menge Abnehmer
Mo 05.06.2014 2014/021 20568 AHVG
DI 06.06.2014 2014/022 256 Ilm
MI 07.06.2014 2014/023 258 Beck
DO 08.06.2014 2014/024 269 Windisch
FR 09.06.2014 2014/025 23587 AHVG

gefiltert auf die anderen Tabellenblätter "AHVG" und "Ilm, Beck, Windisch" übertragen.
Auf dem Tabellenblatt AHVG dürfen nur die Zeilen angezeigt werden mit Abnehmer AHVG und
andersherum auf dem 2.Tabellenblatt auch nur die mit Ilm, Beck und Windisch.


Ich bekomme das auch hin mit einem Standard oder Spezialfilter ist ja beides möglich, nur
soll das so funktionieren das wenn ich in meine Ausgangstabelle mit allen Werten erweitere
die Ergebnisse auch automatisch in den anderen beiden Tabellenblättern sichtbar werden.
Und genau das ist auch mein Problem!!!! ( Wenn möglich ohne Makro )

Ich danke euch für eure Antworten...

MfG

Florian86

Content-Key: 246100

Url: https://administrator.de/contentid/246100

Printed on: April 24, 2024 at 05:04 o'clock

Member: colinardo
Solution colinardo Aug 10, 2014, updated at Aug 11, 2014 at 08:43:52 (UTC)
Goto Top
Hallo Florian86,
eine Lösung wäre eine Pivot-Tabelle die du nach Bedarf filtern kannst. Natürlich kannst du sie auch auf ein anderes Blatt schieben. Für ein Aktualisieren dieser, wählst du im Kontextmenü des Datenbereiches Aktualisieren. Wenn dieser Schritt zu viel "Arbeit" ist lässt sich Dieser bei Bedarf mit einem Einzeiler-VBA auch problemlos automatisieren.

Grüße Uwe
Member: Florian86
Florian86 Aug 11, 2014 at 07:39:51 (UTC)
Goto Top
Hallo,

ich habe das soweit hinbekommen. Jetzt benötige ich nur noch ein Code der Bei Zelländerung des jeweiligen Tabellenblattes
den Autofilter aktualisiert.

Hier meine Beispielexcel:

https://www.dropbox.com/s/v4xn1p0dd8igcwu/Flori.xlsx

Ich trage nun was in Tabelle1 hinzu und muss aber immer in Arbeitsblatt AHVG den Filter aktualisieren.
Dies soll automatisch gehen.

Ich habe schon so etwas gefunden....

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$1" Then
ActiveSheet.AutoFilter.ApplyFilter
End If
End Sub

nur betrifft das ja nur eine Zelle oder ????

MfG

Florian 86
Member: colinardo
Solution colinardo Aug 11, 2014 updated at 08:35:09 (UTC)
Goto Top
Moin,
wenn du es unbedingt so machen willst, dann fügst du folgenden Code in den Codeabschnitt des ersten Worksheets ein:
Private Sub Worksheet_Change(ByVal Target As Range)
    'Range bei dem eine Änderung etwas bewirken soll  
    Set changeRange = Range("A:E")  
    If Not Application.Intersect(changeRange, Target) Is Nothing Then
        'Filter 1. Worksheet  
        Worksheets("AHVG").Range("A:E").AutoFilter Field:=5, Criteria1:="AHVG"  
        'Filter 2. Worksheet  
        Worksheets("Ilm, Windisch, Beck").Range("A:E").AutoFilter Field:=5, Criteria1:=Array("Beck", "Ilm", "Windisch"), Operator:=xlFilterValues  
    End If
End Sub
Alternativ, wenn du die Filter nicht im Code angeben willst, geht es auch gekürzt so (WICHTIG: auch wieder im Codeabschnitt des ersten Worksheets einfügen, sonste funktioniert das Event nicht):
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Application.Intersect(Range("A:E"), Target) Is Nothing Then  
        Worksheets(2).AutoFilter.ApplyFilter
        Worksheets(3).AutoFilter.ApplyFilter
    End If
End Sub
Grüße Uwe

p.s. beim zweiten Sheet solltest du den Blattschutz entfernen, sonst läuft das Script in einen Fehler.
pps. Zur Info:den Blattschutz kann man auch via Code setzen und entfernen, wenn man die Blätter unbedingt vor Veränderung schützen will.

Das könnte dann z.B. für alle folgenden Sheets so aussehen:
(Update der AutoFilter auf allen Sheets außer dem ersten, und gleichzeitiger Aktivierung des Blattschutzes [hier ohne Kennwort])
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Application.Intersect(Range("A:E"), Target) Is Nothing Then  
        For i = 2 To Worksheets.Count
            Worksheets(i).Unprotect
            Worksheets(i).AutoFilter.ApplyFilter
            Worksheets(i).Protect
        Next
    End If
End Sub