Я делаю лист Excel для инвестирования.

У меня есть следующие столбцы:

  • Показ года (1, 2, 3, 4, 5 и т.д.)
  • B показывает годовую стоимость
  • C показывает годовой доход
  • D показывает общую стоимость / доход (B минус C) за год
  • E показывает общий доход / убыток

Сейчас...

Я хочу иметь автоматический поиск цели при нажатии кнопки. Я хочу, чтобы цель - ПОСМОТРЕТЬ ПОСЛЕДНУЮ КЛЕТКУ С НОМЕРОМ В ЕГО. То есть, если у меня есть инвестиции с 10 лет, это должно E10. Если у него есть 5 лет, E5 и т.д.

Кажется, я ничего не могу найти по этому вопросу. Я хочу, чтобы это значение Цель поиска ПОСЛЕДНИЕ КЛЕТОК С НОМЕРОМ к значению 0.

Как я могу сделать это в рутине VBA?

Кстати, у меня есть ячейка, которая показывает мне имя последней клетки с номером. Это говорит как "E3", если это E3.

1 ответ1

0

Нечто подобное должно сделать:

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 на значение, определенное вами в ciGoal , изменив значение в столбце, определенном в csChangeCol и в той же строке, что и rngCheck .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .