汗,代码不是这样写的。
写成循环,可以简化代码。
同时,要判断列名,不然死循环
Select Case e.DataCol.name
Case "i", "n", "A"
For i As Integer = 1 To 36
If i <= e.DataRow("n") Then
e.DataRow("z" & i) = e.DataRow("A") * e.DataRow("i")/100 * (1 + e.DataRow("i")/100)^e.DataRow("n")/ ((e.DataRow("i")/100 + 1) ^ e.DataRow("n") -1)
e.DataRow("a" & i) = e.DataRow("A") * e.DataRow("i")/100 * (1 + e.DataRow("i")/100)^ 0 / ((e.DataRow("i")/100 + 1) ^ e.DataRow("n") -1)
e.DataRow("i" & i) = e.DataRow("z" & i)-e.DataRow("a" & i)
e.DataRow("s" & i) = iif(i=1,e.DataRow("A"),e.DataRow("s" & i-1))-e.DataRow("a" & i)
Else
e.DataRow("z" & i) = Nothing
e.DataRow("a" & i) = Nothing
e.DataRow("i" & i) = Nothing
e.DataRow("s" & i) = Nothing
End If
Next
End Select