我正在试图创建一个将在两点之间插值的宏。
这是我到目前为止所做的:
Sub Withoutloop()
If Range("E2") >= Range("A2") And Range("E2") <= Range("A3") Then
Range("E3").FormulaR1C1 = "=(R[-1]C[0])/((R[0]C[-4]-R[-1]C[-4])/(R[0]C[-3]-R[-1]C[-3]))"
ElseIf Range("E2") >= Range("A3") And Range("E2") <= Range("A4") Then
Range("E3").FormulaR1C1 = "=(R[-1]C[0])/((R[1]C[-4]-R[0]C[-4])/(R[1]C[-3]-R[0]C[-3]))"
ElseIf Range("E2") > Range("A4") Then
Range("E3") = "Fail"
End If
End Sub
正如你所看到的,第一个if部分是看E2是否在A2和A3之间,但如果E2不在A2和A3之间,那么它继续看看E2是否在A3和A4等之间,我想要一个代码自动执行此过程。
其次,在该部分中,如果我发现两个单元格E2介于其中,则为我计算x值。
Range("E3").FormulaR1C1 = "=(R[-1]C[0])/((R[0]C[-4]-R[-1]C[-4])/(R[0]C[-3]-R[-1]C[-3]))"
在每个循环中我希望单元格向下移动一个..显示在这里:
Range("E3").FormulaR1C1 = "=(R[-1]C[0])/((R1C[-4]-R[0]C[-4])/(R1C[-3]-R[0]C[-3]))"
有没有办法将其纳入循环。
谢谢!
答案 0 :(得分:0)
您可以从案例选择语句开始。你需要提供你的配方。 如果需要单元格和范围是动态的,则可以使用变量替换单元格行引用。像我一样 对于I = 2到最后一行 范围(“E”和I)或范围(“A”&amp; i)
Select Case Range("E2").Value
Case Is >= Range("A2").Value
If Range("E2").Value < Range("A3").Value Then
Range("E3").FormulaR1C1 = "your formula"
End If
Case Is >= Range("A3").Value
If Range("E2").Value < Range("A4").Value Then
Range("E3").FormulaR1C1 = "your formula"
End If
Case Is >= Range("A4").Value
If Range("E2").Value < Range("A5").Value Then
Range("E3").FormulaR1C1 = "your formula"
End If
Case Is >= Range("A5").Value
If Range("E2").Value < Range("A6").Value Then
Range("E3").FormulaR1C1 = "your formula"
End If
Else
Range("E3").Value = "Fail"
End Select
答案 1 :(得分:0)
使用For循环(不是For Each)快速循环循环可能会有所帮助......我的建议是习惯使用Cells(),这样可以很容易地跟踪。
将显示基本循环向下行(假设您在每隔一行(3,5,7等)中输出):如果范围(&#34; E2&#34;)&gt; =范围( &#34; A2&#34;)和范围(&#34; E2&#34;)&lt; =范围(&#34; A3&#34;)然后
Dim i as Long
For i = 2 to 10 Step 2
If Cells(i,"E").Value >= Cells(i, "A").Value AND Cells(i, "E").Value <= Cells(i+1, "A") Then
Cells(i+1, "E").Formula = "insert formula"
End If
Next i
如果这是沿着列,你会改变你的变量的位置(在这种情况下,可能想要使用数字,例如A = 1,E = 5(显示像Cells(1,5)=单元格(1,&#34; E&#34;)=范围(&#34; E1&#34;)