inizio il calcolo somma sempre con resto 9
quando la somma dei 2 nr fa 9 non deve essere uguale 0 ma 9
Lavoro su queste informazioni e dimentico che a un certo punto avevi scritto "
ultime 2 celle fa 1 e poi 8 vero che resto fa 0 ma deve fare 1 and 8 =18"
Sostituisci tutto il codice che ti avevo dato con questo:
- Codice: Seleziona tutto
Function PyramidA(ByRef myRan As Range) As Long
Dim oArr(), wArr, J As Long, Dbg As Boolean
'
Dbg = True
wArr = Application.Intersect(myRan, Range(myRan.Cells(1, 1), myRan.Cells(1, 1).End(xlToRight))).Value
wArr = Application.WorksheetFunction.Index(wArr, 1, 0)
If Dbg Then Call DbgPrint(J, wArr)
'
Do
J = J + 1
If J > 100 Then PyramidA = 666: Exit Function
If UBound(wArr) > 2 Then
ReDim oArr(1 To UBound(wArr) - 1)
For i = 1 To UBound(oArr)
oArr(i) = (wArr(i) + wArr(i + 1)) Mod 9
If oArr(i) = 0 Then oArr(i) = 9
Next i
wArr = oArr
If Dbg Then Call DbgPrint(J, wArr)
Else
PyramidA = (wArr(1) + wArr(2)) Mod 9
If PyramidA = 0 Then PyramidA = 9
Exit Function
End If
DoEvents
Loop
End Function
Sub DbgPrint(ByVal JJ As Long, ByRef pArr)
Dim i As Long, pStr As String
For i = 1 To UBound(pArr)
pStr = pStr & pArr(i) & "-"
Next i
Debug.Print JJ, Left(pStr, Len(pStr) - 1)
End Sub
Poi prova con la formula
- Codice: Seleziona tutto
=PyramidA(A1:M1)
Valgono le istruzioni gia' date: dati di partenza da A1 verso destra; saranno presi in considerazione (con la formula data) i dati max fino a M1
La formula di Mario dà errore perche' Mod9 viene interpretato come l'indirizzo di una cella; prova cambiando Mod9 con ModMod9
Ciao