2014-10-27 99 views
0

我需要循环20行,并将一个方程添加到工作表中,该工作表因变量而异。我正在使用If .... Else If语句,我想我需要声明变量,因为我只填充第二行数据。IfElse和使用变量?

我的代码:

Do While counter < 20 
     counter = counter + 1 
    If CNum = 269 And SCode = 7168 Then 
     NTotal = ("=(C2*35)/1000") 
     Range("E2").Value = NTotal 
    ElseIf CNum = 269 And SCode = 7181 Then 
     NTotal = ("=(C2*2.5)/1000") 
     Range("E2").Value = NTotal 
    ElseIf CNum = 269 And SCode = 7183 Then 
     NTotal = ("=(2*(D2-C2))/1000+50") 
     Range("E2").Value = NTotal 
    End If 
Loop 

难道我只是申报C2,D2一个范围值,E2,使这项工作?

+0

你为什么不这样做,在您的工作表一个简单的公式? (我只是好奇......如果你不需要在VBA中做,而且有一个更简单的方法,我想你可以探索它) – Barranka 2014-10-27 19:42:01

+0

这是我在工作表上做的一个更大的重新格式的一部分这是一个重复的任务。寻求简化任务。 – 2014-10-27 19:56:48

回答

2

这是工作,但两件事情:

首先因为CNUM和SCODE不是在循环中改变他们总是有相同的值,因此只有第一个匹配的条件将永远不会满足每个迭代

其次,如果你想增加行数,那么你需要包含'counter'来增加'range'语句的rows元素。一个例子可以如下:

Do While counter < 20 
     counter = counter + 1 
    If CNum = 269 And scode = 7168 Then 
     NTotal = ("=(C2*35)/1000") 
     Cells(counter + 1, 5).Value = NTotal 
    ElseIf CNum = 269 And scode = 7181 Then 
     NTotal = ("=(C2*2.5)/1000") 
     Cells(counter + 1, 5).Value = NTotal 
    ElseIf CNum = 269 And scode = 7183 Then 
     NTotal = ("=(2*(D2-C2))/1000+50") 
     Cells(counter + 1, 5).Value = NTotal 
    End If 
Loop 

编辑

您还可以照顾到阅读this

+0

我很困惑。如果我看着两个值,那么他们在循环中没有改变呢? Scode发生变化,CNum保持不变。 – 2014-10-28 14:18:58

+0

如果ElseIf语句检查变量的值,它们实际上不会改变它们。所以如果'scode'设置为5000进入循环,当循环退出时它仍然是5000。你是否运行过代码,并且确实对你有用? – barryleajo 2014-10-28 15:11:57

+0

我确实运行了代码,但是我得到了独立于Scode的每一行的第一个公式。 – 2014-10-28 15:16:07