Excel数据验证列表使用公式和筛选

15

我有以下工作簿:

工作表账户

Accounts worksheet

工作表帖子

Posts worksheet

我想知道是否可以使用公式为 帖子 工作表中的整个列 B 定义类型为列表的数据验证,以便数据验证弹出窗口仅显示来自 账户 工作表的账户 ID,这些账户在 网站 列中与所选行的 帖子 工作表中的 网站 列相匹配,并且在 状态 列中具有值为Active

用类似 SQL 或 LINQ 的语言描述:

SELECT Id FROM Accounts WHERE Website = @SelectedPostRow.Website AND Status = Active

第二张图片上的标记显示了应在下拉列表中显示哪些值。

2个回答

3

是的,您可以这样做,但需要进行一些支持性设置。

首先,对于您的每个网站选项,您需要为将在您要创建的下拉列表中的选项创建一个命名范围。

要执行此操作,只需突出显示单元格列表,右键单击,然后选择“命名范围”

然后,您需要为您的网站名称创建一个查找列表,以便与命名范围可能性匹配

然后,在您的数据验证源中使用类似以下的公式:

=indirect(vlookup(a1,$i$8:$j$13,2,false))

然后,下拉列表会根据网站的值进行更改。现在,如果您还需要自动化命名范围部分,可以将它们更改为包括整个列,然后使用数据透视表提取数据。每个网站选项都需要一个独立的透视表。每次导入新数据时,您需要刷新透视表,但它会正常运行。

如果我理解正确的话,我必须为每个网站值创建一个帐户ID的命名范围。这对我来说行不通,因为Accounts表格可能会增加新的帐户,我不想每次发生这种情况时都增加命名范围。透视表也不起作用,因为它需要刷新。我希望这完全自动化,没有额外的簿记任务涉及。那么“状态=活动”部分呢? - Stipo
透视表是您需要执行“状态=活动”部分的工具。此外,可以通过VBA刷新数据透视表,从而实现自动化。 - Alan Waage

3
这个问题需要一些准备工作。在同一个工作表中或另一个工作表中,复制您的数据(或添加相关单元格)。
在A列中,您有一个可以排名的数字。我用以下公式得到它(单元格A2):
=IF(C2=$J$2,1,0)*IF(E2="Active",1,0)*ROW()
在B列中排名该数字并排除不需要的行(B2):
=IF(A2=0,0,RANK(A2,A:A))
然后可以在H列使用G列中输入的枚举值进行VLOOKUP。H1的公式如下:
=IFERROR(VLOOKUP(G2,$B$2:$D$9,3,FALSE),"")
现在,您可以基于列H设置验证。
PS:由于我已将它们从意大利语翻译成英语并且无法进行测试,所以这些公式可能存在小错误。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接