Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Horizontal Filtern

Horizontal Filtern
17.03.2016 10:38:36
Aleardo
Hallo zusammen
Ich habe ein Problem zum Horizontalen Filtern (ausblenden). Und zwar habe ich eine Mitarbeiterliste die über 12 Monate geht, wobei für jeden Mitarbeiter pro Monat eine eigene Spalte besteht, welche aus SAP exportiert ist. Die Reihenfolge der Spalten aus SAP sind nach Monaten geordnet, das heisst, es werden für jeden Mitarbeiter für jeden einzelnen Monat individuelle Spalten aufgeführt. Die Reihenfolge ist wie folgt: Mitarbeiter 1 (Jan); Mitarbeiter 2 (Jan); Mitarbeiter 2 (Jan), etc. Nun möchte ich aber gerne, dass ich alle horizontalen Spalten pro Mitarbeiter filtern (bzw. ausblenden), so dass ich dadurch eine Jahresübersicht über den Mitarbeiter erhalte: Mitarbeiter 1 (Jan); Mitarbeiter 1 (Feb); Mitarbeiter 1 (März); etc.
Die Filterfunktion sollte über das aus 3 Buchstaben bestehende Kürzel des Namens erfolgen (siehe Beispiel xls).
Herzlichen Dank für Eure Hilfe. Ich habe zur Veranschaulichung noch das xls angehängt. https://www.herber.de/bbs/user/104411.xlsx
Gruss,
Aleardo

Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Horizontal Filtern
17.03.2016 11:02:20
Michael
Hallo!
Teste mal, in Deiner Beispiel-Datei:
Sub SpaltenNachMitarbeiterAusblenden()
Dim MaNameKurz As String
Dim Spalten As Range
Dim Zelle As Range
Application.ScreenUpdating = False
MaNameKurz = InputBox("MA-Kürzel eingeben", "MA-Jahresansicht")
Set Spalten = ActiveSheet.Range(Cells(1, 2), Cells(1, ActiveSheet.Columns.Count))
Spalten.EntireColumn.Hidden = True
For Each Zelle In Spalten
If InStr(1, Zelle.Text, MaNameKurz, vbTextCompare) > 0 Then
Zelle.EntireColumn.Hidden = False
End If
Next
Application.ScreenUpdating = True
End Sub
Code muss in ein allgemeines Modul. Alt + F11, im VBA-Editor Einfügen Modul, Code hineinkopieren, mit F5 teste.
LG
Michael

Anzeige
AW: Horizontal Filtern
17.03.2016 11:56:46
Aleardo
Hallo Michael
BINGO!! Herzlichen Dank. Genial.
Darf ich so frech sein, jetzt wo ich auf den Geschmack gekommen bin, dass es noch gleichzeitig die Spalte "A" filtert und nur die Projekte automatisch anzeigt, bei welchen beim gefilterten Mitarbeiter auf ein Eintrag vorhanden ist?
Das wäre die creme de al creme.
Herzlichen Dank aber nochmals für die grossartige Hilfe!
Gruss,
Aleardo

Anzeige
Schon ungeduldig? ;-)...
17.03.2016 14:30:45
Michael
Calma signore Aleardo!
Du musst nicht ungeduldig werden; manche Dinge sind nicht ganz trivial, und manche von uns haben zwischendurch auch noch was anderes zu tun! Freut mich, dass dir mein Makro hilft. Bzgl. Deiner weiteren Frage:
Das wird in Deiner derzeitigen Daten-/Tabellenkonstellation nicht funktionieren (zumindest fällt mir noch nichts schlaues dazu ein!). Erstens sind Deine gesamten Werte Texte und keine Zahlen, und auch in den leeren Wertfeldern sind Zeichen vorhanden (vermutlich Leerzeichen); somit sind das auch Texte.
Das ist deshalb problematisch, weil damit nicht gut rechnen ist - habe überlegt ob ich Dir über eine Hilfsspalte zähle, wieviele Einträge in der Zeile vorhanden sind, und dann darüber einen AutoFilter lege.
Leider - so wie's momentan in Deiner Bsp-Mappe ausschaut, sehe ich keine Möglichkeit. Wenn mir noch was einfällt, melde ich mich.
LG
Michael

Anzeige
Ha, so geht's...
17.03.2016 14:44:59
Michael
Ecco Signore Aleandro...
Hier doch noch eine Möglichkeit, hab's direkt in Deiner Bsp-Datei im Blatt Tabelle2 getestet, teste Du es bitte auch nochmal: https://www.herber.de/bbs/user/104420.xlsm
Wichtig war hier: Ich hab Deine Daten aus dem 1. Blatt ins 2. kopiert und dort dann alle Zellwerte mit sich selbst ersetzt, so entstehen echte Zahlenwerte und dann klappt mein Workaround.
Makros sind soweit drinnen - auch eines zum zurücksetzen der Ansicht.
Gib Bescheid!
LG
Michele

Anzeige
AW: Ha, so geht's...
18.03.2016 06:59:51
Aleardo
Ciao Michele
Grazie Mille.....für deine super Hilfe!!
Funktioniert einwandfrei.
Gruss,
Aleardo

