Tabellenkalkulation: Filtern nach mehreren Stichworten und nach Filterkategorien sortieren

Photon

Commodore
Registriert
Apr. 2006
Beiträge
5.029
Hallo Community,

ich habe folgendes Problem: Eine Excel-Tabelle, welche die Eingänge der Kopiergeld-Überweisungen von Studenten auflistet, ist wie folgt aufgebaut:

Code:
Spalte1 | Spalte2 | Spalte 3 | 201 Kopiergeld, Vorname, Nachname, Kursnummer

Der Inhalt der ersten drei Spalten ist irrelevant (Datum, Absender, Betrag), interessant ist die letzte Spalte, der Verwendungszweck der Überweisung. Dort ist am Ende die Kursnummer angegeben, die aber leider von den Studenten nicht einheitlich angegeben wird (manche schreiben zum Beispiel M5022, andere nur M50, andere machen einen Bindestreich rein, also M-5022 usw.). Man könnte aber alle Zeilen des entsprechenden Kurses finden, indem man nach "50" filtert.

Die Aufgabe besteht nun darin, die Tabelle nach der Kursnummer zu sortieren, sodass jeder Dozent überprüfen kann, ob alle Studenten seines Kurses das Kopiergeld überwiesen haben.

Eine mögliche Lösung wäre, die Filterfunktion zu nutzen und die vierte Spalte nach "50" zu filtern, so findet man alle Zeilen des Kurses M5022. Die Zeilen kopiert man dann in eine neue Tabelle, macht den Filter rückgängig und fängt von vorne an, bis man alle Kurse herausgefiltert hat.

Nun wäre es natürlich sehr hilfreich für die Dozenten, wenn sie direkt eine sortierte Liste bzw. nur eine Liste für ihren eigenen Kurs erhalten würden und nicht selbst erst die Sortierung machen müssten. Ich versuche also gerade einen Weg zu finden, den Prozess zu vereinfachen, sodass er von unserer Sekretärin ohne großen Aufwand durchgeführt werden kann. Gibt es da Möglichkeiten, die ich übersehe? Also einer Art Möglichkeit, mehr als ein Filter-Stichwort anzugeben, wobei aber die Filter nicht mit "und" verknüpft werden und alle gleichzeitig angewendet werden, sondern jedes Stichwort eine Kategorie definiert, in der dann die entsprechend herausgefilterten Zeilen landen?

Viele Grüße,
Photon
 
Hai,

wenn man im Filterkopf sucht, gibt es einen Haken, mit dem man die aktuelle Auswahl dem Filter hinzufügen kann. So bekomme ich in komplexen bzw. unordentlichen Listen auch relativ schnell eine umfangreichere Auswahl hin.

Für Deine Anwendung wäre es außerdem empfehlenswert, mit der Datenüberprüfung zu arbeiten. Ribbon Daten -> im Abschnitt Datentools sind viele kleine Icons ohne Text, eins davon ist die Datenüberprüfung. Jede Zelle hat als Voreinstellung "Jeden Wert", es kann also alles reingeschrieben werden. Mit der Option "Liste" kannst Du einen Zellbereich festlegen, in dem gültige Werte aufgelistet sind. Du könntest also z.B. in einem anderen Blatt einfach alle möglichen Kursbezeichnungen auflisten und diesen Bereich dann in der Datenüberprüfung für die Spalte Kursnummer referenzieren. Dann können die Leute von vornherein keine freie Dateneingabe machen, sondern müssen aus der Liste picken.

Wie immer in Excel ist das natürlich nicht manipulationssicher. Wer unbedingt will, kann die Datenüberprüfung einfach abschalten oder die Liste umschreiben, aber das wäre dann halt schon Vorsatz und ggf. mit einem kräftigen Rüffel zu ahnden. Um Manipulation auszuschließen, bräuchte man dann eine Datenbankanwendung.
 
  • Gefällt mir
Reaktionen: Photon
Excel und Bash- Scripts gehen jetzt für mich nicht ganz zusammen - aber Hauptsache Problem gelöst :)
 
csv-Datei Zeile für Zeile einlesen und gucken, was im entsprechenden Feld steht:

Bash:
#!/bin/bash

FILE=$1
DIR=$(dirname $FILE)

for kurs in "${@:2}"
do
    kursdatei="$DIR/${kurs}.csv"
  echo "$kurs"
    echo "Datum;Verwendungszweck;Absender;Betrag" > $kursdatei
    while read line; do
        verwendungszweck=$(echo "${line}" | cut -d ';' -f 5)
        if [[ $verwendungszweck == *"$kurs"* ]] || [[ $verwendungszweck == *"${kurs:1}2"* ]]; then
            echo "${line}" | cut -d";" -f 3,5,12,15,16 >> $kursdatei
        fi
    done < "${FILE}"
done

kursdatei="$DIR/Vorkurse und Rest.csv"
echo "Vorkurse und Rest"
echo "Datum;Verwendungszweck;Absender;Betrag" > $kursdatei
while read line; do
    verwendungszweck=$(echo "${line}" | cut -d ';' -f 5)
    treffer=0
    for kurs in "${@:2}"; do
            if [[ $verwendungszweck == *"$kurs"* ]] || [[ $verwendungszweck == *"${kurs:1}2"* ]]; then
                treffer=$((treffer+1))
            fi
    done
    if [[ $treffer -eq "0" ]]; then
        echo "${line}" | cut -d";" -f 3,5,12,15,16 >> $kursdatei
    fi
done < "${FILE}"

Geht sicher eleganter, aber das war das, was ich gestern zusammengeschustert bekommen hab.
 
Zurück
Oben