Excel 有没有一种方法可以借助于双库存方差公式中的for循环来缩短流程?

Excel 有没有一种方法可以借助于双库存方差公式中的for循环来缩短流程?,excel,vba,for-loop,Excel,Vba,For Loop,我是VBA新手,我需要有人帮助我进行for循环,因为我的程序变得太重复了。我已经写了一个代码,将计算两个股票的方差。代码似乎运行良好。我只需要一个for循环,用于计算和执行公式的代码的最后一部分。范围M15到M25包含从0到100的百分比,范围N15到N25包含从100到0的百分比,有时此代码在非英语计算机中不起作用 下面是我的代码。任何帮助都将不胜感激。提前谢谢 Dim var1 As String Dim var2 As String Dim covarval As

我是VBA新手,我需要有人帮助我进行for循环,因为我的程序变得太重复了。我已经写了一个代码,将计算两个股票的方差。代码似乎运行良好。我只需要一个for循环,用于计算和执行公式的代码的最后一部分。范围M15到M25包含从0到100的百分比,范围N15到N25包含从100到0的百分比,有时此代码在非英语计算机中不起作用

下面是我的代码。任何帮助都将不胜感激。提前谢谢

    Dim var1 As String
    Dim var2 As String
    Dim covarval As String
    Dim covar1 As Range
    Dim covar2 As Range

    If ComboBox1 = "Royal Dutch Shell" Then var1 = Range("B35")
    If ComboBox1 = "Exxon Mobil Corp" Then var1 = Range("C35")
    If ComboBox2 = "Biogen Inc" Then var2 = Range("F35")
    If ComboBox2 = "Johnson & Johnson" Then var2 = Range("G35")

    If ComboBox1 = "Royal Dutch Shell" Then
    Set covar1 = Range("rds")

    ElseIf ComboBox1 = "Exxon Mobil Corp" Then
    Set covar1 = Range("exon")
End If
    If ComboBox2 = "Biogen Inc" Then
    Set covar2 = Range("bign")

    ElseIf ComboBox2 = "Johnson & Johnson" Then
    Set covar2 = Range("jhnsn")
End If

Range("B39").Formula = "=COVAR(" & covar1.Address & "," & covar2.Address & ")"
covarval = Range("B39").Value

Sheets("EfficientFrontier").Select

   "I need **for loop** for this part"

Range("p15").Formula = "=M15^2*" & var1 & "+N15^2*" & var2 & "+2*M15*N15* " & covarval & ""
Range("p16").Formula = "=M16^2*" & var1 & "+N16^2*" & var2 & "+2*M16*N16* " & covarval & ""
Range("p17").Formula = "=M17^2*" & var1 & "+N17^2*" & var2 & "+2*M17*N17* " & covarval & ""
Range("p18").Formula = "=M18^2*" & var1 & "+N18^2*" & var2 & "+2*M18*N18* " & covarval & ""
Range("p19").Formula = "=M19^2*" & var1 & "+N19^2*" & var2 & "+2*M19*N19* " & covarval & ""
Range("p20").Formula = "=M20^2*" & var1 & "+N20^2*" & var2 & "+2*M20*N20* " & covarval & ""
Range("p21").Formula = "=M21^2*" & var1 & "+N21^2*" & var2 & "+2*M21*N21* " & covarval & ""
Range("p22").Formula = "=M22^2*" & var1 & "+N22^2*" & var2 & "+2*M22*N22* " & covarval & ""
Range("p23").Formula = "=M23^2*" & var1 & "+N23^2*" & var2 & "+2*M23*N23* " & covarval & ""
Range("p24").Formula = "=M24^2*" & var1 & "+N24^2*" & var2 & "+2*M24*N24* " & covarval & ""
Range("p25").Formula = "=M25^2*" & var1 & "+N25^2*" & var2 & "+2*M25*N25* " & covarval & ""

查看代码的最后一部分,每行的可变部分是一个从15到25的数字。因此,这样的For循环可以减少代码行数:

For i = 15 To 25
   Range("P" & i).Formula = "=M" & i & "^2*" & var1 & "+N" & i & "^2*" & var2 & "+2*M" & i & "*N" & i & "* " & covarval & ""
Next
如您所见,数字已替换为从15到25的
i