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