Supportnet / Forum / Tabellenkalkulation
Funktion mit dynamischem Range-Parameter
Frage
Hallo liebes Forum,
ich habe folgendes Problem:
Ein Makro soll automatisch eine SLOPE Funktion über einen Zellbereich ausführen. Ärgerlicherweise kann sich jedoch die Zeilenzahl des Bereichs ändern.
Wie könnte ich den Bereichsbezug variabel gestalten?
Ich hätte mir gedacht mit der Funktion Count() die Zahl der "gefüllten" Zeilen in einer Zelle anzeigen zu lassen
und diese dann in Form einer Variable einzufügen. Doch daran bin ich bisher gescheitert...
Vielleicht kann mir ja wer weiterhelfen bzw.
wenn jemand eine idealere Lösung für das Problem kennt wäre ich sehr dankbar!
Liebe Grüße,
Rudi
Antwort 1 von CaroS
Hallo rudigus!
Na mit Variablen.
Die Frage ist nur, woran erkennt man (als Mensch und als Makro), wie groß der Bereich gerade ist?
In einer Zelle gibt es keine Zeilen.
Wie immer würden auch hier genauere Angaben, ein Beispiel und/oder eine Datei weiterhelfen. Aber wie so oft muss man auch hier wieder dem Fragesteller jede Kleinigkeit mühsam aus der Nase ziehen.
Gruß,
CaroS
Zitat:
Wie könnte ich den Bereichsbezug variabel gestalten?
Wie könnte ich den Bereichsbezug variabel gestalten?
Na mit Variablen.
Die Frage ist nur, woran erkennt man (als Mensch und als Makro), wie groß der Bereich gerade ist?
Zitat:
Ich hätte mir gedacht mit der Funktion Count() die Zahl der "gefüllten" Zeilen in einer Zelle anzeigen zu lassen
Ich hätte mir gedacht mit der Funktion Count() die Zahl der "gefüllten" Zeilen in einer Zelle anzeigen zu lassen
In einer Zelle gibt es keine Zeilen.
Wie immer würden auch hier genauere Angaben, ein Beispiel und/oder eine Datei weiterhelfen. Aber wie so oft muss man auch hier wieder dem Fragesteller jede Kleinigkeit mühsam aus der Nase ziehen.
Gruß,
CaroS
Antwort 2 von rudigus
Hallo Caros,
danke für deine rasche Antwort
Ich habe mich bemüht die Fragestellung kurz und einfach zu halten. Geworden ist sie unpräzise und unzureichend. Tut mir leid!
Ich versuchs nochmal:
In 2Spalten stehen eine bestimmte Anzahl an Daten.
(Dabei handelt es sich um XY-Werte einer Messung)
Normalerweise ist der Bereich A1:B16, kann aber auch nur zB. A1:B15, A1:B14 usw. sein.
Nun soll von diesen Daten die Steigung mit der Funktion SLOPE() die Steigung berechnet werden, wobei immer "known_y´s" bzw. "known_x´s" als bereich angegeben werden müssen.
Das Problem ist, dass sich dieser Bereich ja ändert
daher dem Makro gesagt werden muss, wann es wieviele Zeilen für die Funktion anwählen soll.
Da ich eine ziemliche VBA-Null auch die dumme Frage mit der Variable...
Ich hoffe ich habs diesmal etwas verständlicher ausgedrückt.
Lg,
Rudi
danke für deine rasche Antwort
Ich habe mich bemüht die Fragestellung kurz und einfach zu halten. Geworden ist sie unpräzise und unzureichend. Tut mir leid!
Ich versuchs nochmal:
In 2Spalten stehen eine bestimmte Anzahl an Daten.
(Dabei handelt es sich um XY-Werte einer Messung)
Normalerweise ist der Bereich A1:B16, kann aber auch nur zB. A1:B15, A1:B14 usw. sein.
Nun soll von diesen Daten die Steigung mit der Funktion SLOPE() die Steigung berechnet werden, wobei immer "known_y´s" bzw. "known_x´s" als bereich angegeben werden müssen.
Das Problem ist, dass sich dieser Bereich ja ändert
daher dem Makro gesagt werden muss, wann es wieviele Zeilen für die Funktion anwählen soll.
Da ich eine ziemliche VBA-Null auch die dumme Frage mit der Variable...
Ich hoffe ich habs diesmal etwas verständlicher ausgedrückt.
Lg,
Rudi
Antwort 3 von JoeKe
Moin Rudi,
versuch es mal so:
Option Explicit
Sub Steigung()
Dim loLetzte As Long
loLetzte = Cells(Rows.Count, 2).End(xlUp).Row
ActiveCell = Application.WorksheetFunction.Slope(Range(Cells(1, 2), Cells(loLetzte, 2)), _
Range(Cells(1, 3), Cells(loLetzte, 3)))
End Sub
In dem Beispiel stehen die Werte in den Spalten B und C.
Mit loLetzte wird die letzte belegte Zelle der Spalte B ermittelt.
Gruß
JöKe
versuch es mal so:
Option Explicit
Sub Steigung()
Dim loLetzte As Long
loLetzte = Cells(Rows.Count, 2).End(xlUp).Row
ActiveCell = Application.WorksheetFunction.Slope(Range(Cells(1, 2), Cells(loLetzte, 2)), _
Range(Cells(1, 3), Cells(loLetzte, 3)))
End Sub
In dem Beispiel stehen die Werte in den Spalten B und C.
Mit loLetzte wird die letzte belegte Zelle der Spalte B ermittelt.
Gruß
JöKe
Antwort 4 von rudigus
Vielen Dank Jöke!
Es funktioniert!
Liebe Grüße ,
Rudi
Es funktioniert!
Liebe Grüße ,
Rudi

