The macro below may help:
p1, p2 etc are prizes for first, second etc.
s1 is the actual stack the function should return the value of
s2,s3 are the other stacks
I made this years ago and haven't used it for a long time now (I don't believe in ICM anymore) but I think there are some constraints in how it is used - e.g. if you are four handed they must be s1,s2,s3,s4 with zero for the other stacks. You can't have zero for s4 then have chips held by s5.
Test it out with some known results first.
Public Function EvaluateICM(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10 As Currency) As Currency
If p1 = 0 Or s1 = 0 Then
Result = 0
ElseIf p2 = 0 Then
Result = p1 * s1 / (s1 + s2 + s3 + s4 + s5 + s6 + s7 + s8 + s9 + s10)
Else
Result = (p1 * s1 / (s1 + s2 + s3 + s4 + s5 + s6 + s7 + s8 + s9 + s10))
If s2 > 0 Then
Result = Result + (EvaluateICM(p2, p3, p4, p5, p6, p7, p8, p9, p10, 0, s1, s3, s4, s5, s6, s7, s8, s9, s10, 0) * (s2 / (s1 + s2 + s3 + s4 + s5 + s6 + s7 + s8 + s9 + s10)))
If s3 > 0 Then
Result = Result + (EvaluateICM(p2, p3, p4, p5, p6, p7, p8, p9, p10, 0, s1, s2, s4, s5, s6, s7, s8, s9, s10, 0) * (s3 / (s1 + s2 + s3 + s4 + s5 + s6 + s7 + s8 + s9 + s10)))
If s4 > 0 Then
Result = Result + (EvaluateICM(p2, p3, p4, p5, p6, p7, p8, p9, p10, 0, s1, s2, s3, s5, s6, s7, s8, s9, s10, 0) * (s4 / (s1 + s2 + s3 + s4 + s5 + s6 + s7 + s8 + s9 + s10)))
If s5 > 0 Then
Result = Result + (EvaluateICM(p2, p3, p4, p5, p6, p7, p8, p9, p10, 0, s1, s2, s3, s4, s6, s7, s8, s9, s10, 0) * (s5 / (s1 + s2 + s3 + s4 + s5 + s6 + s7 + s8 + s9 + s10)))
If s6 > 0 Then
Result = Result + (EvaluateICM(p2, p3, p4, p5, p6, p7, p8, p9, p10, 0, s1, s2, s3, s4, s5, s7, s8, s9, s10, 0) * (s6 / (s1 + s2 + s3 + s4 + s5 + s6 + s7 + s8 + s9 + s10)))
If s7 > 0 Then
Result = Result + (EvaluateICM(p2, p3, p4, p5, p6, p7, p8, p9, p10, 0, s1, s2, s3, s4, s5, s6, s8, s9, s10, 0) * (s7 / (s1 + s2 + s3 + s4 + s5 + s6 + s7 + s8 + s9 + s10)))
If s8 > 0 Then
Result = Result + (EvaluateICM(p2, p3, p4, p5, p6, p7, p8, p9, p10, 0, s1, s2, s3, s4, s5, s6, s7, s9, s10, 0) * (s8 / (s1 + s2 + s3 + s4 + s5 + s6 + s7 + s8 + s9 + s10)))
If s9 > 0 Then
Result = Result + (EvaluateICM(p2, p3, p4, p5, p6, p7, p8, p9, p10, 0, s1, s2, s3, s4, s5, s6, s7, s8, s10, 0) * (s9 / (s1 + s2 + s3 + s4 + s5 + s6 + s7 + s8 + s9 + s10)))
If s10 > 0 Then
Result = Result + (EvaluateICM(p2, p3, p4, p5, p6, p7, p8, p9, p10, 0, s1, s2, s3, s4, s5, s6, s7, s8, s9, 0) * (s10 / (s1 + s2 + s3 + s4 + s5 + s6 + s7 + s8 + s9 + s10)))
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
EvaluateICM = Result
End Function