Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1340to1344
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
Inhaltsverzeichnis

Komplexe Auswertung

Komplexe Auswertung
26.11.2013 14:45:23
Gregor
Hallo zusammen
https://www.herber.de/bbs/user/88266.xlsx
In einer Tabelle analog Musterdatei sind in Spalte B, aufgrund der Daten in Spalten D, F, H, J, K, M, O, P, R, folgende Einträge vorzunehmen:
P55, P45, P40, P35, P30, P25, P20 oder kleiner P20, ergänzt mit "integral" oder "partiell".
Kirterien:
Innerhahlb der Zeilen "Inhalt Nr" in Spalte A (zB. Zeilen 6 bis 14) ist immer der grösste P-Wert zu eruieren. Wenn alle Zeilen den gleichen P-Wert haben, ergänzt mit "integral". Sobald in der Zeile mit dem grössten Wert oder in den anderen Zeilen in den obgenannten Spalten ein kleinerer Wert vorhanden ist, dann ist der grösste P-Wert mit "partiell" zu ergänzen.
Werte unter 25 sind zu ignorieren (wenn zu kompliziert, kann dieses Kriterium weggelassen werden).
Mustereinträge habe ich auf der Musterdatei in Spalte B vorgenommen.
Es handelt sich um eine umfanreiche Liste, die aufgrund der Einträge in den Spalten D bis R immer wieder aktualisert werden muss.
Vermutlich kann das mit einem VBA gelöst werden, dürfte jedoch nicht ganz einfach sein. Im Forum habe ich nichts dergleichen gefunden. Wie könnte ein solcher Code aussehen?
Vielen Dank und Gruss
Gregor

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Komplexe Auswertung
26.11.2013 23:26:29
Dietmar-U
Hallo Gregor,
ich habe mir Deine Frage und Deine Tabelle angesehen. Bevor ich jedoch loslegen möchte, noch zwei Fragen:
- "aufgrund der Daten in Spalten D, F, H, J, K, M, O, P, R," Hier wechselt "Pxx" zu "Index" bei Buchstabe "K". Nach meinem Verständnis sollte die Zeilen "D, F, H, J, L, N, P und R" als Referenzzeilen dienen, dann wird immer "Pxx" ausgewertet. Index bleibt m.E. unberücksichtigt.
- Warum wird bei B15 "Integral" ermittelt, obwohl die Werte für P55 = 251 und P55 = 237 = ungleich sind? (Du schreibst: Wenn alle Zeilen den gleichen P-Wert haben, ergänzt mit "integral".)
Zusatzfrage: An welcher Spalte kann ich mich orientieren, um festzustellen ob Tabellenende erreicht ist? Ist in Spalte "C" = "Richtung" immer ein Eintrag enthalten? Wenn nicht welche Alternative gibt es.
Grüße
Dietmar

Anzeige
AW: Komplexe Auswertung
27.11.2013 08:16:55
Gregor
Hallo Dietmar
Vielen Dank, dass du dich meiner Fragestellung annimmst. Deine Feststellung ist absolut richtig, als Referenz dienen die Spalten "Pxx", die Spalten "Index" bleiben unberücksichtigt (also L statt J, sorry).
Bei B15 wie auch B17 ist integral richtig. Mit gleichem P-Wert meine ich, dass in den kleineren (folgenden) Pxx Spalten keine Wert grösser gleich 25 vorkommen (siehe: Werte unter 25 sind zu ignorieren). Gleicher Wert ist tatsächlich irreführend. Wenn innerhalb des Beeichs (bei Inhalt 580 Zeilen 15 und 16) nur Werte in der gleichen Pxx Spalte stehen ist es integral, sind in den folgenden Pxx Spalten noch Werte grösser gleich 25 eingetragen, wird es zu partiell.
Das Tabellenende orientiert sich an Spalte C. Spalte C kann immer als Referenz beigezogen werden, auch für die Definition des Bereichs. Bei Zeile 107 Inhalt 534 ist der Bereich von Zeile 107 bis 213. Wenn kein Eintrag in Spalte C, Zeilen nicht einbeziehen.
Ich hoffe, dass das mit VBA gelöst werden kann.
Vielen Dank und Gruss
Gregor

Anzeige
AW: Komplexe Auswertung
27.11.2013 08:51:02
Dietmar-U
Hallo Gregor,
jawohl, das müsste mit VBA lösbar sein. Ich werde mich heute damit beschäftigen, sodass morgen früh - keine weitere Rückfrage vorausgesetzt - die erste Lösung vorliegen könnte.
Grüße und einen schönen Tag, Dietmar

nicht zu komplex
27.11.2013 09:35:21
Erich
Hi Gregor,
probier mal

Option Explicit
Sub MaxAuswert()
Dim lngZ As Long, arA, arP, zz As Long, cc As Long
Dim cMax As Long, bolP As Boolean
lngZ = Cells(Rows.Count, 3).End(xlUp).Row - 2
arA = Cells(3, 1).Resize(lngZ)
arP = Cells(3, 4).Resize(lngZ, 15)
cMax = 999
For zz = lngZ To 1 Step -1
If Not IsEmpty(Cells(zz + 2, 3)) Then
For cc = 1 To 15
If Not IsEmpty(arP(zz, cc)) And arP(zz, cc) >= 25 Then
If cMax > cc Then
If cMax 
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich
P.S.: Sorry für's Einmischen, ich fand die Aufgabe einfach interessnt... ;-)

Anzeige
AW: nicht zu komplex
27.11.2013 17:27:06
Dietmar-U
Hallo Gregor, Hallo Erich,
die Lösung von Erich sieht gut aus. Hier kann ich sogar noch dazulernen. Mein Ansatz wäre etwas "flacher" gewesen, ohne den VBA-Funktionsumfang so effektiv zu nutzen.
Ich hoffe Gregor, hiermit ist Dein Anliegen erledigt.
Grüße Euch Beiden, Dietmar

AW: nicht zu komplex
28.11.2013 11:34:12
Gregor
Hallo Erich und Dietmar
Einfach genial, die Lösung von Erich. Vielen Dank euch beiden für die Hilfe, ich hätte das nie hingekriegt (und verstehe auch nicht alles).
Sorry, dass ich mich erst jetzt melde, konnte mich erst jetzt wieder damit befassen.
Danke und Gruss
Gregor

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige