2017-07-08 34 views
0

我试图找到这个问题的答案,但我不知道如何连词组。Excel:具有重复功能的不同单元格

说我有三个小区A1,A2和A3:

  • A1具有一个数据验证列表内包含:X,Y,Z。
  • A3被脚本,以产生依赖于一个VLOOKUP结果选中的信件。

我想要A2镜像并提供与A1相同的功能,但我也希望两者都相互依赖。为了清楚起见,如果我在A1上选择'X',A2也会显示'X'。如果我在A2上将'X'更改为'Y',则A1将变为'Y'。无论采用哪种方式,我都希望A3能够显示相应的结果,而不管函数是在A1还是A2上更改。

这是可以实现的吗?或者我只是搞乱循环引用?

+0

...你是什么意思?用'= A1'可以很容易地让'A2'显示'A1'中的内容。你想要什么'A3'显示? – BruceWayne

+0

这听起来像是你想要一个循环引用,这不是一个好主意。你可以用vba修补一些黑客行为,但它会非常脆弱并且容易出错。我会完全避开这个功能。 – Frank

回答

0

要让2个单元始终显示相同的值,无论您输入什么内容,都需要VBA。例如:

Private Sub Worksheet_Change(ByVal Target As Range) 
    If Not Intersect(Target.Parent.Range("A1"), Target) Is Nothing Then 
    If Target.Parent.Range("A1").Value <> Target.Parent.Range("A2").Value Then 
     Target.Parent.Range("A2").Value = Target.Parent.Range("A1").Value 
    End If 
    ElseIf Not Intersect(Target.Parent.Range("A2"), Target) Is Nothing Then 
    If Target.Parent.Range("A1").Value <> Target.Parent.Range("A2").Value Then 
     Target.Parent.Range("A1").Value = Target.Parent.Range("A2").Value 
    End If 
    End If 
End Sub 

在您的工作表代码部分。

只用公式,这是不可能的。另外请记住,您需要对两个单元格进行相同的数据验证,否则您可能会遇到麻烦。

对于A3只需为您的公式选择一个单元格(因为两者显示的是相同的值,哪一个并不重要)。

2

可以在不使用VBA或循环引用的情况下连接两个单元,但它需要使用表单控件。现在请参考这个例子。

enter image description here

组合框

Comoboxes可以用作下拉框(就像你的数据验证),但需要两两件事:1)含有列表和2)连接的电池的输入范围。链接的单元格返回一个整数,该整数等于输入范围中所选值的位置。选择组合框中的X1,链接的单元格变为1,选择Y1,变为2等。

要制作组合框,请转到功能区中的开发人员并选择插入>组合框(表单控件)。将两个方框放在单元格A1和B1上,或者您希望列表的任何位置。右键单击每个组合框并选择“格式控制...”。选择你的链接单元格(你可以把它放在组合框下面以便容易地隐藏它),并用你的{X,Y,Z}作一个输入范围。使每个组合框完全相同。

现在这里的重要部分:链接单元格和它们的组合框是一条双向街道。在组合框中选择Y1,链接的单元格变为2; 将链接的单元格更改为3,组合框变为Z1。因此,当第一个组合框更改链接的单元格时,链接的单元格将更改第二个组合框。没有循环参考,没有VBA。

公式相同的组合框

在单元格C1中输入公式

​​

这是你的标准VLOOKUP,但因为你的链接的单元格返回一个整数,我们必须把它转换回查找值。

INDEX($G$2:$G$4,$E$1) 

INDEX使用您用于组合框的相同列表,$ E $ E1是您选择的东西列表中的位置。因此,它会输出您在组合框中选择的内容。

瞧!你完成了。

但是如果我想要使用不同值的连接列表呢?

请参考下面的例子:

enter image description here

在这个例子中,两者都连接组合框(同一链接的单元格)具有两个独立的列表:{X1,Y1,Z1}和{X2,Y2,Z2 }。要做到这一点,只需让每个组合框引用一个不同的输入范围。第一个盒子引用$ G2 $ G4和第二个$ H2 $ H4。同样,当你改变一个下拉框,对方就会改变:选择X1和第二组合框变为X2等

公式不同的组合框

由于链接的单元格是两个组合框一样,您的公式无法确定它应该引用哪个列表。您可以使用{1,2}的简单数据验证(或组合框!)列表,其中1代表第一个组合框,第二个组合框代表第二个组合框。在这个例子中它的单元$ A $ 4。然后你可以使用公式:

=VLOOKUP(IF($A$4=1,INDEX($G$2:$G$4,$E$1),INDEX($H$2:$H$4,$E$1)),$J$2:$K$7,2,0) 

这是我们使用相同的组合框相同的公式,但其在电池中选择组合框这个时候我们选择基于其列出,让我们的查找值$ A $ 4 。如果你想你的VLOOKUP有不同的表阵列,一个简单的两VLOOKUP公式:

=IF($A$4=1, VLOOKUP(INDEX($G$2:$G$4,$E$1),MyRange1,2,0),VLOOKUP(INDEX($H$2:$H$4,$E$1),MyRange2,2,0) 

就足够了。

您还可以使用列表框或ActiveX组合框代替Form控件组合框。前者会给你一个实际的列表,但占用空间,你不会对数据验证下拉框产生类似的效果。对于我们在这里要做的事情来说,ActiveX控件简直太复杂了。

我注意到我已经太晚了,我在你的例子中使用了不同的范围,但只需移动组合框,并将公式更改为任何你想要的位置。

+1

真棒回答(+1)。不过,你应该注意到表单不会取代单元格本身。通过键盘移动到那里会将您设置为表单下的“隐藏”单元格,这可能会导致不必要的行为。锁定单元格并禁用锁定单元格的选择可以以“不太好的方式”来防止这种情况。 –

相关问题