Обновление данных в ячейке данными из другой ячейки при достижении определенного результата - PullRequest
0 голосов
/ 28 августа 2018

Я пытаюсь сделать так, чтобы когда одна ячейка ( B1 ) достигала значения 0, A1 , который представляет собой текст, введенный пользователем, теперь заменяется данными в C1 , который также является данными, введенными пользователем. Это означает, что формулы нельзя помещать ни в A1 , ни в C1 , поскольку они являются данными, введенными пользователем (B1 уже имеет формулу, вычисляющую его значение.)

Инстинктивно я хочу использовать = IF (B1 = 0, A1 = C1, ""), но очевидно, что это не работает, так как A1 = C1 проверяет, равны ли они друг другу, не заменяя A1 на C1.

Возможно, это будет простое решение, но я не могу найти способ заставить его работать.

Ответы [ 2 ]

0 голосов
/ 28 августа 2018

Невозможно, чтобы формулы и пользовательский ввод находились в одном и том же поле. Для этого вам понадобится решение VBA, подобное следующему.

С помощью редактора макросов (alt + f11) поместите в лист, где должен сработать код, следующее:

Option Explicit
Private Sub Worksheet_Change(ByVal rng As Range)
    Dim sh As Worksheet
    'only trigger on when column 2 experiences a change
    If rng.Column = 2 And rng.Value2 = 0 Then
        Set sh = rng.Parent
        sh.Cells(rng.Row, 1).Value2 = sh.Cells(rng.Row, 3).Value2
    End If
End Sub

Обратите внимание, что столбец B здесь нумеруется как 2, а C равен 3 и т. Д. Эта «перезапись» сработает только, когда столбец B изменится на 0, она не заставит C переместиться в A, когда пользователь перезапишет A впоследствии. Если вы хотите, чтобы он срабатывал всякий раз, когда A, B или C меняются, то перезапишите условие триггера:

If rng.Column <= 3 And rng.Value2 = 0 Then

Если этот ответ был вам полезен, пожалуйста, не забудьте проголосовать. Спасибо!

0 голосов
/ 28 августа 2018

Вам не нужен знак равенства при использовании ячейки в формуле:

=IF(B1=0,C1,"")
...