2017-10-10 121 views
0

我正在尝试一个将插入两点之间的宏。循环变化范围(宏)

这是我到目前为止有:

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 

正如你所看到的,第一,如果部分是看到如果E2是A2和A3之间,但如果A2和A3之间的E2不是它,然后继续前进看看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]))" 

是否有合并成一个圈这样的一种方式。

Excel

谢谢!

+0

根据您想要循环的方式,可能会得到不同的结果。看起来你正在使用A2,E2,A3和E3,你的循环是如何工作的?呃其他行(第2步),跨列? – Cyril

+0

对于rng中的每个单元格//直到IsFalse(cell.value)下一个单元格//在[this]中等同于isfalse(https://docs.microsoft.com/en-us/dotnet/visual-basic/language-reference /运营商/ isfalse-operator)运营商对“E2”?然后,你只需要做外面的需要,直到...... –

回答

0

您可以从案例选择语句开始。你需要提供你的公式。 如果您需要将单元格和范围设为动态,则可以用变量替换单元格行引用。就像我在 对于I = 2至最后一行 范围( “E” & I)或范围( “A” &我)

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 
0

快速使用For循环(不循环的穿行对于每个人)可能会有所帮助...我的建议是习惯使用Cells(),这使得跟踪很容易。

将显示基本循环往下行(假设您在每隔一行输出(3,5,7等)):如果范围(“E2”)> =范围(“A2”)和范围(“E2”)< =范围(“A3”)然后

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(显示为像单元格(1,5)=单元格(1,“E”)=范围(“E1”)