Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1856to1860
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Tabelle filtern nach Anzahl Stunden
23.11.2021 15:22:58
Benita
Hallo alle :-)
Der erste Versuch, Hilfe zu bekommen ist leider ein wenig misslungen. Ich versuche es noch einmal:
Ich habe eine Liste mit Projekten. Diese bestehen aus
einer laufenden Nummer
Projektname
Arbeitsbereich
Auftraggeber
Zeitsumme aller geleisteten Arbeitsstunden
und dem Projektstatus.
Ich möchte diese Liste filtern, und zwar soll die Möglichkeit bestehen, z.b. alle Projekte anzuzeigen, deren Zeitsumme über 100 Stunden liegt.
Ich habe bereits die Zeit in Dezimalzahlen konvertiert und erwartet, dass Excel es nun mit der Autofilterfunktion schafft, die entsprechenden Fälle anzuzeigen.
Bei der Projektnummer funktioniert es wunderbar, aber bei der Zeit verzweifle ich gerade.
dies ist der Code für die Filterfunktion:

Private Sub CB_Filtern_Click()
Dim c As Range
Dim SpalteS As String
Dim SpalteI As Integer
Dim Bereich As String   'um den Suchbereich zu definieren
Dim Operator As String '(=)
Dim Kriterium As Variant
Dim Kategorie As String
Dim last As Integer
If ActiveSheet.FilterMode Then
ActiveSheet.ShowAllData
End If
Kategorie = ComboBox_Filtern.Text
If Kategorie = "Projektnummer" Then
SpalteS = "C"
SpalteI = 1
Kriterium = CLng(ComboBox_Attr.value)
ElseIf Kategorie = "Projektbezeichnung" Then
SpalteS = "D"
SpalteI = 2
Kriterium = CStr(ComboBox_Attr.value)
ElseIf Kategorie = "Arbeitsbereich" Then
SpalteS = "E"
SpalteI = 3
Kriterium = ComboBox_Attr.value
ElseIf Kategorie = "Auftraggeber" Then
SpalteS = "F"
SpalteI = 4
Kriterium = ComboBox_Attr.value
ElseIf Kategorie = "Zeitsumme" Then
SpalteS = "G"
SpalteI = 5
Kriterium = CDbl(ComboBox_Attr.value * 60 / 1440)
ElseIf Kategorie = "Status" Then
SpalteS = "H"
SpalteI = 6
Kriterium = ComboBox_Attr.value
Else: Exit Sub
End If
last = newLast("Projekte", SpalteI)
Bereich = SpalteS & "8:" & SpalteS & last
Operator = ComboBox_Operator.Text
For Each c In ActiveSheet.Range(Bereich)
Select Case Operator
Case "=": If c.value = Kriterium Then c.AutoFilter SpalteI, Kriterium
Case "": If c.value > Kriterium Then c.AutoFilter SpalteI, Criteria1:=">" & Kriterium
Case ">=": If c.value >= Kriterium Then c.AutoFilter SpalteI, Criteria1:=">=" & Kriterium
Case "
die einzelnen Komponenten (csv, UserForm und Modul) sind unter diesem Link zu finden:
https://www.herber.de/bbs/user/149341.zip
Eine abgespeckte Version der Tabelle ist hier (leider ist die Datei so groß, dass ich sie nicht anders zur Verfügung stellen kann. Ich weiß leider nicht, wie ich die Datei kleiner bekomme):
https://file.myrzcloud.de/MyDevice/s/598/5c3cff19-0639-44a7-b0ec-458634343ab4
ein Screenshot des betreffenden Tabellenblattes zur Veranschaulichung:
https://www.herber.de/bbs/user/149269.jpg
Vielen Dank für eure Hilfe

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabelle filtern nach Anzahl Stunden
23.11.2021 16:10:49
Luschi
Hallo Benita,

Zitat
Ich habe bereits die Zeit in Dezimalzahlen konvertiert...
Und genau das stimmt nicht, wenn man die Werte in Spalte 'G' als Standard formatiert, dann kommen Tagesanteilswerte heraus:
68:10 sind 2,8402778 Tage
355:17 sind 14,595139 Tage
usw - also von Dezimalzahlen im Sinne von Stundenwerten ist keine Spur zu sehen.
Gruß von Luschi
aus klein-Paris
AW: Tabelle filtern nach Anzahl Stunden
23.11.2021 16:35:03
Benita
Hallo Luschi,
danke für deine Antwort. Ich glaube, ich verstehe was du meinst. ich hatte ursprünglich diese Tageswerte in der Combobox eingeladen gehabt. Damit hatte das Filtern schon nicht funktioniert.
in der Kombobox, aus der das Filterkriterium ausgelesen wird, erscheint der Zeitwert als Dezimal-Zahl (zumindest in meinem Gesamt-Programm). Dieser wird durch oben geschriebenen Code wieder zurück in diesen Tageswert gerechnet, der in Spalte G hinterlet ist:
Kriterium = CDbl(ComboBox_Attr.value * 60 / 1440)
Gibt es denn eine Möglichkeit, die Zahl in Spalte G als Dezimalzahl zu hinterlegen, aber so anzuzeigen, wie er jetzt angezeigt wird? Würde das filter dann funktionieren?
Gruß, Benita
Anzeige
AW: Tabelle filtern nach Anzahl Stunden
23.11.2021 16:50:40
Luschi
Hallo Benita,
die Werte von Zeitsumme in 1 Extraspalte mit 24 multiplizieren: =--G8*24, das -- verhindert, daß die Zellen in dieser Extraspalte von Excel wieder als Uhrzeit formatiert werden.
Da Du aber sowieso schon mit Vba arbeitest, kann mann das natürlich auch mit Vba machen, um mehr dazu sagen zu können, mußt Du ein bißchen mehr vom Projekt zeigen.
Gruß von Luschi
aus klein-Paris

309 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige