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

Automatisierte Prioritätenliste

Forumthread: Automatisierte Prioritätenliste

Automatisierte Prioritätenliste
04.04.2018 09:05:51
Thomas
Hallo zusammen,
ich stehe aktuell vor folgender Herausforderung:
Ich habe eine normale Excel Tabelle mit verschiedenen Aufgabenpunkten.
Nun sollen diese einzelnen Zeilen aber noch individuell von Dritten priorisiert werden.
Dafür gibt es eine Spalte "Priorität", in der die Werte 1 bis 30 (am besten per Dropdown) eingetragen werden können.
Gibt es eine Möglichkeit, dass erstens die Werte nur einmalig eingetragen werden können (also jede Priorisierung nur einmal). Und zweitens, dass sich die Zeilen automatisch in der Reihenfolge ihrer Priorisierung anordnen?
Also wenn ich jetzt in einer Zeile die Priorisierung auf "1" ändere, dass diese Zeile ganz nach oben springt ("2" and die zweite Stelle usw. ...).
Kann mir da vielleicht jemand weiterhelfen, bzw. ist sowas überhaupt machbar?
Danke & viele Grüße
Thomas
Anzeige

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
ja, das ist möglich, aber...
04.04.2018 09:10:05
Oberschlumpf
...zeig mal bitte eine Bsp-Datei mit Bsp-Daten.
Hi Thomas,
du verrätst nicht, welche Zeilen/Spalten du nutzt.
Zeig uns alo bitte per Upload eine Bsp-Datei, die genau so aufgebaut ist, wie deine Originaldatei.
Ciao
Thorsten
AW: ja, das ist möglich, aber...
04.04.2018 11:21:58
Oberschlumpf
Hi Thomas,
ich hab mittlerweile selbst "meine" Bsp-Datei "gebastelt".
Hier, guck mal:
https://c.gmx.net/@334256655850015599/MYQveJlhSg6rnOFE4PSGJA
Es handelt sich um eine Video-Datei (mp4), die Folgendes zeigt:
- als Bsp werden die Spalten A (Aufgabe) und Spalte b (Priorität) genutzt
- jede Zelle in Spalte B hat, wie gewünscht, eine Wert-Auswahlliste mit den Werten 1 (minimum) und 30 (Maximum)
- sobald in Spalte B ein Wert von 1 bis 30 ausgewählt wurde, wird die komplette Liste automatisch nach Spalte B, aufsteigend, sortiert
- wird in Spalte B ein Prio-Wert ausgewählt, der schon in einer anderen Zeile vorhanden ist, erscheint ein Hinweis, dass jeder Prio-Wert nur 1x ausgewählt werden darf; der doppelt ausgewählte Wert wird automatisch entfernt
- werden alle Werte in Spalte B wieder gelöscht, wird die komplette Liste jetzt aufsteigend nach Spalte A sortiert
Ok, der letzte Punkt ist vielleicht nicht gewünscht und kann natürlich aus dem Code entfernt werden, aber ich war gerad in "VBA-Bastel-Laune" :-)
So, jetzt wunderst du dich vielleicht, wieso ich dir nur einen Film zeige, wie es funktionieren kann und nicht gleich meine Bsp-Datei per Upload zur Verfügung stelle.
Na ja, ich weiß noch immer nicht, welche Zeilen/Spalten in deiner Datei genutzt werden.
Und ich möchte ja deine Bsp-Datei, die die gleichen Zeilen/Spalten wie in deiner Originaldatei nutzt, natürlich vom Code her anpassen.
Aber dafür benötige ich eben von dir eine Bsp-Datei per Upload mit Bsp-Daten.
Ciao
Thorsten
Anzeige
AW: ja, das ist möglich, aber...
04.04.2018 11:31:35
Thomas
Hi Thorsten,
sorry, ich hatte erst die von Bernd verknüpfte andere Lösung genommen, die auch zuerst funktioniert hat. Da es aber jetzt nicht mehr so wirklich klappt, teste ich mal deine Lösung.
Bevor ich mir das Video mal anschaue, ist hier anbei meine Beispiel Datei.
Die Datei zeigt zwar nur 10 verschiedene Zeilen mit Inhalten, aber das kann dann ja beliebig erweitert werden. Die Anzahl der Spalten etc. ist so wie in der Originaldatei.
https://www.herber.de/bbs/user/120846.xlsx
VG
Thomas
Anzeige
AW: ja, das ist möglich, aber...
04.04.2018 11:38:57
Thomas
Kleiner Nachtrag:
Deine Lösung sieht ziemlich perfekt aus :)
Wenn wir das jetzt noch auf meine Datei anpassen könnten, wäre das super ;)
AW: ja, das ist möglich, aber...
04.04.2018 12:00:32
Oberschlumpf
Hi Thomas,
ja, danke für ziemlich perfekt :-)
Und ich hab deine Bsp-Datei auch angepasst.
Hier, guckst du:
https://www.herber.de/bbs/user/120847.xlsm
Was du im Code vielleicht anpassen musst, ist der im Code verwendete Tabellenname, in der alles passiert.
In deiner Bsp-Datei heißt die Tabelle = "Test".
Wenn in der Originaldatei die Tabelle anders heißt, musst du im Code überall "Test" gegen den richtigen Tabellennamen austauschen.
Hilfts?
Ciao
Thorsten
Anzeige
AW: ja, das ist möglich, aber...
04.04.2018 13:03:16
Thomas
Hi Thorsten,
ich bin begeistert.
Funktioniert absolut einwandfrei.
Vielen Dank für deine Mühen.
VG
Thomas
AW: ja, das ist möglich, aber...
04.04.2018 13:08:57
Oberschlumpf
Hi Thomas,
alles klar, gerne!
Kleine Bitte für die Zukunft:
Bei den nächsten Fragen, die du stellst, würde ich immer empfehlen, per Upload eine Bsp-Datei mitzuliefern.
Ich hab schon oft die Erfahrung gemacht, dass inklusive Bsp-Datei viel schneller eine Lösung gefunden wird, als wenn erst mal viel hin und her gefragt/geantwortet wird.
Ciao
Thorsten
Anzeige
AW: Automatisierte Prioritätenliste
04.04.2018 09:25:15
Thomas
Hi Bernd,
super vielen Dank.
Funktioniert (nach erstem Testen) einwandfrei.
Jetzt nur noch eine andere Frage.
Kann man die Dropdown Liste so einstellen, dass jeder Wert nur einmal vorkommen kann?
Also dass nicht zB zwei mal die Priorität "1" verwendet werden kann?
VG
Thomas
Anzeige
AW: Automatisierte Prioritätenliste
04.04.2018 10:39:15
Thomas
Hallo nochmal,
ich antworte jetzt einfach hier, da der Beitrag, aus dem ich den Code habe, von 2008 ist...
Ich habe den VBA Code für meine Tabelle angepasst und die automatische Sortierung hat auch geklappt.
Jetzt habe ich die Datei zum Testen an jemand anderen geschickt und dort kam beim Ändern der Priorisierung folgender Fehler:
Laufzeitfehler '1004':
Die Sort-Methode des Range-Objektes konnte nicht ausgeführt werden.
Der Debugger zeigt folgendes (fett markierte Zeilen):
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lngZeileLast As Long
Const SpalteSort As Long = 5
Const lngZeile1 As Long = 8
If Target.Column = SpalteSort And Target.Row >= lngZeile1 And Target.Cells.Count = 1 Then
With Me
lngZeileLast = .Cells(.Rows.Count, SpalteSort).End(xlUp).Row
If lngZeileLast > lngZeile1 Then
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False
        .Range(.Rows(lngZeile1), .Rows(lngZeileLast)).Sort Key1:=.Cells(lngZeile1, _
SpalteSort), order1:=xlAscending, Header:=xlNo
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True
Application.ScreenUpdating = True
End If
End With
End If
End Sub

