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

Position in Range

Forumthread: Position in Range

Position in Range
04.08.2006 13:12:17
felix
Hallo
Ich steh vor folgendem Problemchen:
In einer Spalte sollen Werte mit einer Konstanten verglichen werden. Bei demjenigen Spaltenwert, der am nächsten zur Konstanten ist, soll dann die Differenz in der Zelle daneben ausgeschrieben werden.
Ich hab mir nun überlegt man könnte dieses Problem mit "StrComp" lösen. Wird der Wert grösser als die Konstante (lngGrenz), ändert StrComp von -1 auf 1. Danach wird verglichen welcher der beiden Werte näher bei der Konstanten liegt und die entsprechende Differnz gebildet. Hier der code:
...
For Each objA In rngGroup
lngVerglOld = lngVergl
lngVergl = StrComp(objA, lngGrenz)
If lngVergl &lt&gt lngVerglOld Then
blnVergl = True
End If
If blnVergl Then
blnVergl = False
If Abs(objA.Offset(-1) - lngGrenz) &lt= Abs(objA - lngGrenz) Then
objA.Offset(-1, -4) = objA.Offset(-1) - lngGrenz
Else
objA.Offset(, -4) = objA - lngGrenz
End If
Exit For
Bei dem ersten Durchlauf, muss ich aber lngVerglOld, resp lngVergl manuell setzen.
If "Position von objA in rngGroup" = 1 resp. Counter=1 Then
If StrComp(objA, lngGrenz) =&gt 0 Then
lngVergl = -1 'und die Differenz müsste neben dem objA ausgeschrieben werden
Else
lngVergl = 1
End If
Kann ich irgendwie die Position von objA innerhalb des Ranges (1. Stelle, 2. Stelle, ...)feststellen oder muss ich das mit einem Counter lösen?
Ich hoffe es ist verständlich
gruss
felix
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Blabla- Vergiss es einfach wieder:-)
04.08.2006 13:41:00
Bertram
AW: Position in Range
04.08.2006 13:41:13
Andi
Hi,
auch ohne Deinen Code gelesen zu haben, aber als Makro-Lösung:

Sub t()
Dim a As Long
Dim zeile As Long
Const Konstante = 10
ReDim my_array(1 To Range("A65536").End(xlUp).Row)
For a = 1 To Range("A65536").End(xlUp).Row
my_array(a) = Abs(Cells(a, 1).Value - Konstante)
Next a
zeile = WorksheetFunction.Match(WorksheetFunction.Min(my_array), my_array, 0)
Cells(zeile, 2).Value = Konstante - Cells(zeile, 1).Value
End Sub

Schönen Gruß,
Andi
Anzeige
vielen dank
04.08.2006 15:31:54
felix
Problem super gelöst. es wäre ja soo einfach.
danke schön
Gern geschehen... (ot)
04.08.2006 16:03:40
Andi
.
Anzeige
Anzeige
Live-Forum - Die aktuellen Beiträge
Datum
Titel
14.05.2026 13:31:09
14.05.2026 09:50:42
13.05.2026 19:14:18