Autor
|
Thema: Tabellenblattübergreifende Filterfunktion (7143 mal gelesen)
|
thewolff Mitglied
Beiträge: 140 Registriert: 03.06.2003
|
erstellt am: 13. Jul. 2009 07:29 <-- editieren / zitieren --> Unities abgeben:
Moin Excel-Profis, in der Beispieldatei möchte ich, im Tabellenblatt Abfrage, in dem blauen Feld eine Summe eintragen die sich über die Vergleichswerte aus der Tabelle Info zusammensetzt. Bisher wechsel ich in die Tabelle Info, treffe meine Filterauswahl (1 bis 3, 2 oder auch alle 3) und bekomme in der Zeile 1 meinen entsprechenden Wert oder bei mehreren Treffern einen Mittelwert. Ich möchte das Blatt Info verstecken (besser als extra Datei) und in den gelben Feldern auf Tabellenblatt Abfrage soll dieser Filter angesteuert werden. Wie kann ich die Filterfunktion ansteuern oder muss ich den Filterwert auf das andere Tabellenblatt übergeben? Bin ich mit dieser Arbeit bislang auf dem richtigen Weg oder habe ich im Aufbau der Datei schon grundlegende Fehler gemacht? Könnt Ihr mir bitte bei dieser Problematik behilflich sein oder habt Ihr Veränderungs- oder andere Lösungsvorschläge? Das ist sicherlich eine Datenbankfunktion und mit einem anderen Programm besser zu lösen, aber ich habe nur Excel zur Verfügung. ------------------ Gruß Marco
[Diese Nachricht wurde von thewolff am 14. Jul. 2009 editiert.] [Diese Nachricht wurde von thewolff am 14. Jul. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
runkelruebe Moderator Straßen- / Tiefbau
Beiträge: 8075 Registriert: 09.03.2006 MS-Office 365 ProPlus x86 WIN7(x64)
|
erstellt am: 14. Jul. 2009 08:46 <-- editieren / zitieren --> Unities abgeben: Nur für thewolff
Guten Morgen, Da Deine Mappe in 97-2003-Format gespeichert ist, gehe ich (leider) von einer Version unter 2007 aus. Warum leider: Weil Du in der 2007 die Funktion Code: MITTELWERTWENNS(Durchschnitt_Bereich;Kriterien_Bereich1;Kriterium1;Kriterien_Bereich2;Kriterien2…;)
zur Verfügung hättest. Als Beispiel: In Deinem Info-Blatt definierst Du Namen : FiAuftrag =Info!$A$4:$A$38 FiKunde =Info!$B$4:$B$38 FiProjekt =Info!$C$4:$C$38 Ko1=Info!$D$4:$D$38 Ko2=Info!$E$4:$E$38 Ko3=Info!$F$4:$F$38Und kannst damit auf dem Abfrage-Blatt mit der Formel Code: =MITTELWERTWENNS(Ko1;FiAuftrag;$B$3;FiKunde;$C$3;FiProjekt;$D$3)
arbeiten.Aber, hast Du ja leider nicht. Fällt mir auf die Schnelle nur Plan B ein: VBA um den Autofilter zu steuern:
Code: Sub AFilter() If Sheets(1).Range("B3") <> "" Then Sheets(2).Range("$A$3:$C$38").Autofilter Field:=1, Criteria1:=Sheets(1).Range("B3") If Sheets(1).Range("C3") <> "" Then Sheets(2).Range("$A$3:$C$38").Autofilter Field:=2, Criteria1:=Sheets(1).Range("C3") If Sheets(1).Range("D3") <> "" Then Sheets(2).Range("$A$3:$C$38").Autofilter Field:=3, Criteria1:=Sheets(1).Range("D3") End Sub Public Sub AFilter_Reset() If Sheets(2).AutoFilterMode Then If Sheets(2).FilterMode Then Sheets(2).ShowAllData End Sub
Um das Info-Blatt zu verstecken, nutz die Worksheets(2).Visible = xlVeryHidden Eigenschaft. Vom Auslagern in eine andere Datei halte ich pers. nicht viel. Immer mal wieder verschiebt man eine Datei, ohne an die Folgen für bestehende, referenzierende andere Dateien zu denken. Der Schaden wird kleiner, wenn man innerhalb einer Datei bleibt. Wenn die Datei nach draußen gehen soll, solltest Du sowieso eine "Export-Datei" erzeugen, z.B. mit ThisWorkbook.Sheets(1).Copybtw, warum eigentlich =TEILERGEBNIS(9;E4:E99)/TEILERGEBNIS(2;E4:E99) und nicht gleich =TEILERGEBNIS(1;E4:E38)? ------------------ Gruß, runkelruebe Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße... System-Info | Excel -Suche | RuA-Suche | FAQ-ACAD | CAD.de-Hilfe | Sei eine Antilope Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Beverly Mitglied Dipl.-Geologe (Rentner)
Beiträge: 394 Registriert: 11.08.2007
|
erstellt am: 14. Jul. 2009 09:12 <-- editieren / zitieren --> Unities abgeben: Nur für thewolff
Hi Marco, das lässt sich nur mit VBA lösen. Dazu im Codemodul des Tabellenblattes Abfrage diesen Code: Code: Private Sub Worksheet_Change(ByVal Target As Range) With Worksheets("Info") If Target.Count = 1 Then Select Case Target.Address Case "$B$3", "$C$3", "$D$3" If Target = "" Then .Cells(3, Target.Column - 1).AutoFilter field:=Target.Column - 1 Else .Cells(3, Target.Column - 1).AutoFilter field:=Target.Column - 1, Criteria1:=Target End If End Select Else If Not Intersect(Target, Range("B3:D3")) Is Nothing Then If Target.Cells(1) = "" Then If .FilterMode Then .ShowAllData Else MsgBox "Bitte jeden Filter getrennt setzen" End If End If End If End With End Sub
Du solltest deine Formeln im Tabellenblatt Abfrage so schreiben, dass im Falle eines Nichtfindens eines Filterkriteriums die Formeln keinen Fehler anzeigen - also nach diesem Prinzip: B7: =WENN(ISTFEHLER(Info!D1);"";Info!D1) C7: =WENN(B7=0;0;B7/B$10) Die Formeln im Tabellenblatt Info solltest du vielleicht umschreiben, sodass 0 angezeigt wird wenn im Tabellenblatt kein Filterkriterium steht: D1: =WENN(Abfrage!B3<>"";TEILERGEBNIS(9;D4: D99)/TEILERGEBNIS(2;D4: D99);0) E1: =WENN(Abfrage!B3<>"";TEILERGEBNIS(9;E4:E99)/TEILERGEBNIS(2;E4:E99);0) F1: =WENN(Abfrage!B3<>"";TEILERGEBNIS(9;F4:F99)/TEILERGEBNIS(2;F4:F99);0) Bisher wird ja in diesem Fall die Summe aller Einträge angezeigt. Ich nehme an, dass die Auftragsnummer ein eindeutiges Kennzeichen ist, also nur jeweils 1 Mal erscheint? Dann solltest du für B3 ein DropDown-Listenfeld aus Daten Gültigkeit verwenden, sodass nur die vorhandenen Daten ausgewählt werden können. Deine Formel in D7: D9 habe ich nicht verstanden - da muss ja immer 0 als Ergebnis erscheinen, da in der Bezugszelle D10 außer 0 nichts anderes drin steht. ------------------ Bis später, Karin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Thomas Harmening Moderator Arbeiter ツ
Beiträge: 2897 Registriert: 06.07.2001 Das Innerste geäussert und aufs Äusserste verinnerlicht
|
erstellt am: 14. Jul. 2009 12:54 <-- editieren / zitieren --> Unities abgeben: Nur für thewolff
IMHO auch Formelonly machbar . in C1 steht "AUTO" Code: =SUMMENPRODUKT((C4:C38=C1)*(D4:D38))/SUMMENPRODUKT((C4:C38=C1)*1)
liefert auch das Teilergebnis - aka Filter Projekt auf Auto - den Wert 241072,8571 aus, nun die Formel auf Spalte B, A erweitern und in Blatt Abfrage Dropdown-Gültigkeiten für die Zellen B3, D3, E3 definieren. da musss dann in Blatt info nichts gefiltert werden - ein Filter ist ja auch nur Mathematik und dann gäbe es noch die Datenbankfunktion in Excel... maybe? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
thewolff Mitglied
Beiträge: 140 Registriert: 03.06.2003
|
erstellt am: 24. Aug. 2009 17:38 <-- editieren / zitieren --> Unities abgeben:
Hallo Leute, danke für Eure tolle Hilfe. Ich war längere Zeit ohne PC und kann jetzt erst die ganzen Hilfestellungen testen. Nochmals Danke und sorry das ich mich erst jetzt melde. ------------------ Gruß Marco Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|