首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Excel高级筛选具有多个可接受数据组合的多列

Excel高级筛选具有多个可接受数据组合的多列
EN

Stack Overflow用户
提问于 2014-04-11 12:48:48
回答 2查看 78K关注 0票数 8

我有一个大型数据集,其中包含4列感兴趣的文本,即pokemon moves。从"move 1“到"Move 4”的每一列都包含不同的移动,并且每一行的组合都不同。例如:

代码语言:javascript
复制
"       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多个

我的问题是:我希望从列表中过滤包含特定移动组合的行(精灵宝可梦)的数据集。例如:我想找出哪一个精灵同时拥有“咆哮”和“阻截”。这些移动可以出现在移动1到4中的任何一个(也就是移动的顺序并不重要),我该如何过滤这样的结果。我也有类似的情况,我想搜索3个或4个移动的组合,其具体顺序并不重要,或者也搜索拥有特定移动组合的特定pokemon。

我尝试过使用COUNTIF这样的函数,但是没有用到。非常感谢您的帮助/想法

EN

回答 2

Stack Overflow用户

发布于 2014-04-11 15:11:24

您可以考虑在excel中使用多种高级筛选选项:

选项1-高级过滤器

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

如果你真的走了这条路,那就按照网站上的步骤来做:

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

中指定这些行

代码语言:javascript
复制
- Set the criteria range to the place holding all your data on a single worksheet
- Run the filter and look at the resulting data. You can easily do a count on the number of records in that reduced data set.

选项2-透视表

你可能会在这里看到的另一个选项是使用透视表。Pivot tables and pivot charts只是我每天在工作中使用的现象级的工具,完全可以完成你想要的东西。

选项3-使用Visual Basic

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

票数 6
EN

Stack Overflow用户

发布于 2018-05-25 01:45:06

代码语言:javascript
复制
=COUNT(INDEX(MATCH(B2:E2, MoveList, 0), 0)) > 0

如果范围B2:E2 (移动1到4)中的任何值在移动列表定义的范围内,将返回TRUE。您希望使用命名范围,以便可以轻松地将此公式复制到所有1000行中。

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

代码语言:javascript
复制
=COUNT(INDEX(MATCH(B2:E2, MoveList, 0), 0))

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

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

在任何情况下,上面的公式似乎确实解决了问题。

最后,如果您只检查几个移动,而不是像上面那样使用一个令人困惑的公式和命名范围,您可以只为您想要检查的每个移动创建一列,例如“有咆哮吗?”和“有没有抢断?”然后只需使用=COUNTIF(B2:E2, "Tackle")=COUNTIF(B2:E2, "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/
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23003716

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档