ich habe hier eine Liste in der Seriennummern im Arbeitsblatt "Test organisation" in der Spalte G per dropdown ausgewählt werden. Hier werden in Spalte J der jeweilige Test ebenfalls durch dropdown ausgewählt. Nun zu dem Problem: Es sollen nun in Spalte I die bereits durchgeführten Tests aufgelistet werden, wobei Tests doppelt durchgeführt werden können. Daher sollte hier auch die Anzahl der gleichen Tests ausgegeben werden.
In etwa so:
[ Bild bitte so als Datei hochladen: Klick mich! ]
Weiterhin würde ich gerne bei den Seriennummern an denen bereits Tests durchgeführt wurden diese Tests ebenfalls auflisten und in die "Zählung" mit einbinden. Diese Tests habe ich bereits im Arbeitsblatt "Test Compressors" in Spalte E aufgelistet. Die zugehörige Seriennummer befindet sich auf diesem Arbeitsblatt in Spalte C.
Ich habe bereits viel ausprobiert. Wie z.B. mit Wennfehler(Verketten(SVerweis( ))) , ... Damit bin ich aber nur soweit gekommen, dass die Formel endlos lang wird und der jeweilige Test so oft aufgeführt wird, wie ich die Formel SVerweis wiederholt habe. Ich komme aber nicht dahinter, wie ich Excel dazu bringe die gleiche Zelle mehrfach auszulesen. Ich denke hier muss ich mit einem VBA Code arbeiten, bin bei VBA aber nicht wirklich fit. Daher bitte ich euch nun um Hilfe... Ich hoffe ich habe die Problematik verständlich erklärt!?
danke für deine Antwort. Leider habe ich mit pivot Tabellen keine Erfahrung. Habe es gaerade aber mal ausprobiert. Hier sehe ich keine Möglichkeit, dass Ergebnis, also die bereist absolvierten Tests und die Anzahl der mehrmals durchgeführten Tests in meiner Tabelle anzuzeigen. Es soll ja so funktionieren, dass Excel die einegegebene Seriennummer (Spalte G) in der Liste sucht, dann per SVerweis den aktuellen Test (Spalte J) raussucht und diesen in die Spalte I einträgt. In Spalte I sollen dann aber auch die Tests, die bereits durchgeführt wurden in einer Zelle aufgelistet werden. Mehrfach durchgeführte Tests sollen, wenn möglich, durch ein nachgestelltes (2x) , (3x), ... gelistet werden.
Das Ergebnis soll in der bereits existierenden Tabelle in Spalte I angeziegt werden, damit für alle anderen Nutzer dieser Tabelle eine gute Übersicht der bereits durchgeführten Tests dargestellt wird.
Hier habe ich zum Verständnis nochmal die Datei angehängt. Sie ist etwas abgespeckt um die geheimhaltungspflichtigen Daten zu entfernen... Aber alles wichtige ist noch drin... Ich habe die Ergebnisspalte (Spalte I) Lila markiert, die gewünschten Ergebnisse reingeschrieben und den Bezug mit Pfeilen dargestellt.
Nochmals vielen Dank an alle die sich damit beschäftigen.
Danke für deine Antwort. Das kommt dem ganzen schon ziemlich nahe, ich habe nun lange (den ganzen Tag) herumprobiert. Leider schaffe ich es nicht nur die aufgeführten Tests zu zählen und wenn das Summenprodukt 0 ist, dann soll er auch nichts eintragen ("").
Weiterhin sind es nicht nur 3 Tests wie im Beispiel sondern ca. 10 Stück, wodurch die Formel natürlich am Ende sehr unübersichtlich werden wird. Daher denke ich immer noch, dass hier eine VBA die beste Lösung wäre, oder?
Ich komme aktuell nicht weiter. Als ich dachte es würde so funktionieren, da hat sich bei einem Test gezeigt, dass er nicht die Seriennummern vergleicht sondern bei einer eingabe einer anderen Seriennummer die Anzahl der Testläufe der anderen Seriennummer ändert.
Ich kann dir gern mal die richtige Datei per Mail zusenden, wenn du meinst das du die Lösung findest...?
da Du eh schon eine xlsm-Mappe am Laufen hast, hier mal eine benutzerdefinierte VBA Funktion:
In ein allgemeines Modul kopieren:
Code:
Option Explicit Public Function MyFunction(ByVal Nummer As Variant, _ ByVal Bezeichnung As Variant) As String Dim i As Long, l As Long, k As Long Dim von As Long, bis As Long Dim a As String, b As String Dim Dic As Object, e As Variant
'Sicherheitsabfragen If Not IsArray(Nummer) Then Exit Function If Not IsArray(Bezeichnung) Then Exit Function If TypeName(Application.Caller) <> "Range" Then Exit Function
von = 0 bis = Application.Caller.Row
a = Nummer(bis - 1) If a = "" Then Exit Function
Set Dic = CreateObject("Scripting.Dictionary")
For i = von To bis - 2 If a = Nummer(i) Then b = Bezeichnung(i) If Dic.Exists(b) Then Dic(b) = Dic(b) + 1 Else Dic(b) = 1 End If End If Next i
For Each e In Dic.Keys Select Case Dic(e) Case Is = 1 If MyFunction <> "" Then MyFunction = MyFunction & ", " MyFunction = MyFunction & e Case Is > 1 If MyFunction <> "" Then MyFunction = MyFunction & ", " MyFunction = MyFunction & e & " (" & Dic(e) & "x)" End Select Next e
Set Dic = Nothing End Function
und im Tabellenblatt so verwenden ...
Arbeitsblatt mit dem Namen 'Test organisation'
G
H
I
J
1
Serial number
Info
Passed Tests
Test
2
170818-2053
0
Test 1
Zelle
Formel
I2
=MyFunction([Serial number];[Test])
Verwendete Systemkomponenten: [Windows (32-bit) NT 6.02] MS Excel 2013
die Funktion hat super geklappt. Ich habe nur noch die Anzahl der Tests nach vorne geschoben und die Klammern entfernt. Jetzt ist alles Super und so wie es gedacht war.