【问题标题】:Is there a function to find number of transactions?是否有查找交易数量的功能?
【发布时间】:2021-12-20 23:57:10
【问题描述】:

我有 Google 表格,可以根据类别汇总我的支出。

例如“网上购物”-=100+52+35+841

我们可以同意这个公式中有 4 个术语。这表示我已经进行了 4 笔交易。

例2=18+45+124+1045-16

我退了 16 美元(也许我做了部分退货或得到了报酬) 这次是 5 个条款/交易。

使用 LEN + SUBSTITUTE 函数,Google 可以“计算”该单元格中的整数数量。

在前。 2 将返回 13. (1,8,4,5...)

我想计算夏季的每个学期。因此,ex 的回报是 5。 2 和 4 以 1 为例。

如果可能的话,应该可以用十进制表示来计算数字的数量。 IE。 =25,45+109,05-34,5 应该会产生 3 笔交易。

另外=12 应该会产生 1 笔交易。

【问题讨论】:

    标签: regex if-statement google-sheets counting symbolic-math


    【解决方案1】:

    尝试:

    =INDEX(IFERROR(1/(1/LEN(REGEXREPLACE(A1:A, "[0-9\.,=]", )))+1))
    


    更新 1:

    =IFERROR(1/(1/LEN(REGEXREPLACE(FORMULATEXT(A15), "["" a-z0-9\.,=]", )))+1)
    

    更新 2:

    =IF(A1="",,LEN(REGEXREPLACE(FORMULATEXT(A1), "["" 0-9\.,=]", ))+1)
    

    【讨论】:

    • 我认为您需要在末尾添加+1=ARRAYFORMULA(IF(A1:A="", "", INDEX(IFERROR(1/(1/LEN(REGEXREPLACE(A1:A, "[0-9\.,]", )))) + 1) )),然后用arrayformula 将其包装起来作为列。
    • @Ihopethisishelpfultoyou 确实。感谢
    • 如果单元格是“=25,45+109,05-34,5”而不仅仅是“25,45+109,05-34,5”怎么办?
    • @OskyEdzSnakehult 当然,答案已更新
    • @player0 您使用的是 Google 表格还是 MS excel?如果我执行“2+3+4”,则公式返回 3。但如果执行“=2+3+4”,我什么也得不到。单元格返回空白。
    【解决方案2】:

    如果唯一的交易是 +-,则只是这些符号的计数加一。

    假设您的原始字符串在 A2:A 中。将以下内容放在一个空的 B2:B 的 B2 中(或任何其他打开的列的第 2 行单元格中):

    =ArrayFormula(IF(A2:A="",,LEN(REGEXREPLACE(A2:A,"[^+-]",""))+1))

    这一公式将处理 A2:A 范围内的所有条目。

    如果您只想处理一个单元格而不是连续范围,则可以使用此公式,将 A2 替换为您的单个单元格引用:

    =LEN(REGEXREPLACE(A2,"[^+-]",""))+1

    这两个公式都只是使用 REGEX 替换每个字符 except +- 然后返回剩余字符串的 LENgth 加一。

    【讨论】:

    • 您的帖子将起始数据显示为包含等号的字符串(例如,“=100+52+35+841”)。即使在您上面的评论中,您也已将包括等号在内的所有内容都放在引号中(即“=25,45+109,05-34,5”)。如果您的实际数据与您在帖子和 cmets 中显示的数据不同,我们无法知道这一点。我也不明白你关于“分号而不是冒号”的评论,因为我的公式都没有使用冒号。在某些语言环境中,Google 表格使用分号代替 逗号;你是这个意思吗? (同样,我们不知道您的语言环境,所以我们自己写信。)
    • 我应该使用 =25,45+109,05-34,5... 抱歉语言环境的问题。
    • 听起来您想从实时公式中提取。只需将我的公式中的引用包装在 FORMULATEXT( ) 中(例如,对于 A1 中的值 ...=LEN(REGEXREPLACE(FORMULATEXT(A1),"[^+-]",""))+1)。但看起来你找到了一个无论如何都适合你的解决方案。
    【解决方案3】:

    我找到了一个基于@player0 答案、帮助和 cmets 的自定义解决方案!

    =IFERROR(1/(1/(1+LEN(REGEXREPLACE(FORMULATEXT(A1), "["" 0-9\.,=]", )))))
    

    需要1+LEN()(而不是1/(1/LEN())+1)来解决我只有一个值的问题。即 =25 返回 1 而不是什么都没有。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-24
      • 2014-08-05
      • 2020-06-09
      • 2019-07-05
      • 1970-01-01
      • 2014-08-16
      • 1970-01-01
      相关资源
      最近更新 更多