Schaffe es aktuell nicht dieses Problem zu beheben.
VG
Thomas
Anzeige
AW: Automatisierte Prioritätenliste
04.04.2018 12:55:48
Werner
Hallo Thoas,
ich kann den Fehler mit deinem Code nicht nachvollziehen - läuft durch und sortiert.
Wobei mir unklar ist, was das With Me - End With in diesem Zusammenhang soll? Es spielt sich doch sowieso alles auf dem Blatt ab, in welchem auch der Code steht.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lngZeileLast As Long
Const SpalteSort As Long = 5
Const lngZeile1 As Long = 8
If Target.Column = SpalteSort And Target.Row >= lngZeile1 And Target.Cells.Count = 1 Then
lngZeileLast = Cells(Rows.Count, SpalteSort).End(xlUp).Row
If lngZeileLast > lngZeile1 Then
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False
Range(Rows(lngZeile1), Rows(lngZeileLast)).Sort Key1:=Cells(lngZeile1, _
SpalteSort), order1:=xlAscending, Header:=xlNo
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True
Application.ScreenUpdating = True
End If
End If
End Sub
Gruß Werner
Anzeige
Erklärung für...
04.04.2018 13:05:54
Oberschlumpf
Hi Werner
...Wobei mir unklar ist, was das With Me - End With in diesem Zusammenhang soll?...
Vielleicht ist die Antwort bei Excel gut - VBA bescheiden zu finden.
Thomas hatte den Code einfach übernommen, getestet + festgestellt: funktioniert so weit
Aber was genau der Code Zeile für Zeile macht, hat Thomas vielleicht (noch) nicht verstanden.
So zumindest würde ich die Übernahme von With Me/End With erklären.
Warum Code bei Testperson Fehler verursacht, weiß ich auch nicht.
Ciao
Thorsten
Anzeige
;
Anzeige

