Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
788to792
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
788to792
788to792
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Position in Range

Position in Range
04.08.2006 11: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

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

Betreff
Datum
Anwender
Anzeige
Blabla- Vergiss es einfach wieder:-)
04.08.2006 11:41:00
Bertram
AW: Position in Range
04.08.2006 11: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 13:31:54
felix
Problem super gelöst. es wäre ja soo einfach.
danke schön
Gern geschehen... (ot)
04.08.2006 14:03:40
Andi
.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige