2014-06-18 68 views
2

我想從列的非空值創建列表。Excel列表從列的非空值

因此,我想將此列表用作其他工作表中的下拉列表。

該列表中的值是動態的,所以我不能在其他地方複製這些值。

當我從列中選擇所有值,然後從中創建列表時,當我將它用作下拉列表時,我也在列表中有空值。

有沒有一種方法,不使用宏,自動刪除列表中的空條目?

我不想從列中刪除空單元格,因爲它是另一個表的一部分。

謝謝。

回答

1

最簡單的方法是在下拉列表中使用另一個(隱藏)列的值。如果定義(動態)命名的源數據要作爲List範圍,那麼下面的公式應該在細胞B2進入並複製下來,需要:

=INDEX(List, MATCH(0, IF(MAX((COUNTIF($B$1:B1, List)=0)*((List<>"")*(COUNTIF(List, ">"&List)+1)))=(IF((List<>""), COUNTIF(List, ">"&List)+1, "")), 0, ""), 0))

它甚至會排序列表。

此信息取自以下網站,該網站上有分步說明。

http://www.get-digital-help.com/2009/05/25/create-a-drop-down-list-containing-only-unique-distinct-alphabetically-sorted-text-values-using-excel-array-formula/

+0

好了一些小的修改後,我設法讓它工作,謝謝。 – Pipala

+0

如果你想要未排序,那就更簡單了= = INDEX($ A $ 2:$ A $ 11,MATCH(0,IF(ISBLANK($ A $ 2:$ A $ 11),1,COUNTIF(B1:$ B $ 1,$ A $ 2:$ A $ 11)),0))'[link](http://www.get-digital-help.com/2009/03/10/how-to-automatically-create-a-unique-list -and-刪除毛坯/) – Profex

0

假設您的值在A:A列中。請用數字1, 2, 3, 4...B:B然後在細胞C1寫公式和拖下來:

=IFERROR(SMALL($A:$A,$B1),"") 

注:這僅適用於數值。

+0

我想你不明白我的要求。我想從一列中的值列表創建一個下拉列表。但我不想將空值存入我的下拉列表中。 – Pipala

+0

在這種情況下,您將需要VBA,因爲下拉列表中的值不能是動態的。或者您可以指定較大的下拉菜單來源,但底部會顯示空白值。 – Taosique

+1

@Taosique您可以在不使用VBA的情況下擁有動態列表。所有你需要做的就是使用'OFFSET()'函數。如果數據在列A中,它就像'= OFFSET(A1,0,0,COUNTA(A:A),1)' – Profex