【问题标题】:Count number of times specific text is in an array计算特定文本在数组中的次数
【发布时间】:2017-11-02 17:22:46
【问题描述】:

我有一个令人讨厌的非标准数据列表,即故障单的标题,我需要找到一种方法将其标准化为类别,然后计算属于其中一个类别的单元格的数量。我一直在尝试使用以下公式:

=SUMPRODUCT(--ISNUMBER(SEARCH(G:G,A2)))>0

其中 G 是我的类别列表,A2 是我的票名列表中的第一个单元格。问题是这个公式只返回 TRUE 或 FALSE,这对我来说没有帮助。有没有人有什么建议?这是我正在处理的数据示例:

web browser pointing to wrong web page
excel will not save
outlook popups on startup
logon issue
etc

如果公式不返回 TRUE,而是返回它找到的任何类别,即如果它在类别数组中找到浏览器,那么对于第一个示例,它将返回 browser,而不是 TRUE,这将很有用。

【问题讨论】:

  • 您要在示例数据中计算什么?您可以使用模糊计数,例如,要查找提到 save 的次数,您可以使用 =COUNTIF(G:G, "*save*") 或者如果您的搜索值在 A2 =COUNTIF(G:G, "*" & A2 & "*")
  • 您的公式返回True 的原因也是由于末尾的>0。删除它,它应该会给你计数
  • 你是要统计每个分类的单元格数,还是统计每张票的分类个数?
  • 我想统计每个类别的单元格数。因此,如果我的类别是outlook, browser, profile,我将为每个类别设置一个值,例如outlook 45 browser 90 profile 20
  • @Tom 这样给我一个 1 或一个 0,但没有告诉我该单元格属于哪个类别。

标签: excel search countif


【解决方案1】:

试试这个公式

=INDEX(G$2:G$100,MATCH(1,INDEX(ISNUMBER(SEARCH(G$2:G$100,A2))+0,0),0))&""

如果G2:G100 中的多个项目出现在 A2 中,那么这将只列出第一个(来自 G2:G100)

注意:如果您在列表中有“浏览”和“浏览器”,那么它会同时找到并返回列表中的第一个,因此您需要将它们列在最前面,理想情况下,或者更改为这个版本你只匹配整个单词

=INDEX(G$2:G$100,MATCH(1,INDEX(ISNUMBER(SEARCH(" "&G$2:G$100&" "," "&A2&" "))+0,0),0))

如果没有找到,第一个公式返回空白,第二个返回#N/A

Edit:

如果G2:G100 中的每个类别在相邻列H2:H100 中都有关联文本,那么您可以通过更改公式中的第一个范围来更改公式以返回列 H 值,例如

=INDEX(H$2:H$100,MATCH(1,INDEX(ISNUMBER(SEARCH(G$2:G$100,A2))+0,0),0))&""

【讨论】:

  • 哇,效果很好。是否也可以说它是否在类别中找到一个词来分配另一个值而不是复制同一类别?例如,如果标题包含单词 excel,我希望公式在类别列表中找到单词 excel,然后返回单词 application 而不是 excel。非常感谢您的帮助。
  • 您可以通过更改第一个范围来做到这一点 - 见上文 - 我进行了编辑
  • @barryhoudini 你太棒了,伙计。非常感谢。
【解决方案2】:

我认为在这种情况下你应该颠倒你的逻辑,并在每个类别(在 H:H 中)旁边放置一个公式,并带有 COUNTIF,所以在 H1 中:

=COUNTIF(A:A, "*"&G1&"*")

以此类推。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-01
    • 2015-06-09
    相关资源
    最近更新 更多