AW: Ha, so geht's...
18.03.2016 07:04:03
Aleardo
....UND danke für die absolute Luxusvariante, dass du sogar das Makro für die Umwandlung der Daten beigefügt hast.....

Piacere! - Danke für die Rückmeldung, owT
18.03.2016 09:48:07
Michael

Anzeige
AW: Horizontal Filtern
17.03.2016 15:39:07
Daniel
Hi
hier ne Möglichkeit als Makro zum Ausblenden von Zeilen und Spalten (aber warum hast du VBA-Nein angegeben, wenn du ne VBA-Lösung willst?)
Sub ausblenden()
Dim MaNameKurz As String
Dim rngSpalte As Range
Dim rngZeile As Range
Dim Zelle As Range
Cells.EntireColumn.Hidden = False
Cells.EntireRow.Hidden = False
Set rngSpalte = Cells(1, 1)
Set rngZeile = Cells(1, 1)
MaNameKurz = InputBox("MA-Kürzel eingeben", "MA-Jahresansicht")
For Each Zelle In Range(Cells(1, 2), Cells(1, 1).End(xlToRight))
If Zelle.Value Like "*" & MaNameKurz & "*" Then
Set rngSpalte = Union(rngSpalte, Zelle)
Set rngZeile = Union(rngZeile, Zelle.EntireColumn.SpecialCells(xlCellTypeConstants). _
EntireRow)
End If
Next
With ActiveSheet.UsedRange.Offset(1, 1)
.EntireColumn.Hidden = True
.EntireRow.Hidden = True
End With
rngSpalte.EntireColumn.Hidden = False
rngZeile.EntireRow.Hidden = False
End Sub
Gruß Daniel

Anzeige
AW: Horizontal Filtern
17.03.2016 11:04:00
Daniel
Hi
ein Filtern für Spalten gibt es in Excel nicht.
wenn du nur die Spalten eines Mitarbeiters sehen und die anderen ausblenden willst, gehe so vor:
1. füge eine über der Überschriftenzeile eine weiter Zeile ein (Zeile 1)
2. in diese Hilfszeile kommt ab Zelle B1 bis zum Tabellenende folgende Formel:
=WENN(ISTZAHL(SUCHEN($A$1;B2));"";FALSCH)
3. in die Zelle A1 kommt das Kürzel des gesuchten Mitarbeiters
jetzt steht in der Hilfszeile in den Spalten beim gesuchten Mitarbeiter der Text "" und bei den anderen Mitarbeitern der Wahrheitswert FALSCH.
4. markiere die Zeile 1 und schränke die Selektion auf die Wahrheitswerte ein, klicke hierzu:
START - BEARBEITEN - SUCHEN UND AUSWÄHLEN - INHALTE - FORMELN - WAHRHEITSWERTE
5. klicke jetzt den Menüpunkt
START - ZELLEN - FORMAT - SICHTBARKEIT - AUSBLENDEN & EINBLENDEN - SPALTEN AUSBLENDEN
eine andere Variante wäre, dass du die Tabelle nach den Namenskürzeln sortierst, so dass gleiche Namen direkt nebeneinander stehen.
auch hierzu fügst du in der Zeile 1 eine Hilfsszeile mit dieser formel ein , um das Namenskürzel zu extrahieren: =Teil(B2;8;99)
dann sortierst du die Liste nach der Zeile 1, um so zu sortieren, klicke im "Sortieren"-Dialog auf "Optionen" und lege fest, dass du Spalten sortieren willst.
die dritte Variante wäre, dass du die Tabelle transponierst (dh Zeilen und Spalten tauschst) um dann mit dem normalen Excel-Zeilenfilter arbeiten zu können.
hierzu kopierst du die Tabelle und fügst sie auf einem neuen Blatt mit der Option "Transponieren" ein.
diese Option wird dir im Kontextmenü zum einfügen als 4. Option angeboten.
Gruß Daniel

Anzeige
AW: Horizontal Filtern
17.03.2016 14:08:16
Aleardo
Hallo
Das Makro von Michael hat mir geholfen. Danke! Wie könnte das Makro ergänzt werden, dass es zum einen die Mitarbeiter filtert und zum anderen nur die Projekte in Spalte A anzeigt, für die ein Wert in den Folgespalten besteht?
Sub SpaltenNachMitarbeiterAusblenden()
Dim MaNameKurz As String
Dim Spalten As Range
Dim Zelle As Range
Application.ScreenUpdating = False
MaNameKurz = InputBox("MA-Kürzel eingeben", "MA-Jahresansicht")
Set Spalten = ActiveSheet.Range(Cells(1, 2), Cells(1, ActiveSheet.Columns.Count))
Spalten.EntireColumn.Hidden = True
For Each Zelle In Spalten
If InStr(1, Zelle.Text, MaNameKurz, vbTextCompare) > 0 Then
Zelle.EntireColumn.Hidden = False
End If
Next
Application.ScreenUpdating = True
End Sub
Gruss,
Aleardo
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Horizontal Filtern in Excel: So gelingt's!


Schritt-für-Schritt-Anleitung

Um horizontal in Excel zu filtern, kannst Du ein einfaches VBA-Makro verwenden, das die gewünschten Spalten basierend auf einem Mitarbeiterkürzel ausblendet. Hier ist eine Schritt-für-Schritt-Anleitung:

  1. Öffne den VBA-Editor: Drücke Alt + F11.

  2. Füge ein neues Modul hinzu: Klicke auf Einfügen und wähle Modul.

  3. Kopiere den folgenden Code in das Modul:

    Sub SpaltenNachMitarbeiterAusblenden()
       Dim MaNameKurz As String
       Dim Spalten As Range
       Dim Zelle As Range
       Application.ScreenUpdating = False
       MaNameKurz = InputBox("MA-Kürzel eingeben", "MA-Jahresansicht")
       Set Spalten = ActiveSheet.Range(Cells(1, 2), Cells(1, ActiveSheet.Columns.Count))
       Spalten.EntireColumn.Hidden = True
       For Each Zelle In Spalten
           If InStr(1, Zelle.Text, MaNameKurz, vbTextCompare) > 0 Then
               Zelle.EntireColumn.Hidden = False
           End If
       Next
       Application.ScreenUpdating = True
    End Sub
  4. Führe das Makro aus: Drücke F5, um das Makro zu testen.

  5. Gib das MA-Kürzel ein, um die entsprechenden Spalten anzuzeigen.

Wenn Du mit dem Code nicht vertraut bist, keine Sorge! Das ist eine der einfacheren Methoden, um in Excel horizontal zu filtern.


Häufige Fehler und Lösungen

  • Fehler: Spalten werden nicht ausgeblendet
    Lösung: Stelle sicher, dass das Kürzel korrekt eingegeben wurde und dass es in der Überschrift vorhanden ist.

  • Fehler: Excel hängt sich auf
    Lösung: Überprüfe die Daten auf leere oder fehlerhafte Zellen, die das Skript stören könnten.

  • Fehler: Makro funktioniert nicht
    Lösung: Überprüfe, ob Du die Makros in Excel aktiviert hast. Gehe zu Datei > Optionen > Trust Center und aktiviere die Makros.


Alternative Methoden

Falls Du kein VBA verwenden möchtest, gibt es auch manuelle Methoden:

  1. Hilfszeile einfügen: Füge eine neue Zeile über der Überschrift ein und benutze die Formel:

    =WENN(ISTZAHL(SUCHEN($A$1;B2));"";FALSCH)

    Diese Formel zeigt an, ob das Mitarbeiterkürzel vorhanden ist.

  2. Filter anwenden: Wähle die Hilfszeile aus, gehe zu Daten > Filtern und filtere nach dem Wahrheitswert FALSCH.

  3. Transponieren der Daten: Kopiere die Tabelle und füge sie mit der Option "Transponieren" in ein neues Blatt ein. Damit kannst Du dann die standardmäßigen Excel-Zeilenfilter verwenden.


Praktische Beispiele

Angenommen, Du hast eine Mitarbeiterliste mit den Monaten in den Spalten. Mit dem Makro kannst Du beispielsweise alle Spalten für "Max" ausblenden und nur die Spalten für "Max" anzeigen. Dieses Vorgehen hilft Dir, eine klare Übersicht über die Leistung von Max im gesamten Jahr zu erhalten.

Ein weiteres Beispiel wäre die Verwendung der Hilfszeile, um schnell zu sehen, welche Mitarbeiter in einem bestimmten Projekt aktiv waren.


Tipps für Profis

  • Verwende Named Ranges: Definiere benannte Bereiche für Deine Daten, um die Lesbarkeit des Codes zu erhöhen.
  • Optimiere die Performance: Schalte die Bildschirmaktualisierung nur dann aus, wenn es wirklich nötig ist. Das verbessert die Performance.
  • Nutze die Option Explicit-Direktive: Diese sorgt dafür, dass alle Variablen deklariert werden müssen, was Fehler beim Programmieren reduziert.

FAQ: Häufige Fragen

1. Kann man in Excel auch horizontal filtern?
Ja, Du kannst in Excel horizontal filtern, indem Du VBA-Makros oder manuelle Methoden wie Hilfszeilen verwendest.

2. Wie kann ich mehrere Mitarbeiter gleichzeitig filtern?
Das Standard-Makro filtert nur nach einem Kürzel. Du müsstest den Code anpassen, um mehrere Kürzel zu akzeptieren.

3. Funktioniert das auch in Excel 365?
Ja, die beschriebenen Methoden funktionieren in Excel 365 sowie in älteren Versionen.

4. Gibt es eine Möglichkeit, die gefilterten Zeilen zu zählen?
Ja, Du kannst die Funktion ANZAHL verwenden, um die Anzahl der sichtbaren Zeilen nach dem Filtern zu zählen.

5. Wie kann ich die gefilterten Daten zurücksetzen?
Du kannst das Makro so erweitern, dass es alle Spalten wieder sichtbar macht, oder Du kannst manuell den Filter zurücksetzen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige