如何使用 Excel 制作表格来显示根据位置和栖息地可能存在哪些植物种类?

如何使用 Excel 制作表格来显示根据位置和栖息地可能存在哪些植物种类?

我是一名植物学家,我正在尝试制作一个 Excel 表,以根据位置和基本栖息地筛选出一长串物种列表。

我为每个物种创建了一个包含 200 行的主表,列中首先是位置(例如,列 b 代表英格兰、列 b 代表苏格兰等等),然后是位置之后的列,即基本栖息地(例如,列 f 代表林地、列 g 代表草地、列 h 代表水生生物)。所有单元格都包含与每个物种相关的 YES 或 NO,以显示该物种的地理位置和栖息地。

我想制作一个表格,询问我我的站点在哪里以及它支持的栖息地,并利用这些信息缩小可能存在的物种范围。例如,如果我在伦敦有一个站点,它支持林地、草地和树篱,我可以使用过滤器将物种列表从 200 多种减少到少数几种!

关于如何制作这个的任何想法都很好。我附上了我当前工作表的图片。

在此处输入图片描述

答案1

非常坦率的

您已将信息排列在两个并排的表格中,表格的行对齐。表 1 是您的位置,表 2 是您的栖息地。基本上,您想要生成一个列表或行号,其中匹配位置列中为是,匹配栖息地列中为是。根据该行号列表,提取相应的物种。

为了做到这一点,让我们做一些假设:

  • 所有数据所在的工作表称为 SData
  • 数据从 A1:R200 开始布局
  • 第 1 行是标题行
  • C:I 列是位置列
  • J:R 列是栖息地位置
  • 您要找的位置是B1
  • 您正在寻找的栖息地是 D1
  • 您的列表将显示在 A2:B200 中

1)确定位置列

=INDEX(SData!C2:I200,0,MATCH($B$1,SData!$C$1:$I$1,0)

2)确定栖息地栏

=INDEX(SData!J2:R200,0,MATCH($D$1,SData!$J$1:$R$1,0)

3)确定哪些行包含“是”

Habitat 和 Location 都需要包含 yes 才能成为可接受的行。如果单元格 = yes 则为 True。在数学运算中,Excel 将 True 视为 1,将 False 视为 0。因此,如果一行中的两个单元格都是 yes,则结果为 1*1=1。如果两个单元格都是 FALSE,则结果为 0*0=0。如果一个单元格为 Yes,另一个为 No,则结果为 1*0=1。

因此,为了做到这一点,将使用聚合函数。它将对将要使用的某些函数(如 14 和 15)执行类似数组的操作。还可以指示聚合忽略错误。因此,我们将设置 AGGREGATE 以将行号除以条件检查为是。结果,您要么得到行号,要么得到除以 0 的错误,聚合将转而忽略这些结果。

=INDEX(SData!A:A,AGGREGATE(14,6,ROW(SData!$A$2:$A$200)/((INDEX(SData!$C$2:$I$200,0,MATCH($B$1,SData!$C$1:$I$1,0))="yes")*(INDEX(SData!$J$2:$R$200,0,MATCH($B$1,SData!$J$1:$R$1,0))="yes")),ROW(A1)))

将上述公式放在 A2 中,然后向下复制到 B200。到目前为止,我预见到的问题是当您用完与您的数据匹配的行时。在这种情况下,或者如果您没有任何结果,则会产生错误。为了避免单元格中出现错误结果,您可以将上面的整个公式包装在 IFERROR 公式中,以便在结果为错误时显示“”。

=IFERROR(INDEX(SData!A:A,AGGREGATE(14,6,ROW(SData!$A$2:$A$200)/((INDEX(SData!$C$2:$I$200,0,MATCH($B$1,SData!$C$1:$I$1,0))="yes")*(INDEX(SData!$J$2:$R$200,0,MATCH($D$1,SData!$J$1:$R$1,0))="yes")),ROW(A1))),"")

例子:

数据表:

在此处输入图片描述

结果表 1:

在此处输入图片描述

结果表 2:

在此处输入图片描述

相关内容