Условная формула самоссылки (выполняется только в том случае, если значение ячейки == "") - PullRequest
0 голосов
/ 16 сентября 2010

Вот моя проблема с выполнением формулы Excel.

Вот требования:

  • У меня есть несколько строк в листе Excel.
  • В конце каждой строки есть поле «Месяц».
  • Если кто-то вводит новые значения в эту строку, необходимо вставить текущий месяц.
  • Если значения будут изменены, месяц не должен изменяться.

Чтобы включить текущий месяц, я использую некоторую формулу, подобную этой (A10 - просто случайное поле, которое будетзаполнено):

=IF(A10<>0; MONTH(NOW()); "")

Теперь мне нужно некоторое условие, чтобы проверить, содержит ли поле месяц уже, и если это так, ничего не делать.Я попробовал следующее (A15 должен содержать месяц):

=IF(A15 <> ""; IF(A10<>0; MONTH(NOW()); "") ; )

Чтобы решить, следует ли менять поле формулой, я должен проверить его текущее значение.Проблема в том, что это закончится циклической ссылкой на само поле.

У кого-нибудь есть рабочее решение для такого рода проблем?Я стараюсь не использовать там никакого кода VBA.

1 Ответ

5 голосов
/ 16 сентября 2010

Вы не можете сделать это с формулами, вы должны использовать VBA.Формула не может ссылаться на себя.

Другая проблема заключается в том, что СЕЙЧАС будет меняться каждый раз, когда вы пересчитываете.Так что даже с вашей первой формулой месяц не будет оставаться статичным.

Если вы решите, что можете жить с VBA, щелкните правой кнопкой мыши вкладку листа и выберите «Просмотреть код».Код, который вам нужен, будет выглядеть примерно так:

Private Sub Worksheet_Change(ByVal Target As Range)

    'We only care if cells are changed in a certain range
    If Not Intersect(Target, Me.Range("A1:G10")) Is Nothing Then

        'Only do this if there's nothing in row 15 for whatever column
        'was changed
        If IsEmpty(Me.Cells(15, Target.Column).Value) Then

            'Put the month in row 15 of the current column
            Me.Cells(15, Target.Column).Value = Month(Now)
        End If
    End If

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...