如果单元格A1 = 0,则行1-100的迭代,然后是0,否则通过设置为C1值来实现goalseek单元格B1的值

时间:2015-05-01 10:44:41

标签: string excel-vba vba excel

我已经编写了一些代码来将一个单元格(U)中的值与另一个单元格(U)中的值相对应,但是通过更改第三个(Q)中的值。 它首先检查另一个单元格(Y),它是一个错误检查单元格。 全部在同一行。

我想为一个范围内的所有行运行它, 我写了以下内容:

If Sheets("Main").Range("Y16") <> "Volumes OK" Then 
Sheets("Main").Range("Q16").Value = 0
  Else
Sheets("Main").Range("U16").GoalSeek Goal:=Sheets("Main").Range("V16"), ChangingCell:=Range("Q16")
  End If

我想要做的是尝试使用字符串函数迭代16-200行,但我不确定需要定义多少个整数以及按什么顺序以及如何使其工作! 我想我必须调暗字符串然后使用For循环但不确定如何...

1 个答案:

答案 0 :(得分:0)

要遍历第16到第200行,请执行以下操作:

Dim MyRow as Integer

for MyRow = 16 to 200
  If Sheets("Main").Range("Y" & MyRow) <> "Volumes OK" Then 
    Sheets("Main").Range("Q" & MyRow).Value = 0
  Else
    Sheets("Main").Range("U" & MyRow).GoalSeek _
         Goal:=Sheets("Main").Range("V" & MyRow), ChangingCell:=Sheets("Main").Range("Q" & MyRow)
  End If
Next

如果您的任何值需要来自固定位置,请将动态.Range("x") & MyRow)替换为固定.Range("xy"),以使其指向一致的列x和行{{1 }}

注意:在y公式中,我将GoalSeek更改为Range(),以便与公式的其余部分保持一致。如果由于某种原因,您将来要修改此代码并离开Sheets("Main").Range(),那么Sheets("Main")(不带前导Range())会指向当时的当前工作表,可能你想要什么。通过指定它来自哪个工作表,您可以在任何地方移动,并且仍然可以使代码行工作。通过明确说明您正在处理的工作表,它也更具可读性。