Clever-Excel-Forum

Normale Version: Zählen, wenn Kriterium innerhalb eines Zeitraumes erfüllt ist
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Guten Morgen,

ich habe ein Problem, für das ich keinen passenden Eintrag finde, weil ich nicht mal weiß, wie man es richtig formuliert.

Ich habe eine Tabelle in der Testergebnisse vermerkt sind. Jeder Test ist in einer Zeile dargestellt, wobei es sowohl mehrere Test zu einer Person geben kann also auch mehrere Tests an einem Tag (siehe Besipieltabelle anbei).

Nun möchte ich Folgendes wissen: Wenn jemand ein positives Ergebnis hat, lag es innerhalb eines Drei-Tages-Zeitraumes ab dem frühesten Test zu dieser Person? In diesem Fall soll die Person gezählt werden. Das heißt bei der Beispieltabelle sollen nur Anton und Dora gezählt werden.

Hier stehe ich nun auf dem Schlauch. Hat jemand einen Hinweis für mich, welchen Ansatz man verfolgen könnte? Ich habe mich bereits an Pivot-Tabellen und Abfragen versucht, kenne beides aber nicht wirklich und bin mir nicht sicher, ob das der richtige Weg ist.

Ich erwarte natürlich keine komplette Lösung des Problems, aber freue mich über jedwede Tipps!

Vielen herzlichen Dank und schöne Grüße

Helgo
Hallo zusammen,

vielen Dank an WillWissen für das Entfernen der Leezeilen.

Bislang gab es noch keine Antwort zu diesem Beitrag. Da das hier ja eine sehr rege und hilfsbereite Forumsgemsinschaft ist, frage ich mich, woran das liegt.

Habe ich das Problem zu schlecht beschreiben? Habe ich gegen geschriebene oder ungeschriebene Relegeln dieses Forums verstoßen? Oder ist das Problem einfach zu kompliziert?

Ich freue mich über Hinweise.

Liebe Grüße
Helgo
Hallo Helgo,

keine Sorge, du hast keine Regeln verletzt (das wäre dir sicherlich sehr zeitnah mitgeteilt worden Wink)

Ich fürchte, die fehlenden Lösungsvorschläge liegen darin begründet, dass die Helfer schlicht keine haben; ich schließe das u.a. daraus, dass deine Datei insgesamt 9x heruntergeladen worden ist.
Vielen Dank für die Antwort!

Ich hatte es befürchtet. Aber so weiß ich wenigstens, dass ich kein Brett vor dem Kopf habe.

Schöne Grüße
Helgo
10 x download der Datei und kein Antwort? Warum?

M.M.n ist es mit VBA lösbar, ob mit =Aggregat() kann ich nicht beruteilen.

Falls es eher wenige Daten wären, könnte VBA den Autofilter nutzen, ansonsten mit "Dictionary".

Frage:

- Wieviele Einträge gibt es in der Tabelle?
- wird immer nach Namen sortiert?

Geht es um Covid-19 Tests?
Vielen Dank für Deine Antwort, Fennek!

Die Tabelle ist mit ca. 45000 Zeilen eher umfangreich.

Die Frage mit der Namenssortierung verstehe ich nicht ganz. Die Liste ist im Urzustand nach Namen sortiert, aber ja beliebig umsortierbar. Am Ende sollen keine Namen ruaskommen sondern "nur" eine Anzahl.

Es geht nicht um Covid-19 Tests.
So:

Bei diesen geschachtelten "IF's" kann man sich leicht verheddern, der Code liefert die gewünschte "2", aber Du solltest ihn noch an anderen Beispielen austesten:

Code:
Sub F_en()
Dim Ar, DD As Object, Ret As Long

Set DD = CreateObject("Scripting.Dictionary")

Ar = Cells(1).CurrentRegion
For i = 2 To UBound(Ar)
    If IsDate(Ar(i - 1, 2)) Then
        If Ar(i, 2) < Ar(i - 1, 2) Then Debug.Print "Datum nicht soritert " & i
    End If
    
    If Ar(i, 4) <> vbNullString Then
        If Not DD.exists(Ar(i, 1)) Then
            DD.Item(Ar(i, 1)) = Ar(i, 2)
        End If
        
     Else
            If Not DD.exists(Ar(i, 1)) Then
                DD.Item(Ar(i, 1)) = "X"
                Ret = Ret + 1
            Else
                If (DD.Item(Ar(i, 1)) <> "X") And (Ar(i, 2) - DD.Item(Ar(i, 1)) < 4) Then Ret = Ret + 1
            End If
     End If

Next i

MsgBox Ret
Set DD = Nothing
End Sub

Versuche den Code zu verstehen / nach-zu-vollziehen.
Hallo Fennek,

da ich mich mit VBA nicht gut auskenne, kann ich leider nicht behaupten, dass ich in dem Skript alles nachvollziehen konnte. Ich werde mich aber weiter reinfuchsen.

Ich habe jetzt allerdings schon unterschiedlichste Konstellationen ausprobiert, und es funktioniert hervorragend!

TAUSEND DANK FÜR DEINE HILFE!
Hallo Helgo,

hier noch eine Formellösung mit einer Hilfsspalte.

Arbeitsblatt mit dem Namen 'Tabelle1'
ABCDEFG
1PersonDatumErgebnis pos.Ergebnis neg.HilfsspalteAnzahl
2Anton05.08.2020xAnton4
3Berta15.10.2020X
4Berta17.10.2020xXBerta
5Berta17.10.2020x
6Berta02.11.2020X
7Berta02.11.2020X
8Cäsar06.07.2020X
9Dora02.05.2020X
10Dora03.05.2020XDora
11Dora07.05.2020X

ZelleFormel
E2=WENNFEHLER(WENN(UND(B2-SVERWEIS(WENN(C2<>"";A2;"");$A$2:$B$14;2;0)<=3;ZÄHLENWENN($E$1:E1;A2)=0);A2;"");"")
G2=ZÄHLENWENN(E2:E14;"?*")
Verwendete Systemkomponenten: [Windows (32-bit) NT 6.02] MS Excel 2010
Diese Tabelle wurde mit Tab2Html (v2.6.0) erstellt. ©Gerd alias Bamberg

In der angehängten Beispieldatei ist zum besseren Verständnis der Formel in der Hilfsspalte diese Formel in die einzelnen Berechnungsschritte aufgedröselt (Spalten J-N)

Gruß
Fred