excel使用FILTER函数筛选出单列数据,但是把这个函数作为数据有效性的序列来源,提示源当前包含错误?

我用FILTER筛选了数据表里的一些数据,这个函数直接贴在单元格内可以输出详细列表,证明函数没有问题,这些个数据是单列的,那么单列的按理就是可以成为一个列表。我把这个函数原封不动的作为数据有效性里的序列的来源,就会提示源当前包含错误。打比方,A1是查找值,王某,B1是想要查找王某后对应下拉列表里王某成交过的客户名称,数据从A3开始。FILTER函数公式,FILTER(B3:B11,A3:A11=A1),公式结果能正常显示,情况如图。实际的表格是很多行,每行都有一个业务员名字,右边都有对应的客户下拉列表,需要向下复制的。如果是把FILTER的结果输出后再进行选择来源则不可行。哪位大神能解决,在不使用VBA的情况下解决。版本OFFICE EXCEL 2021

这个情况下可以使用TEXTJOIN函数来解决。

    在另一个单元格(比如C1)中使用下面的FORMULA:
    =TEXTJOIN(", ",TRUE,FILTER(B3:B11,A3:A11=A1))

    这会把FILTER函数的结果作为一个用逗号分隔的字符串输出到C1单元格。

    然后在需要下拉选项的单元格(B1)中,选择数据有效性 - 创建下拉列表。

    在下拉列表数据源里输入: =C$1

    点击OK。 这样B1单元格就会有一个动态下拉列表,随着A1的值改变而变化。

    另外,如果你的表格很大,建议把FORMULA部分写在一个单独的单元格里,然后数据有效性 - 下拉列表的数据源引用这个单元格,这样 Sheet 计算时会更高效。

    比如:
    D1 单元格写 =TEXTJOIN(", ",TRUE,FILTER(B3:B11,A3:A11=A1))
    然后B1下拉列表的数据源为 =$D$1

温馨提示:答案为网友推荐,仅供参考
第1个回答  2023-07-07

根据您的描述,您想要在不使用VBA的情况下解决一个问题。您已经使用了FILTER函数来筛选数据表中的一些数据,并将函数放在单元格内以输出详细列表。但是,当您将该函数原封不动地用作数据有效性中序列的来源时,会提示源当前包含错误。

根据您提供的示例,假设A1包含要查找的值("王某"),而B1希望显示与该值对应的下拉列表中已成交客户的名称。数据从A3开始。您使用的FILTER公式为FILTER(B3:B11,A3:A11=A1)。

实际表格中有很多行,并且每行都有一个业务员的名字,并且右边有相应的客户下拉列表,您希望向下复制这个功能。

如果我理解正确,您想要在一个单元格中动态显示特定业务员的成交客户名称,而不需要使用VBA代码。在这种情况下,我建议您尝试使用动态数组公式。以下是如何实现的步骤:

    选择B1单元格。

    在公式栏中输入以下公式:=FILTER(B3:B11,A3:A11=A1)

    按键盘上的Ctrl + Shift + Enter组合键,以将公式设置为动态数组公式。注意,您不需要手动输入大括号 {},而是在按下组合键时由Excel自动生成。

    这将根据A1单元格中指定的业务员名称动态筛选B3:B11范围内与该业务员相关联的客户名称。您可以在B1单元格中看到筛选结果。然后,您可以将B1单元格向下复制到其他单元格,以重复相同的筛选过程。

    希望这个解决方案能帮助到您!如果有任何进一步的问题,请随时提问。

本回答被提问者和网友采纳
相似回答