Как сделать так, чтобы формула работала в фоновом режиме ячейки в Microsoft Excel и позволила пользователю вводить данные?

Как сделать так, чтобы формула работала в фоновом режиме ячейки в Microsoft Excel и позволила пользователю вводить данные?

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

По сути, я хочу, чтобы ячейка A1in Sheet1и Sheet2отражала ту же информацию, которую вводит пользователь, без удаления формулы при вводе данных.

Мне нужно, чтобы пользователи могли вводить данные в эти ячейки, но с помощью =Sheet2!A1или =Sheet1!A1я создаю циклическую ссылку, а также оставляю формулу, которую пользователи могут удалить.

Может ли кто-нибудь порекомендовать способ решения этой проблемы?

решение1

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

Решение состоит в том, чтобы позволить пользователю ввести данные в другую ячейку, а затем ссылаться на эту ячейку A1на обоих листах.

решение2

Без макроса это сделать невозможно. Этот код должен работать:

Private Sub Worksheet_Change(ByVal Target As Range)
    therow = 1
    thecolumn = 1
    Dim wks As Worksheet
    cellrow = Target.Row
    cellcolumn = Target.Column
    If (cellrow = therow And cellcolumn = thecolumn) Then
        Set wks = ThisWorkbook.Worksheets("Sheet2")
        wks.Cells(cellrow, cellcolumn) = Target.Value
    End If
End Sub

Откройте макросы с помощью ALT+ F11, дважды щелкнитеЛист1в левой части и вставьте код в правой части. Этот код выполняется в Sheet 1, поэтому он копирует изменения в Sheet1 A1в Sheet2 A1.

Каждый раз, когда в рабочем листе происходят изменения, выполняется этот макрос. Он проверяет, находится ли измененная ячейка в строке 1 и столбце 1 (ячейка A1), а затем копирует значение в ту же ячейку вЛист2.

Если вы хотите проверить изменения изЛист2кЛист1также, тогда:

  1. Двойной кликЛист2в левой части.
  2. Вставьте код справа.
  3. Измените строку Set wks = ThisWorkbook.Worksheets("Sheet2"), указав новый пункт назначения: Set wks = ThisWorkbook.Worksheets("Sheet1").

В данный момент этот макрос использует переменныерядиколонкапринять решение о копировании значения на другой лист. В начале они установлены на 1 в строках therow=1и thecolumn=1означают, что нас интересует ячейкаА1. И далее проверяем, соответствует ли измененная ячейка этим значениям в строке If (cellrow = therow And cellcolumn = thecolumn) Then.

Вы можете изменить значения, чтобы настроить его в соответствии со своими потребностями, даже проверив целый столбец или строку, например:

Изменение строки проверки на If (cellcolumn = thecolumn) Thenскопирует изменения, которые произойдут в столбце, имеющем то же значение, что и переменная, thecolumnнезависимо от того, в какой строке это находится.

Другой пример:

Изменение строки проверки на If (cellcolumn > thecolumn) Thenскопирует изменения, которые произойдут в любом столбце, значение которого больше значения , thecolumnнезависимо от того, в какой строке он находится.

Связанный контент