2017-10-13 49 views
3

我的表生長在數據刷新如下列表:Excel中沒有新的列上創建動態下拉列表數據驗證獨特的項目

Balham Halfords - P83690 
Balham Halfords - P83690 
Gloucester & Durham St - P83680 
Gloucester & Durham St - P83680 

在另一片,我想在下拉列表中的數據驗證僅顯示:

Balham Halfords - P83690 
Gloucester & Durham St - P83680 

麻煩的是,我不想在書中任何地方創建一個不同的列表關閉表A,我想數據驗證清單是聰明到進入到表新記錄A.

+1

我不確定是否有任何方法可以在無輔助列的情況下完成此操作。數據驗證(無論如何用於下拉列表)本質上是非智能的。它只允許你輸入一系列單元格 - 不允許公式。 – ImaginaryHuman072889

+0

謝謝。因此,我認爲我最好的選擇是在新記錄進入時用宏創建一個不同的單列表格。然後讓數據驗證列表範圍成爲上述表格。但這並不理想,因爲用戶在添加到表A時必須單擊按鈕,並且人們無法處理這些類型的說明。 –

+0

我同意需要幫手列。如果你想避免VBA,可能可以用公式來完成。 – ImaginaryHuman072889

回答

1

如果您想使用公式的Helper列方法,請嘗試此解決方案。

如果您的數據在列A中,請在單元格D2中輸入此公式=IFERROR(INDEX($A$2:$A$900, MATCH(0,COUNTIF($D$1:D1, $A$2:$A$900), 0)),""),並將其拖動下去,只要您估計會有不同的值。您必須使用CTRL + SHIFT + ENTER來輸入它,因爲它是一個數組公式。

enter image description here

然後用數據驗證,選擇列表,並在源每當新的值被添加到表中輸入公式=OFFSET(D2,0,0,198-COUNTBLANK(D2:D200),1)

enter image description here

現在,他們也會自動添加到您的數據驗證名單。 enter image description here

+0

偉大的解決方案。不知道數據驗證允許公式。 – ImaginaryHuman072889

+0

謝謝,現在,如果有可能將整個數組存儲在DataValidation列表中,請刪除幫助程序列...? –

+0

謝謝克雷西米爾。新的數組公式起作用,但使這本書非常慢。在新條目進入後重新計算,您可以在右下角看到計算百分比。 VBA選項是爲了快速創建一個唯一的數據驗證列表還是比這更復雜? –

0

@DasalKalubowila,這裏是@ KresimirL的答案,可能是你要找的修改。

首先,爲您的輸入數據創建一個定義的名稱。通過在功能區上轉到公式,然後單擊名稱管理器在Defined Names組下。

在我的例子中,我調用了輸入數據範圍InputData。所用式I是

=Sheet1!$A$2:INDEX(Sheet1!$A$2:$A$501,MATCH("Ω",Sheet1!$A$2:$A$501))

其中

  • Sheet1是工作表,其中輸入數據的生活,

  • $A$2是在輸入包含數據的第一單元的名稱範圍(我稱之爲主播),

  • $A$2:$A$501是您的數據所在的列的最大面積,可能會在未來生活,並且

  • "Ω"是歐米茄字母。您可以通過按住ALT 按下得到這個然後然後在10鍵數字鍵盤(也可以在字符映射應用程序在Windows中找到)。

該公式可根據存在多少條目有效地增加或縮小數據範圍。


接下來,您需要創建一個幫助列。我知道這不是我們想要的,但它將是唯一/更好的方式之一。我將我的作業放在與我的輸入數據相同的工作表上,但您不必這樣做。我在E2使用的公式是

=IFERROR(INDEX(InputData,MATCH(0,COUNTIF($E$1:$E1,InputData),0)),"")

您需要與按Ctrl ++輸入作爲它是一個數組公式犯此。然後將該公式向下拖到您的位置。你基本上想要減少許多行,你認爲你會有獨特的條目。


然後我需要創造一個更明確的名字,這就是即將在我數據驗證在接下來的步驟中使用。我將這個新定義的名稱叫做ValidationList(這需要將範圍限定在工作簿中)。我用ValidationList其計算公式爲

=Sheet1!$E$2:INDEX(Sheet1!$E$2:$E$501,COUNTIF(Sheet1!$E$2:$E$501,">*"))

查看筆記InputData上述理解這個公式更好。唯一的區別是,該公式使用COUNTIF而不是MATCH。這是因爲如果你的獨特的價值還沒有填滿整個範圍,你在Column E(上一步)中拖動你的公式,使用MATCH以同樣的方式之前最終會抓住一大堆我們不知道的空白想。 COUNTIF因此只計算那些包含大於「*」值的單元格,其中星號是任何字符的通配符(並且「」不包含字符,因此不包括那些項目)。


現在,創建自己的數據驗證,並設置它像這樣: data validation example

現在你應該離開這個: data validation before additional entry

而當你的信息添加到您的InputData區,您的範圍驗證列表應擴展爲包含最新的唯一身份證件,而這些唯一身份證件又將填充到您的數據驗證區域,lik e例如: data validation after additional entry

我發現這似乎並沒有減慢我的工作簿過於顯着,但我會有興趣聽到它如何在您的表現。

+0

totsiemae - 真正感謝您的幫助意願。最後,我選擇了輕VBA而不是較重的索引和匹配公式。用戶現在添加到表A並運行創建助手列的宏。數據驗證源現在是所述列或= INDIRECT(「Table5 [Description + Code]」) –