1

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

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

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

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

Спасибо

2 ответа2

3

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

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

0

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

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

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

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

Если вы также хотите проверить изменения с Sheet2 на Sheet1 , то:

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

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

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

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

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

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

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