Excel VBA需求:实现遍历行至空单元格的GoalSeek循环宏
动态循环执行单变量求解(GoalSeek)的VBA代码
以下是修改后的VBA代码,会从第3行开始自动循环执行GoalSeek,直到指定列(这里用P列判断)出现空行时停止:
Sub GS() Dim currentRow As Long currentRow = 3 ' 起始行,和你原有代码保持一致 ' 循环条件:当P列当前行不为空时继续执行 Do While Not IsEmpty(Range("P" & currentRow)) ' 执行单变量求解:O列为目标单元格,P列为目标值,N列为可变单元格 Range("O" & currentRow).GoalSeek Goal:=Range("P" & currentRow), ChangingCell:=Range("N" & currentRow) currentRow = currentRow + 1 ' 移动到下一行 Loop End Sub
关键说明
- 起始行设置:
currentRow = 3对应你原有代码的起始行,若需要调整起始位置,直接修改这个数值即可。 - 循环终止条件:这里以P列是否为空作为终止依据,如果你需要根据其他列(比如N列或O列)判断空行,只需把
Range("P" & currentRow)替换为对应列的引用即可。 - 逻辑适配:代码会逐行执行单变量求解,直到遇到空行自动停止,无需每次手动修改行数。
注意事项
- 确保O列的单元格包含正确的计算公式,且该公式依赖N列的单元格值,否则GoalSeek无法正常运行。
- 如果数据中间存在空白行但后续还有有效数据,当前逻辑会提前终止循环;若需要跳过空白行继续执行,可将循环条件调整为检查N、O、P列中至少一列不为空,示例如下:
Do While Not (IsEmpty(Range("N" & currentRow)) And IsEmpty(Range("O" & currentRow)) And IsEmpty(Range("P" & currentRow)))
内容的提问来源于stack exchange,提问作者Geert
相关产品推荐
相关产品推荐

