添加或VBA脚本添加filter命令为Excel

Google工作表具有语法的filter命令

=filter(Range, criteria 1, ... criteria n) 

它返回一个数组。

我怎样才能在Excel中做到这一点?

例如:我有2列的范围,列1中有属性,列2中有完整的植物学名称。这个范围被命名为bot_name

在其他地方,我有一个细胞C1与“冷杉”,冷杉的属名。

在Google电子表格中,我可以这样做:

 =UNIQUE(FILTER(Bot_Name,REGEXMATCH(Bot_Name,C1))) 

对于范围中的每一行,如果REGEXMATCH返回true,则FILTER包含它。

filter和唯一是过滤function。

filterlogging:
https://support.google.com/docs/answer/3093197

从这我应该得到以下列表:

  Abies balsamea Abies concolor Abies lasiocarpa var bifolia Abies veitch 

我build议你使用公式,而不是Excelfilterfunction(这与你提到的FILTER函数非常不同),因为我想你需要改变searchexpression式(例如Abies)的时候你的过滤数据就会改变。

首先,您需要检查哪些值符合您的标准:

我build议您使用COUNTIF函数 – 它使您能够在searchexpression式中使用通配符 – 在末尾添加*以查找以“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)) 

您的工作performance在看起来像这样在单元格C2中使用searchexpression式:

在这里输入图像说明

也使用IFERROR来删除有错误的单元格。 您也可以使用命名范围而不是$D$2:$D$15来简化第二个公式。

在这里下载示例Excel表格。

这比使用数组的FILTER函数更复杂,我真的错过了Excel中的这个function。