
Я пытаюсь создать электронную таблицу, которая будет собирать данные из нескольких ячеек.
По сути, я хочу, чтобы ячейка A1
in 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также, тогда:
- Двойной кликЛист2в левой части.
- Вставьте код справа.
- Измените строку
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
независимо от того, в какой строке он находится.