Google表格包含一个语法为
的过滤器命令=filter(Range, criteria 1, ... criteria n)
它返回一个数组。
我怎样才能在Excel中执行此操作?
示例:我有2列宽的范围,第1列中的Genus和第2列中的完整植物学名称。此范围名为bot_name
在其他地方,我有一个带有“Abies”的细胞C1,这是冷杉的属名。
在Google电子表格中,我可以这样做:
=UNIQUE(FILTER(Bot_Name,REGEXMATCH(Bot_Name,C1)))
对于范围中的每一行,如果REGEXMATCH返回true,则FILTER包括它。
Filter和Unique是过滤函数。
记录过滤器:
https://support.google.com/docs/answer/3093197
从这里我应该得到以下列表:
Abies balsamea
Abies concolor
Abies lasiocarpa var bifolia
Abies veitch
答案 0 :(得分:0)
我建议您使用公式而不是Excel过滤器功能(这与您提到的FILTER
功能非常不同),因为我认为您需要在更改搜索表达式时更改过滤后的数据(例如冷杉)。
首先,您需要检查哪些值符合您的条件:
我建议您使用COUNTIF
函数 - 它允许您在搜索表达式中使用通配符 - 我在末尾添加*以查找以" Abies"开头的所有内容。
因此,辅助列中的公式如下所示:
=IF(COUNTIF(A2,$C$2 & "*")>0,A2,"")
您可以稍后隐藏辅助列。 然后你需要删除重复项 - 所以下一个最终公式将是一个非数组公式:
=INDEX($D$2:$D$15,MATCH(0,INDEX(COUNTIF($E$1:E1,$D$2:$D$15),0,0),0))
现在,您的工作表在单元格C2中的搜索表达式中显示如下:
也使用IFERROR去除有错误的单元格。您也可以使用命名范围而不是$D$2:$D$15
来简化第二个公式。
Download the sample Excel sheet here.
这比使用数组的FILTER函数更复杂,我真的很想念Excel中的这个功能。