可以在不使用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