可以在不使用VBA或循环引用的情况下连接两个单元,但它需要使用表单控件。现在请参考这个例子。
组合框
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是您选择的东西列表中的位置。因此,它会输出您在组合框中选择的内容。
瞧!你完成了。
但是如果我想要使用不同值的连接列表呢?
请参考下面的例子:
在这个例子中,两者都连接组合框(同一链接的单元格)具有两个独立的列表:{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控件简直太复杂了。
我注意到我已经太晚了,我在你的例子中使用了不同的范围,但只需移动组合框,并将公式更改为任何你想要的位置。
...你是什么意思?用'= A1'可以很容易地让'A2'显示'A1'中的内容。你想要什么'A3'显示? – BruceWayne
这听起来像是你想要一个循环引用,这不是一个好主意。你可以用vba修补一些黑客行为,但它会非常脆弱并且容易出错。我会完全避开这个功能。 – Frank