Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Ermittlung Zellen mit bestimmtem Inhalt

Ermittlung Zellen mit bestimmtem Inhalt
07.11.2014 14:41:57
Peter
Guten Tag
Ich möchte eine UDF entwickeln. Damit ich die gewünschten Berechnungen vornehmen kann, sollte ich bestimmen können, in welcher Zelle oberhalb und unterhalb von rng eine Zahl (nicht nur ein numerischer Eintrag) steht. Falls der Wert oberhalb, resp. der Wert unterhalb keine Zahl ist (oder überhaupt kein Eintrag mehr vorhanden ist), soll die Variable blnNeinO resp. blnNeinU auf TRUE gesetzt werden.
Wie kann ich die Position eines allfälligen oberen oder unteren Wertes ausgehend von rng (Zelle wird mit UDF übergeben) bestimmen?
Die Funktion wird dann noch nicht fertig sein, doch mit diesen gesuchten Zwischenergebnissen müsste ich dies dann schaffen.
Gruss, Peter
Option Explicit
Public Function psInt(rng As Range) As Double
Dim rngZelleO As Range, rngZelleU As Range, blnNeinO As Boolean, blnNeinU As Boolean
Debug.Print rng.value
If Application.WorksheetFunction.IsNumber(rng.value) Then
psInt = rng.value
Else
'' Zelle, in welcher oberhalb von rng eine Zahl ist der Variable rngZelleO zuweisen
'' falls nicht zutreffend (leer, Fehlerwert oder Text), blnNeinO den Wert TRUE zuweisen
'' Zelle, in welcher unterhalb von rng eine Zahl ist der Variable rngZelleU zuweisen
'' falls nicht zutreffend (leer, Fehlerwert oder Text), blnNeinU den Wert TRUE zuweisen
End If
End Function

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ermittlung Zellen mit bestimmtem Inhalt
10.11.2014 14:56:45
Peter
Hallo
Nun habe ich's doch noch hingekriegt - mit ein paar Umwegen ...
Gruss, Peter
Option Explicit
Public Function psInt(rng As Range) As Variant
''Mehrjahresintervalle auf einzelne Jahre herunterrechnen
Dim lngIntervall As Long, dblIntervall As Double, dblStep As Double, lngStep As Long
''falls Argument gleich Zahl, dann Wert übernehmen
If Application.WorksheetFunction.IsNumber(rng.value) Then
psInt = rng.value
Else
'' falls Argument ist Nicht-Zahl und Nicht-Leer - oder unterer Wert oder oberer Wert keine  _
Zahl
'' kann kein Intervall-Wert ermittelt werden
If (Not Application.WorksheetFunction.IsNumber(rng.value) And rng.value  "") _
Or Not Application.WorksheetFunction.IsNumber(rng.End(xlUp)) _
Or Not Application.WorksheetFunction.IsNumber(rng.End(xlDown)) Then
psInt = ""
Else
''  ermitteln, wieviele Stufen (Zeilen) zwischen unterem und oberem Wert betsehen
lngIntervall = rng.End(xlDown).Row - rng.End(xlUp).Row
''  betragsmässige Abweichung zwischen unterem und höherem Wert ermitteln
dblIntervall = rng.End(xlDown).value - rng.End(xlUp).value
''  betragsmässige Veränderung pro Stufe ermitteln
dblStep = Int(dblIntervall / lngIntervall)
''  Position von unterem Wert ermitteln
lngStep = rng.Row - rng.End(xlUp).Row
''  unterer Wert und Positionen gemäss aufrufender Zelle mal Betragsmässige Veränderung  _
addieren
psInt = rng.End(xlUp).value + (dblStep * lngStep)
End If
End If
End Function

https://www.herber.de/bbs/user/93654.xlsm
Anzeige

325 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige