2017-07-08 35 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)。不過,你應該注意到表單不會取代單元格本身。通過鍵盤移動到那裏會將您設置爲表單下的「隱藏」單元格,這可能會導致不必要的行爲。鎖定單元格並禁用鎖定單元格的選擇可以以「不太好的方式」來防止這種情況。 –

相關問題