19.05.2020, 08:58 (Dieser Beitrag wurde zuletzt bearbeitet: 19.05.2020, 09:19 von WillWissen.
Bearbeitungsgrund: Unnötige Leerzeilen entfernt
)
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 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?
keine Sorge, du hast keine Regeln verletzt (das wäre dir sicherlich sehr zeitnah mitgeteilt worden )
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.
Gruß Günter Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen. angebl. von Georg Christoph Lichtenberg (1742-1799)
Folgende(r) 1 Nutzer sagt Danke an WillWissen für diesen Beitrag:1 Nutzer sagt Danke an WillWissen für diesen Beitrag 28 • helgo
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.
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.
Folgende(r) 1 Nutzer sagt Danke an Fennek für diesen Beitrag:1 Nutzer sagt Danke an Fennek für diesen Beitrag 28 • helgo
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!
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)