Infobox / Tutorial

Automatisierte Prioritätenliste in Excel erstellen


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und erstelle eine neue Tabelle oder öffne eine bestehende Datei, in der du deine Prioritätenliste erstellen möchtest.

  2. Erstelle die Spalten:

    • In Spalte A füge die Aufgaben hinzu (z.B. "Aufgabe 1", "Aufgabe 2").
    • In Spalte B füge die Spalte "Priorität" hinzu, die die Werte 1 bis 30 erhalten soll.
  3. Erstelle ein Dropdown-Menü:

    • Markiere die Zellen in Spalte B, wo die Prioritäten eingegeben werden sollen.
    • Gehe zu Daten > Datenüberprüfung.
    • Wähle Liste und gib die Werte 1,2,3,...,30 ein. So kannst du die Prioritäten als Dropdown auswählen.
  4. Füge VBA-Code hinzu:

    • Öffne den VBA-Editor mit ALT + F11.
    • Füge folgenden Code in das entsprechende Arbeitsblatt ein:
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim lngZeileLast As Long
    Const SpalteSort As Long = 2 ' Spalte B
    Const lngZeile1 As Long = 2   ' Beginn der Daten (Ändere dies je nach Bedarf)
    
    If Target.Column = SpalteSort And Target.Row >= lngZeile1 Then
       lngZeileLast = Cells(Rows.Count, SpalteSort).End(xlUp).Row
       If lngZeileLast >= lngZeile1 Then
           Application.ScreenUpdating = False
           Application.Calculation = xlCalculationManual
           Application.EnableEvents = False
           Range(Rows(lngZeile1), Rows(lngZeileLast)).Sort Key1:=Cells(lngZeile1, SpalteSort), Order1:=xlAscending, Header:=xlNo
           Application.Calculation = xlCalculationAutomatic
           Application.EnableEvents = True
           Application.ScreenUpdating = True
       End If
    End If
    End Sub
  5. Teste die Funktion: Ändere die Werte in der Spalte "Priorität". Die Liste sollte sich automatisch nach den Prioritäten sortieren.


Häufige Fehler und Lösungen

  • Laufzeitfehler '1004': Dieser Fehler tritt häufig auf, wenn der Bereich, der sortiert werden soll, nicht korrekt definiert ist. Stelle sicher, dass die lngZeile1 und lngZeileLast korrekt gesetzt sind.

  • Dropdown-Werte können mehrfach verwendet werden: Um sicherzustellen, dass jeder Wert nur einmal verwendet werden kann, musst du eine zusätzliche Überprüfung im VBA-Code einfügen, die kontrolliert, ob der gewählte Wert bereits in der Liste existiert.


Alternative Methoden

  • Verwendung von Excel-Tabellen: Du kannst die Aufgaben in einer Excel-Tabelle formatieren. Excel verwaltet die Sortierung und Filterung automatisch.

  • Pivot-Tabellen: Für eine dynamische Analyse und Priorisierung kannst du auch Pivot-Tabellen verwenden, um deine Aufgaben nach Priorität zu sortieren.


Praktische Beispiele

  • Beispiel einer Prioritätenliste: Aufgabe Priorität
    Aufgabe 1 2
    Aufgabe 2 1
    Aufgabe 3 3
  • VBA-Anpassung für eine größere Liste: Wenn du eine größere prioritätenliste excel erstellst, stelle sicher, dass die lngZeile1 und lngZeileLast entsprechend angepasst werden, um alle Zeilen zu berücksichtigen.


Tipps für Profis

  • Verwendung von benannten Bereichen: Anstatt feste Zellbereiche zu verwenden, kannst du benannte Bereiche für die Prioritätenliste erstellen, was die Wartung erleichtert.

  • Automatisierung mit weiteren VBA-Funktionen: Du kannst den VBA-Code erweitern, um automatisierte E-Mails zu versenden, wenn bestimmte Prioritäten erreicht sind.


FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass die Prioritäten nur einmal verwendet werden können? Du kannst eine zusätzliche Prüfung im VBA-Code implementieren, die überprüft, ob der Wert bereits in der Spalte vorhanden ist.

2. Funktioniert das auch in älteren Excel-Versionen? Ja, die meisten Funktionen, einschließlich Dropdown-Menüs und VBA, sind in Excel 2010 und neuer verfügbar. Achte darauf, dass die VBA-Optionen aktiviert sind.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige