gpt4 book ai didi

regex - 计算基于2个条件或正则表达式的出现次数

转载 作者:行者123 更新时间:2023-12-04 06:04:07 25 4
gpt4 key购买 nike

我如何获得基于某个范围的出现次数

  • 正则表达式
  • 2+个条件;假设包含"is"和/或“否”的单元格

  • 我目前所拥有的:
    COUNTIF(B5:O5; "*yes*")

    我尝试使用 COUNTIF(B5:O5; {"*yes*", "*no*"})COUNTIF(B5:O5; "(*yes*)|(*no*)"),但是它们都不起作用。

    或者,如何使用正则表达式计算包含某些域名(yahoo.com,hotmail.com和gmail.com)的单元格?例如。:
    (\W|^)[\w.+\-]{0,25}@(yahoo|hotmail|gmail)\.com(\W|$)

    最佳答案

    解决您问题的最可行的方法(在Excel和Google Docs中进行了测试)是简单地添加几个countif公式的结果:

    =COUNTIF(B5:O5, "*yes*") + COUNTIF(B5:O5, "*no*")

    此表达式将对具有"is"或“否”的单元格总数进行计数。因为它将匹配两个表达式,所以它将对“yesno”或“noyes”的单元格进行重复计数。您可以尝试用
    =COUNTIF(B5:O5, "*yes*") + COUNTIF(B5:O5, "*no*") - COUNTIF(B5:O5, "*no*yes*") - COUNTIF(B5:O5, "*yes*no*")

    但这仍然会让您遇到诸如 noyesno这样的字符串的麻烦。

    但是,Google文档中有一个相当巧妙的技巧,可能只是您正在寻找的解决方案的提示:
    =COUNTA(QUERY(A1:A9, "select A where A matches '(.*yes.*)|(.*no.*)'"))
    QUERY函数就像一个小型数据库。在这种情况下,它将查看 A1:A9范围内的表,并仅选择A列中的元素,其中A列中的相应元素 matches(按单词的 preg regex的意思)表示其后的表达式-在这种情况下,“任何后跟 yes的内容跟着什么,或者跟着 no跟着什么”。在我制作的一个简单示例中,此代码仅计算一次 yesnoyes-使其完全符合您的要求(我认为...)

    现在,您的 B5:O5范围是几列宽,只有一行高;这使得很难使用 QUERY技巧。不太优雅的东西(但是不管范围的形状如何都可以)是这样的:
    =countif(arrayformula(isnumber(find("yes",A1:A9))+isnumber(find("no",A1:A9))),">0")
    isnumber函数的总和充当逐元素的 OR-不幸的是,常规 OR函数似乎不适用于数组的各个元素。和以前一样,此方法查找包含"is"或“否”的单元格,并计算其中包含这些字符串之一的单元格。

    关于regex - 计算基于2个条件或正则表达式的出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18343969/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com