Excel – как иметь прямой ввод данных или значение ячейки из формулы

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

Пример: либо прямо введите номер в ячейку A4, либо укажите значение A4 = A2 + A3

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

Thx, надеюсь, это прояснится.

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

Следующий код работает в этих помещениях:

  • Либо меняются ячейки A2 или A3
  • Оба A2 и A3 должны иметь значения

Итак, когда отредактированы A2 или A3, и обе ячейки содержат значение, макрос будет записывать = A2 + A3 в ячейку A4. Если какое-либо из значений в A2 или A3 является текстом, макрос все равно будет выполняться, и в Excel появится сообщение об ошибке для добавления текста с цифрами. Используйте Sum (), чтобы избежать сообщения об ошибке.

Если ячейка A4 будет отредактирована и формула будет перезаписана, это значение будет показываться до тех пор, пока A2 или A3 не будут снова отредактированы.

Если это не соответствует вашим требованиям, пропишите их более подробно.

Код переходит в модуль Sheet (щелкните правой кнопкой мыши вкладку листа, нажмите «Просмотреть код», вставьте код в область большого кода).

 Private Sub Worksheet_Change(ByVal Target As Excel.Range) If Not Intersect(Target, Range("A2:A3")) Is Nothing Then If WorksheetFunction.Count(Range("A2:A3")) = 2 Then Range("A4").Formula = "=A2+A3" End If End If End Sub 

VBA может это сделать, он должен быть в рабочем листе VBA и может потребоваться некоторая настройка

 Private Sub Worksheet_Change(ByVal Target As Excel.Range) With Target If .Count = 1 Then If .Column = 4 And .Row = 1 Then If IsEmpty(.Value) And .Offset(-1) <> "" AND .Offset(-2) <> "" Then Application.EnableEvents = False .FormulaR1C1 = "=A2+A3" Application.EnableEvents = True End If End If End If End With End Sub 
  • Excel 2010 - Как записать макрос и воспроизвести его для всех ячеек в столбце?
  • Восстановить пароль защиты листа в Excel
  • Вам нужно два окна excel бок о бок, на разных мониторах, в том же экземпляре
  • Excel отображает ### для длинного текста - что не так?
  • Как получить имя текущего столбца в Excel?
  • Транспонирование данных из одного списка столбцов в несколько столбцов
  • Показать вкладку листа Excel в> = 2 строки
  • Могу ли я запустить этот макрос быстрее?
  • Проблемы с открытием вложений Excel из Outlook
  • В excel, не могу понять, почему цвет фона для ячейки не изменится?
  • Восстановление документов Excel, которые были закрыты без сохранения
  • Interesting Posts

    Сам repository обычно не тестируется?

    Winforms – нажмите / перетащить в любом месте формы, чтобы переместить его, как если бы щелкнул в заголовке формы

    Использование CapsLock для переключения раскладки клавиатуры

    Почему NSWindow без styleMask: NSTitledWindowMask не может быть keyWindow?

    Не удалось найти соответствующий навигационный случай с идентификатором-view-id ‘/pages/index.xhtml’

    fuken устаревшее предупреждение

    Gdb печатать в файл вместо stdout

    Можно ли изменить текст подсказки окна терминала?

    Что происходит, когда гигабитные коммутаторы подключены через старый кабель CAT5?

    Можно ли запрограммировать iPhone на C ++?

    Какой алгоритм дает предложения в проверке орфографии?

    Макрос для копирования отдельных значений из одного листа Excel в другой

    Угловая директива динамического шаблона Angular.js

    Отображение вывода командной строки Windows и redirect ее в файл

    Повысьте производительность webView (должна быть такая же производительность, что и собственный веб-браузер)

    Давайте будем гением компьютера.