Я пытаюсь требовать, чтобы значение заполнялось в столбце A, если в столбце D есть сумма. Столбец A может содержать любое значение (текстовое или числовое), столбец D может быть только числом.

Так, например, если ячейка D1 равна 11, ячейка A1 должна требовать значения и в идеале иметь всплывающее сообщение, предупреждающее пользователя о проблеме.

Я посмотрел на функцию проверки данных, но она, кажется, проверяет только ячейку на основе значения этой ячейки. Если это возможно, я не смог выяснить, как сделать валидацию данных для проверки одной ячейки на основе значения другой.

Есть идеи?

Редактирование, чтобы добавить - я пытаюсь сделать это, потому что у меня есть столбец суммы в долларах (столбец D). Столбец A должен быть номером счета-фактуры, связанным с суммой в долларах в столбце D. Каждая сумма в столбце D должна иметь номер счета в столбце A. У меня уже есть условное форматирование в электронной таблице, и, по-видимому, ярко-красная окраска ячеек не является достаточным индикатором того, что «вы сделали что-то не так» для людей, заполняющих электронную таблицу.

2 ответа2

1

Вы можете использовать параметр Настройка в (вкладке Settings) диалогового окна Проверка данных. Выберите данные в столбце D и нажмите « Проверка данных». Выберите « Пользовательский» в раскрывающемся списке « Разрешить» и введите формулу:

=OR(ISBLANK(A1),NOT(ISBLANK(D1)))

Убедитесь, что параметр « Пропустить бланк» также не отмечен.

К сожалению, наличие пустого значения (например, ввод значения, а затем его удаление), похоже, не вызывает всплывающее окно. Вы можете убедиться в том, что оно считает значение недействительным, нажав кнопку «Обвести неверные данные» , но при этом всплывающее сообщение не появится. (Я все равно ненавижу эти всплывающие окна!) Вы всегда можете поместить эту формулу в другой столбец, возможно, в виде

=IF(OR(ISBLANK(A1),NOT(ISBLANK(D1))),"","Enter a value")

Или вы можете использовать условное форматирование, чтобы выделить недопустимые ячейки.

0

Вы можете начать с этого в VBA на рабочем листе, настроить соответственно

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)


    If Target.Column <> 1 Then
        Exit Sub
    End If

    ActiveSheet.Unprotect


    If IsEmpty(Target) Then
       Target.Offset(, 1).Clear
       Target.Offset(, 1).Locked = True
    Else
        Target.Offset(, 1).Locked = False
    End If


    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True

End Sub

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