Excel使用多个可接受的数据组合过滤多个列

时间:2014-04-11 04:48:48

标签: excel excel-2007

我有一个包含4列感兴趣的大型数据集,所有列都包含文本,即口袋妖怪移动。 “移动1”到“移动4”列各自包含不同的移动,并且每行在组合中不同。 例如。

"       A        |   B         |   C         |   D         |   E".
" 1    Pokemon   |   Move 1    |    Move 2   |   Move 3    |   Move 4".
" 2    Igglybuff |   Tackle    |   Tailwhip  |   Sing      |   Attract".
" 3    Wooper    |   Growl     |   Tackle    |   Rain Dance|   Dig".

~1000多

我的问题是: 我希望过滤包含列表中某些移动组合的行(口袋妖怪)的数据集。 例如。我想找到哪个口袋妖怪既有“咆哮”又有“傻瓜”。这些移动可以出现在Move 1到4的任何一个中(也就是移动的顺序并不重要) 我将如何过滤这样的结果。我有类似的情况,我想搜索3或4个动作的组合,其具体顺序并不重要,或者也搜索具有特定动作组合的特定宠物小精灵。

我试图使用诸如COUNTIF之类的功能而无济于事。 非常感谢帮助/想法

2 个答案:

答案 0 :(得分:6)

您可以考虑在Excel中使用高级过滤的许多选项:

选项1 - 高级过滤器

高级过滤器使您能够查询多个条件(这是您需要的)。您也可以根据需要使用每个过滤器生成最终数据集。以下是Microsoft Excel 2010, which is virtually identical here to 2007高级过滤器部分的链接。如果您想要使用基本公式,那么这将是一个很好的起点。

如果你沿着这条路走下去,请按照步骤的说明按照网站上的说明进行操作:

  • 在电子表格的顶行中插入您选择的各种条件,并在列表范围中指定这些行

    • 将条件范围设置为将所有数据保存在单个工作表上的位置

    • 运行过滤器并查看结果数据。您可以轻松计算该简化数据集中的记录数。

enter image description here

选项2 - 数据透视表

您可能会在这里看到的另一个选项是使用数据透视表。 Pivot tables and pivot charts只是我每天在工作场所使用的非凡工具,可以完全满足您的需求。

选项3 - 使用Visual Basic

作为第三种选择,您可以尝试使用可视化基本代码来编写解决方案。这将为您提供完美的控制,因为您可以精确指定每个条件的范围。不幸的是,您需要了解VB代码才能使用此解决方案。有一些优秀的在线资源可以帮助解决这个问题。

答案 1 :(得分:1)

=COUNT(INDEX(MATCH(B2:E2, MoveList, 0), 0)) > 0
如果B2:E2(移动1到4)范围内的任何值都在移动列表定义的范围内,

将返回TRUE。您希望使用命名范围,以便您可以轻松地将此公式复制到所有千行中。

如果删除检查COUNT()值是否大于零的最后一部分,则会得到:

=COUNT(INDEX(MATCH(B2:E2, MoveList, 0), 0))

将返回Pokemon与移动列表中的移动匹配的移动次数。

MATCH()有三个参数:查找值,查找范围和匹配类型。我不完全理解为什么,但在INDEX()中包含公式的那部分似乎让你使用数组作为第一个参数。也许这里有人可以提供更好的解释。

无论如何,上面的公式确实可以解决问题。

enter image description here

最后,如果你只是检查一些动作,而不是像上面那样使用令人困惑的公式和命名范围,你可以为要检查的每个动作创建一个列,例如: "已经咆哮?"和#34;有解决?"。然后,您只需使用=COUNTIF(B2:E2, "Tackle")=COUNTIF(B2:E2, "Growl")。然后,您可以创建另一列对这些列进行求和并过滤掉零值,以仅显示具有Tackle或Growl的Pokemon。

在研究如何实现这一目标时,我查看了这两页:

  1. https://www.excelforum.com/excel-general/786407-find-if-any-value-on-one-list-exists-on-another.html
  2. https://www.deskbright.com/excel/using-index-match/