Excel,2张,2列,相同的价值?

我在excel 2007文件中有2张工作表sheet1和sheet2。

在sheet2中,我有一个由窗体/macros(带有树视图控件)pipe理的列。 当一个元素被选中时,单元格填充一个“x”,当它被取消选中时,单元格填充“”(没有)。

在sheet1中,我想创build一个等于sheet2列的列。 所以例如:如果sheet2!C24 =“x”那么sheet1!c24也应该是“x”我也希望它能够双向工作。 如果用户将sheet1!c24更改为“x”,那么我希望sheet2!c24采用相同的值。

问题:在Sheet1中,我尝试了Sheet1!c24 = sheet2!c24,但是当sheet2!c24 =“”时,sheet1!c24在Sheet2中显示0而不是任何内容 – 我尝试了sheet2!c24 = sheet1!c24,单元格显示公式(='sheet1!c24'),而不是值…

所以基本上,我想要的是无论你做什么改变,在Sheet1或Sheet2中,Sheet1和Sheet2中的两列都被更新了…我怎样才能做到这一点?

我认为你需要做的是使用两张Worksheet_Change事件,如果在你感兴趣的列进行更改,然后你更新另一张表中的同一个单元格。

像这样的东西会进入工作表代码模块:

 Private Sub worksheet_change(ByVal target As Range) Dim c As Range 'Test to see if the cell just changed is 'in the column we are interested in Set c = Application.Intersect(target, Range("A:A")) If Not c Is Nothing Then 'Copy across to other sheet If Not beingEdited Then beingEdited = True Sheet1.Range(target.Address) = target.Value beingEdited = False End If End If End Sub 

你需要一个beingEditedbeingEditedvariables在更大范围的其他地方被声明,这样你才能避免触发自己的事件和Excel陷入循环。

在另一张表中,基本上有相同的过程,只不过它会引用第一个工作表,例如Sheet1.Range(target.Address) = target.Value

显然,你必须调整这个范围/表单。

你有正确的想法,但你可能需要closures事件,然后再进行更改,否则最终会出现循环

 Private Sub worksheet_change(ByVal target As Range) application.enableevents = false sheet1.range("c24").value = sheet2.("c24").value application.enableevents = true end sub 

只要确保您在最后再次启用事件。

我做了这样的事情,我有一个汇总表和一个testing表。 当我在testing表中添加一个新值并传递(P)时,汇总表中的单元格将保持增量。 这是保持通过多less次testing的计数。 这里是:

COUNTIF(testing!$ C $ 5:$ C $ 1017,“P”);

希望这可以帮助。