我正在尝试创建一个评分系统,允许我在一定年限内填充一组“分数”,例如100年。如上图所示。
取决于材料的“类型”(即轻,中等或重),在100年内材料(即橡胶)将从1降至4,并在达到4时再用新橡胶替换然后得分再次变为1并重复直到100年。
首先,我的函数将有三个“IF”函数来识别包含“Rubber”,“Type”和“Initial”得分的单元格。
我使用IF,THEN功能完成了上述操作。我现在卡在后面的部分。
现在以“初始分数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
答案 0 :(得分:0)
尝试使用此功能代替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