3

Я хочу создать рабочий лист, чтобы при вводе чисел в ячейку и завершении редактирования пользователем этой ячейки они автоматически округлялись до ближайшего 0,25. Я не хочу иметь два столбца, один для исходного значения и один для округленного значения. Возможно ли это и если да; как можно это сделать?

Вот что такое рабочий процесс:

  • Пользовательские типы 2.30 в ячейке
  • Пользователь вкладки к следующей ячейке или нажмите Enter, чтобы покинуть ячейку
  • Значение ячейки изменяется от 2,3 до 2,25

Я также хочу, чтобы значение ячейки было 2,25, я не хочу, чтобы значение было 2,30, но отформатировано так, чтобы оно отображалось как 2,25.

2 ответа2

2

Это довольно легко в VBA.  Просто создайте эту подпрограмму:

Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    Target.Value = Round(4 * Target.Value) / 4
    Application.EnableEvents = True
End Sub

Excel вызывает эту процедуру всякий раз, когда что-либо на листе изменяется.  The

Application.EnableEvents = False

оператор временно отключает этот автоматический вызов, чтобы предотвратить Target.Value = … оператор, вызывающий рекурсивный вызов подпрограммы.  См. Как добавить VBA в MS Office? для общей информации об использовании VBA.

1

Самое близкое, что я могу получить без VBA, использует Проверку данных. Это не изменит значение, но предупредит пользователя, что он ввел недопустимое значение. Обратите внимание, что вы можете "обмануть" проверку данных в Excel, вставив данные вне диапазона проверки данных, поэтому, если это жизненно важно, то это, вероятно, не идеальное решение.

Нужная ячейка должна быть выбрана, затем перейдите в Data / Validation и выберите Allow "Custom", а формула =MOD(A2,0.25)=0 (эта формула действительна для ячейки A2). Затем вы можете перейти на вкладку "Предупреждение об ошибке" и изменить сообщение об ошибке на «Пожалуйста, введите значение, заканчивающееся на 0,25, 0,5, 0,75 или целое число в этой ячейке»

Лучший способ передать это во весь столбец - сделать одну ячейку, а затем скопировать ее во многие другие ячейки. Проверка данных должна двигаться соответствующим образом (поэтому она не всегда будет основываться на ячейке A2 - хотя это, вероятно, возможно при использовании $ A $ 2)

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