Excel 创建数据验证独特的动态下拉列表项目,无需新列

问题描述 投票:0回答:3

我的表随着数据刷新而增长的列表如下:

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

在另一张表中,我希望下拉列表上的数据验证仅显示:

Balham Halfords - P83690
Gloucester & Durham St - P83680

问题是,我不想在书中的任何地方创建一个与表 A 不同的列表,并且我希望数据验证列表能够智能地识别进入表 A 的新记录。

excel list validation dynamic unique
3个回答
2
投票

如果您想将辅助列方法与公式一起使用,请尝试此解决方案。

如果您的数据位于 A 列,请在单元格

=IFERROR(INDEX($A$2:$A$900, MATCH(0,COUNTIF($D$1:D1, $A$2:$A$900), 0)),"")
中输入此公式
D2
并将其向下拖动,只要您估计会有不同的值即可。由于它是数组公式,因此必须使用 CTRL+SHIFT+ENTER 输入。

然后使用数据验证,选择列表并在源下输入此公式

=OFFSET(D2,0,0,198-COUNTBLANK(D2:D200),1)

现在,每当将新值添加到表中时,它们也会自动添加到您的数据验证列表中。


0
投票

@DasalKalubowila,这是对 @KresimirL 答案的修改,可能就是您正在寻找的内容。

首先,为输入数据创建一个定义的名称。为此,请转至功能区上的公式,然后单击定义名称组下的名称管理器

在我的示例中,我将输入数据范围称为 InputData。我使用的公式是

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

哪里

  • Sheet1
    是输入数据所在工作表的名称,

  • $A$2
    是输入范围内包含数据的第一个单元格(我称之为锚点),

  • $A$2:$A$501
    是数据所在列的最大区域,并且将来可能存在,并且

  • "Ω"
    是欧米茄字母。您可以通过按住 ALT 并按 10 键数字键盘上的 2,然后按 3,然后按 4 来获取此信息(也可以在 Windows 中的字符映射表应用程序中找到)。

此公式根据存在的条目数量有效地扩大或缩小数据范围。


接下来,您需要创建一个辅助列。我知道这不是我们想要的,但这将是唯一/更好的方法之一。我将我的工作表与我的输入数据放在同一个工作表上,但您不必这样做。我在

E2
中使用的公式是

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

您需要使用 Ctrl+Shift+Enter 来提交,因为它是一个数组公式。然后将该公式尽可能向下拖动。您基本上会想要删除您认为拥有唯一条目的尽可能多的行。


然后,我需要创建一个更多定义的名称,这将在下一步的“数据验证”下使用。我将这个新定义的名称称为ValidationList(这需要限定在工作簿范围内)。我用于 ValidationList 的公式是

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


请参阅上面

InputData

的注释以更好地理解此公式。唯一的区别是,此公式使用 MATCH,而不是

COUNTIF
。这是因为,如果您的唯一值尚未填充整个范围,则您在
Column E
中向下拖动公式(在上一步中),以与之前相同的方式使用
MATCH
最终会抓取一大堆空白我们不想要。
COUNTIF
因此仅计算那些包含大于“*”值的单元格,星号是任何字符的通配符(“”不包含任何字符,因此排除了这些项目)。

现在,创建数据验证并进行设置,如下所示:


现在你应该剩下这个:

当您向

InputData

区域添加信息时,您的 ValidationList 范围应扩展为包含最新的唯一值,而最新的唯一值又将填充到您的 Data Validation 区域中,如下所示: 我发现这似乎并没有显着减慢我的工作簿速度,但我有兴趣听听它在你的工作簿中的表现。


0
投票
#

后缀将数据验证框中的公式简化为简单的单元格引用。

根据OP所说,数据位于Excel表格中

A

,这是一个好的开始(如果它不在表格中,则将其放入表格中!)。

如果表列为(例如)

Name

,则在单元格

F2
中创建辅助列公式为
=SORT(UNIQUE(A[Name]))

然后在单元格的数据验证中

D1

注意:

如果计算为 Automatic,则此设置效果最佳。

    

© www.soinside.com 2019 - 2024. All rights reserved.