Guten Morgen,
ich habe gestern schon ewig versucht es alleine hinzubekommen, bin aber aufgrund meiner beschränkten Kenntnisse nicht erfolgreich gewesen. In der angehangen XLSM findet Ihr meine Situation: Am Beispiel der rot markierten Zelle (O25), möchte ich wenn die offset (-1,-1) Zelle einen Wert hat, das O25 1 ist, wenn in der Zelle O24 ein Wert drin ist, soll O25 deren Wert +1 bekommen. Wenn keiner der beiden Fälle wahr ist, soll nach der nächsten Zelle in Spalte O gesucht werden die einen Wert hat (hier im Beispiel O18 mit Wert 3). Fälle 1 & 2 liessen sich auch in Excel lösen, 3 allerdings nicht aufgrund der top-down Suche.
Anstatt in Spalten K-T, können alternativ auch A-J benutzt werden um die Werte in K-T festzulegen
Ich habe den Code den ich bis jetzt aufstellen konnte hier hochgeladen: https://www.herber.de/bbs/user/140684.xlsm
Und hier steht er nochmal:
Public Function AssignAccountNumber(ByVal rangeX As Range) As Integer
Dim arrayBottom As Range
Dim arrayTop As Range
Dim immediateParent As Range
Dim immediateSibling As Range
arrayBottom = rangeX.Offset(-1, 0)
arrayTop = rangeX.End(xlUp).Offset(1, 0)
immediateParent = rangeX.Offset(-1, -1)
immediateSibling = rangeX.Offset(-1, 0)
Dim arrayAbove() As Range
Dim arrayRows As Integer
arrayAbove() = Range(arrayBottom, arrayTop)
arrayRows = arrayAbove.Rows.Count
Dim looper As Integer
If immediateParent.Value <> "" Then
rangeX.Value = 1
ElseIf immediateSibling.Value <> "" Then
rangeX.Value = immediateSibling.Value + 1
Else
For looper = arrayRows To 1
If arrayAbove(looper, 0) <> "" Then
Set AssignAccountNumber = arrayAbove(looper, 0).Value + 1
Next
End Function
Vielen Dank im Voraus an alle die sich die Mühe machen über diese Problem nachzudenken und mir helfen könnten wie ich es löse!
Public Function incrOffset(ByVal currRange As Range) As Integer Dim maxOffset As Integer maxOffset = 500 Dim looper2 As Integer For looper2 = 1 To maxOffset If currRange.Offset(looper2 * -1, 0).Value <> "" Then incrOffset = currRange.Offset(looper2 * -1, 0).Value + 1 Exit Function End If Next End Function