在多个If函数内以设定的间隔循环编号的数字

在这里输入图像说明

我试图build立评分系统,允许我在一定的时间内填充一组“分数”,例如100年。 如上图所示。

根据“types”的材料(即轻,中,重),在100年内,材料(即橡胶)将从1变坏到4,并在达到4时用新橡胶代替, 1再重复,直到100年。

所以首先我的函数有三个“IF”函数来标识包含“Rubber”,“Type”和“Initial”分数的单元格。

我已经完成了上面使用IF,THEN的function。 我现在卡在下面的部分。

现在以“初始得分2”为例:如果“橡皮”是“轻”,并且其初始条件得分为“2”,则填写行(每个得分之间有2个距离)得分“2” 9x,得分“3”4x,得分“1”20x,循环100次。

我正在寻找一种方法来开始填充函数从哪里调用。

我到目前为止的尝试:

Function score(TYP, COND, INI, i As Integer) If TYP = "Rubber" Then Goto 10 ElseIf TYP = "Wood" Then Goto 20 ElseIf TYP = "Metal" Then Goto 30 10 'Severity and Extent If COND = "Light" Then Goto 11 ElseIf COND = "Moderate" Then Goto 12 ElseIf COND = "Heavy" Then Goto 13 11 'Populate Scores If INI = "1" Then For i = 1 To 40 Step 4 Cells(1, i).Value = 1 Next For i = 1 To 10 Step 4 Cells(1, i + 40).Value = 2 Next End Function 

试着用这个函数代替Cells(1, i).Value = 1

 Function ChangeAnotherCell(rCell As Range, vVal) As String Application.Volatile With rCell If CStr(.Value) = "" Then .Replace "", vVal, 1, , 0 Else .Replace .Value, vVal, 1, , 0 End If End With ChangeAnotherCell = rCell.Value End Function 

你可以使用它,例如,像这样:

 For i = 1 To 40 Step 4 newCellValue = ChangeAnotherCell(Cells(1, i), 1) Next