2017-10-13 52 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]”) –