Anzeige
Archiv - Navigation
1516to1520
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

Werte erkennen, Spanne definieren und Max ausgeben

Werte erkennen, Spanne definieren und Max ausgeben
26.09.2016 11:25:33
Linda
Hallo Leute!
Ich habe eine knifflige Aufgabenstellung mit VBA zu lösen und keine Ahnung, wie ich es anstellen kann.
Es gibt eine Tabelle „Kurve1“ in der, in Spalte A, Sekunden in 20iger Schritten abgetragen sind. Zu jeder Zeit, gibt es einen Wert in Spalte H.
Gesucht ist jetzt eine dynamische Formel, die mir den Maximal- (Spalte M) bzw. Minimalwert (Spalte N) aus einer beliebigen Spanne (z.B. 500s) vor und nach dem Ausgangszeitwert in Spalte A, aus den zugehörigen Werten in Spalte H ausgibt. Davon wird dann nochmal etwas abgezogen bzw. zuaddiert („Auswertung!$D$7“, siehe Tabelle https://www.herber.de/bbs/user/108408.xlsm).
Problem ist, dass die Spanne von 500s variabel ist, d.h. auch nur 50s betragen kann. Diese Spanne wird beispielsweise im Tabellenblatt „Auswertung“ in Spalte D12 eingegeben.
Bis jetzt habe ich einen statischen Code für 500s:
Worksheets("Kurve1").Activate
iRow = Cells(Rows.Count, 1).End(xlUp).Row
‘die ersten Werte, da es sonst einen #Bezug-Fehler gibt
Range("M2").FormulaR1C1 = "=MAX(R2C8:R[25]C8)+Auswertung!R7C4"
Range("M2:M26").FillDown
Range("N2").FormulaR1C1 = "=MIN(R2C8:R[25]C8)+Auswertung!R8C4"
Range("N2:N26").FillDown
‘für alle weiteren Werte ab Zeile 27 für die 500s in positive und negative Richtung möglich sind (500s / 20s = 25 Zeilen – jedoch begonnen in Zeile 2 – ergibt, dass es ab Zeile 27 keine #Bezug-Fehlermeldung mehr gibt ;-))
Range("M27").FormulaR1C1 = "=MAX(R[-25]C8:R[25]C8)+Auswertung!R7C4"
Range("M27:M" & iRow).FillDown
Range("N27").FormulaR1C1 = "=MIN(R[-25]C8:R[25]C8)+Auswertung!R8C4"
Range("N27:N" & iRow).FillDown
Ich weiß jetzt nicht, wie ich das Ganze programmieren kann. Geringfügige Kenntnisse habe ich, aber um die Formel dynamisch zu gestalten, d.h. mit unterschiedlichen Zeitspannen, reicht es nicht =).
Ist es überhaupt möglich mit VBA zu programmieren, dass die Zeiten in Spalte A als Zahlen erkannt werden und davon dann 500 aufwärts bzw. abwärts geprüft wird?
Vielen Dank euch, dass ihr euch Zeit nehmt einen Post zu lesen und mir helft =).
Hier nochmal die Beispielmappe: https://www.herber.de/bbs/user/108408.xlsm
Schönen Wochenstart euch!!
Linda

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Werte erkennen, Spanne definieren und Max ausgeben
26.09.2016 13:00:19
Jürgen
Hallo Linda,
ein kleiner schneller Ansatz, ohne Prüfung!!

