我有一个包含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之类的功能而无济于事。 非常感谢帮助/想法
答案 0 :(得分:6)
您可以考虑在Excel中使用高级过滤的许多选项:
选项1 - 高级过滤器
高级过滤器使您能够查询多个条件(这是您需要的)。您也可以根据需要使用每个过滤器生成最终数据集。以下是Microsoft Excel 2010, which is virtually identical here to 2007高级过滤器部分的链接。如果您想要使用基本公式,那么这将是一个很好的起点。
如果你沿着这条路走下去,请按照步骤的说明按照网站上的说明进行操作:
在电子表格的顶行中插入您选择的各种条件,并在列表范围中指定这些行
将条件范围设置为将所有数据保存在单个工作表上的位置
运行过滤器并查看结果数据。您可以轻松计算该简化数据集中的记录数。
选项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()
中包含公式的那部分似乎让你使用数组作为第一个参数。也许这里有人可以提供更好的解释。
无论如何,上面的公式确实可以解决问题。
最后,如果你只是检查一些动作,而不是像上面那样使用令人困惑的公式和命名范围,你可以为要检查的每个动作创建一个列,例如: "已经咆哮?"和#34;有解决?"。然后,您只需使用=COUNTIF(B2:E2, "Tackle")
和=COUNTIF(B2:E2, "Growl")
。然后,您可以创建另一列对这些列进行求和并过滤掉零值,以仅显示具有Tackle或Growl的Pokemon。
在研究如何实现这一目标时,我查看了这两页: