每次在 Excel 中的不同单元格上进行 VBA 目标搜索

每次在 Excel 中的不同单元格上进行 VBA 目标搜索

我正在制作一份用于投资的 Excel 表。

我有以下列:

  • 显示年份(1、2、3、4、5 等)
  • B 显示年度成本
  • C 表示年收入
  • D 表示全年总成本/收入(B 减去 C)
  • E 表示总体收入/损失

现在...

我希望单击按钮时自动进行目标搜索。我希望它目标搜索最后一个包含数字的单元格。这意味着,如果我有 10 年的投资,它应该是 E10。如果是 5 年,应该是 E5 等等。

我似乎找不到任何关于这个主题的内容。我希望它目标查找最后一个单元格,其中的数字为 0。

我如何在 VBA 例程中执行此操作?

顺便说一句,我有一个单元格,它显示最后一个单元格的名称,并带有数字。如果是 E3,它会显示“E3”。

答案1

类似这样的事情应该做:

Sub GoalSeek()
    Const csOverallSt As String = "E1"
    Const csChangeCol As String = "C"
    Const ciGoal As Integer = 0

    Dim rngCheck As Range

    Set rngCheck = Range(csOverallSt)
    Do While rngCheck.Offset(1, 0).Value <> ""
        Set rngCheck = rngCheck.Offset(1)
    Loop

    rngCheck.GoalSeek goal:=ciGoal, changingcell:=Range(csChangeCol & rngCheck.Row)
End Sub

常数csOverallSt定义了要检查的第一个空白单元格 - 这样您就不需要额外的单元格来定义第一个空白单元格。常数csChangeCol定义了哪一列包含您希望目标搜索过程更改的值。常数ciGoal定义了目标搜索应该寻找什么值。变量rngCheck定义了单元格范围,或者,正如我们在这里使用的,单个单元格。

该过程首先分配以rngCheck匹配您在 中定义的任何单元格csOverallSt。然后检查下面的单元格是否rngCheck为空白;如果不是,则rngCheck向下移动一行,然后再次检查。它将继续执行此操作,直到找到空白单元格。

当它找到空白单元格时,它将执行目标搜索,尝试通过更改 中定义的列和 中的同一行中的值将 中的值设置rngCheck为您在 中定义的值。ciGoalcsChangeColrngCheck

相关内容