dim lngRow as long
lngRow = Auswertung!R12C4 / 20
Range("M2").FormulaR1C1 = "=MAX(R2C8:R[" & lngRow & "]C8)+Auswertung!R7C4"
Range("M2:M " & lngrow+1).FillDown
Range("N2").FormulaR1C1 = "=MIN(R2C8:R[" & lngRow & "]C8)+Auswertung!R8C4"
Range("N2:N" & lngrow+1).FillDown
Range("M" & lngRow +2).FormulaR1C1 = "=MAX(R[-" & lngRow & "25]C8:R[" & lngRow & "]C8)+ _
Auswertung!R7C4"
Range("M" & lngRow + 2 & ":M" & iRow).FillDown
Range("N" & lngRow + 2).FormulaR1C1 = "=MIN(R[-" & lngRow & "]C8:R[" & lngRow & "]C8)+ _
Auswertung!R8C4"
Range("N" & lngRow + 2 & ":N" & iRow).FillDown
Dies soll als Ansatz dienen!
Einfach mal etwas spielen. Das "&" kennst du ja schon.
Gruß
Jürgen
Anzeige
AW: Werte erkennen, Spanne definieren und Max ausgeben
26.09.2016 17:32:08
Linda
Hallo Jürgen,
vielen Dank für deine schnelle Hilfe. Ich würde den Code gern anpassen, aber ich Scheitere schon am Speichern der Formel "Auswertung!R12C4/20" in der Variable IngRow. ICh hab schon mehreres versucht, z.B.
IngRow=Evaluate("Auswertung!R12C4)/20")
With IngRow=Auswertung!R12C4)/20
oder auch mit
Set IngRow=Auswertung!R12C4)/20...
Aber ich bekommen immer den "Typen unverträglich" oder "Objekt erforderlich". Ich hab jetzt alle mir so halb bekannten Möglichkeiten durch. Kann du mir noch einen Hinweis geben, warum ist die Variable mit der Formel im Code so nicht speichern kann?
Liebe Grüße
Linda
Anzeige
AW: Werte erkennen, Spanne definieren und Max ausgeben
28.09.2016 09:42:04
Jürgen
Hallo Linda,
entschuldige da habe ich nicht aufgepasst!

lngrow = worksheets("Auswertung").range("D12").value / 20
Gruß
Jürgen
AW: Werte erkennen, Spanne definieren und Max ausgeben
28.09.2016 12:55:11
Linda
Hallo Jürgen,
ich wollte gerade meine Lösung posten, ich hab es jetzt so gelöst =):
Dim iRow As Integer
Dim plusRow As Integer
Dim minusRow As Integer
Worksheets("Kurve1").Activate
iRow = Cells(Rows.Count, 1).End(xlUp).Row
plusRow = Worksheets("Auswertung").Range("G11")
minusRow = Worksheets("Auswertung").Range("H11")
Range("M2").FormulaR1C1 = "=MAX(R2C8:R[" & plusRow & "]C8)+Auswertung!R7C6"
Range("M2:M" & plusRow + 2).FillDown
Range("N2").FormulaR1C1 = "=MIN(R2C8:R[" & plusRow & "]C8)+Auswertung!R8C6"
Range("N2:N" & plusRow + 2).FillDown
Range("M" & plusRow + 3).FormulaR1C1 = "=MAX(R[" & minusRow & "]C8:R[" & plusRow & "]C8)+Auswertung!R7C6"
Range("M" & plusRow + 3 & ":M" & iRow).FillDown
Range("N" & plusRow + 3).FormulaR1C1 = "=Min(R[" & minusRow & "]C8:R[" & plusRow & "]C8)+Auswertung!R8C6"
Range("N" & plusRow + 3 & ":N" & iRow).FillDown
Aber vielen Dank für deine Hilfe =)
Vielleicht kannst du mir aber bei einer anderen Sache helfen. Ich meinte ja bereits, dass der Wert in worksheet("Auswertung").range("D12") variabel ist. Jetzt habe ich einen Botton eingefügt, der die Rechnung von oben nochmal durchführt, wenn man den Wert in D12 geändert hat. Das aktualisieren der Werte funktioniert auch, jedoch werden daraufhin Diagramme eingefügt, die dann willkürlich neue Datenreihen ergänzen, die keinen Sinn machen. Diese stammen dann auch nicht aus den Daten auf Tabellenblatt "Kurve1", sondern aus dem Auswertungstabellenblatt... hast du eine Idee, warum das passiert?
Anzeige

310 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige