在多个If函数内以设定间隔循环数组

时间:2014-01-07 10:43:26

标签: excel excel-vba vba

enter image description here

我正在尝试创建一个评分系统,允许我在一定年限内填充一组“分数”,例如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 

1 个答案:

答案 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
相关问题