Tja, wieder mal ein klassischer Fall von unzureichender Information durch den Fragesteller. Hättest du entweder gleich eine Beispielmappe gepostet oder zumindest den kompletten Code und nicht nur Fragmente, wäre alles klar gewesen.
Eine Function gibt einen Wert zurück und ist im Prinzip eine selbstgebastelte Formel. Und wie du bestimmt weißt, kann eine Formel niemals etwas in die Zelle daneben schreiben, sondern nur in die Zelle, in der sie steht.
Du kannst nun entweder eine "normale" Prozedur erstellen:
Code:
Sub Vergleich()
For j = 2 To 15
For i = 0 To 100 Step 5
If (Cells(j, 2) >= (i - 2.5)) And (Cells(j, 2) < (i + 2.5)) And (Cells(j, 1) < (i + 2.5)) And (Cells(j, 1) > (i - 2.5)) Then
Cells(j, 3) = i
Exit For
ElseIf (Cells(j, 2) >= (i - 7.5)) And (Cells(j, 2) < (i + 7.5)) And (Cells(j, 1) < (i + 2.5)) And (Cells(j, 1) > (i - 2.5)) Then
Cells(j, 3) = "halt"
Exit For
ElseIf (Cells(j, 2) >= (i - 2.5)) And (Cells(j, 2) < (i + 2.5)) And (Cells(j, 1) < (i + 7.5)) And (Cells(j, 1) > (i - 7.5)) Then
Cells(j, 3) = i
Cells(j, 4) = i + 5
Exit For
Else
Cells(j, 3) = "Das war nix"
End If
Next i
Next j
End Sub
oder du erstellst eine zweite Function, welche dann in der zweiten Spalte ausgeführt wird:
Code:
Function compare_own2(max, min)
For i = 0 To 100 Step 5
If (min >= (i - 2.5)) And (min < (i + 2.5)) And (max < (i + 2.5)) And (max > (i - 2.5)) Then
Exit For
ElseIf (min >= (i - 7.5)) And (min < (i + 7.5)) And (max < (i + 2.5)) And (max > (i - 2.5)) Then
Exit For
ElseIf (min >= (i - 2.5)) And (min < (i + 2.5)) And (max < (i + 7.5)) And (max > (i - 7.5)) Then
compare_own2 = i + 5
Exit For
End If
Next
End Function
Soweit klar?
Und für das nächste mal: Gib von Anfang an alle Infos bekannt, dann erspart man sich das Geschreibsel und die viel Zeit.