我正在尝试创建一个电子表格来汇编来自多个单元格的数据。
A1
本质上我希望单元格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
这意味着我们对单元格感兴趣A1. 并且我们进一步检查修改后的单元格是否与行中的这些值匹配If (cellrow = therow And cellcolumn = thecolumn) Then
。
您可以修改值以根据您的需要进行自定义,甚至检查完整的列或行,例如:
将验证行更改为If (cellcolumn = thecolumn) Then
将会复制发生在与变量具有相同值的列中的更改,thecolumn
无论它是哪一行。
其他例子:
将验证行更改为If (cellcolumn > thecolumn) Then
将复制发生在大于值的任何列中的更改,thecolumn
无论它是哪一行。