Введите значение в ячейку, отобразите результат формулы - PullRequest
1 голос
/ 11 февраля 2012

Я уверен, что есть очень простой ответ на этот вопрос (и я не знаю, что у меня есть возможности Excel, чтобы задать «правильный» вопрос, иначе Google даст мне ответ).

У меня есть следующая формула:

=DATE(YEAR(V1), MONTH(V1)+V2-1,8)

Я хотел бы иметь возможность ввести число в ячейку (скажем, 14) и запустить эту формулу, кроме числа, котороеЯ вхожу в клетку и должен заменить число 8 в формуле.Итак, снова при вводе 14 формула, которая будет выполняться, будет иметь вид:

=DATE(YEAR(V1), MONTH(V1)+V2-1, 14)

Итак, резюмируем, рабочий процесс выглядит так:

  1. Я ввожу значение '14' вячейка А3.
  2. Вышеприведенная формула выполнена
  3. Отображаемое значение A3 примерно равно 14.03.2012 (в зависимости от значений в моей ячейке V1 / V2)

МожетЯ делаю это без VBA?(По профессии я программист .NET, поэтому VBA для меня не чужда, я просто чувствую, что Excel должен быть в состоянии сделать это без кода).

1 Ответ

1 голос
/ 11 февраля 2012

Нет - потому что вы переносите значение в A3 по формуле в новое значение в A3.

Приведенный ниже код будет обновлять A1: A5 при изменении любой из этих ячеек (все 5, если всеизменилось сразу) с результатом, который вы запрашиваете

  1. щелкните правой кнопкой мыши вкладку листа
  2. Просмотреть код
  3. Скопируйте и вставьте код ниже

    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rng1 As Range
    Dim rng2 As Range
    Set rng1 = Intersect(Range("a1:A5"), Target)
    If rng1 Is Nothing Then Exit Sub
    Application.EnableEvents = False
    For Each rng2 In rng1
        rng2.Value = Format(Evaluate("DATE(YEAR(V1), MONTH(V1)+V2-1," & CLng(rng2.Value) & ")"), "mm/dd/yyyy")
    Next rng2
    Application.EnableEvents = True
    End Sub
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...