【问题标题】:Using spreadsheet to count consecutive cells使用电子表格计算连续单元格
【发布时间】:2015-12-14 22:25:37
【问题描述】:

所以我想使用谷歌电子表格来查找五个连续单元格的值连续多少次大于给定值,但一个单元格不能是两组连续单元格的一部分。例如,我想计算一个月内连续五天购买特定商品的次数,但如果连续购买 7 天,则仅计为 1,而如果是 5 的倍数,则将计为 5 的倍数五。 例如:如果单元格 1-5 的值大于给定值,它应该给我计数 1,但如果单元格 1-9 也大于给定值,那么它应该给我计数 1 但如果 1 -10 的值大于给定值,那么它应该给我一个计数 2。我希望这很清楚。

我想使用自定义函数在 Google Drive 中编写此代码,我尝试用 C 编写代码。

*

int x; //no. of rows
int y; //no. of columns
int arr[x][y]; //array to store numbers
int count[x];
int i,j,k; //for loops
for(i=0;i<x;i++)  //set count to 0 for all rows
    count[x]=0;
for(i=0;i<x;i++)
{
    for(j=0;j<y;j++)
    {
        for(k=1;k<=5, j<y;k++, j++)
        {
            if(!arr[i][j]>0)
            {
                break;
            }
            else if(k==5 && arr[i][j]!<1)
                {
                                  count[i]++;
                                     j--;
                                 }
        }
    }
}
//display the count array now to see result.

*

【问题讨论】:

  • C 用处不大。应用程序脚本是 javascript。

标签: multidimensional-array google-apps-script google-sheets user-defined-functions


【解决方案1】:

使用原生表格功能的另一种方式:

=ArrayFormula((ROWS(A:A)-LEN(REGEXREPLACE(CONCATENATE(LEFT(A:A&gt;=1)),"TTTTT","")))/5)

并使用自定义函数:

function countGroups(range, comparisonValue, groupSize) {
  var v = comparisonValue || 1; // default to comparing to 1 if not specified
  var n = groupSize || 5; // default to groups of 5 if not specified
  var count = 0, counter = 0;
  for (var i = 0, length = range.length; i < length; i++) {
    if (range[i][0] >= v) {
      counter++;
      if (counter == n) {
        counter = 0;
        count++;
      }
    }
    else
      counter = 0;
  }
  return count;
}

【讨论】:

    【解决方案2】:

    您无需编写代码即可做到这一点。这有点像电子表格的用途。

    您有一列,例如 A 列,其中包含值。

    在下一列中,如果第一列中的值 >= 您的预设值,则启动每行递增的计数器,否则重置计数器。公式类似于(对于单元格 B2)

    =IF(A2>=$E$1,B1+1,0)
    

    在下一列中,计算 5 的倍数。对于单元格 C2:

    =IF(MOD(B2,5)=0,C1+1,C1)
    

    将这些单元格复制到 A 列中列表的底部,最后一个值将是连续 5 次超过单元格 $e1 的值的计数。

    【讨论】:

    • 嘿,非常感谢您的回复,但我想了解的是,这是否可以在没有循环的情况下工作?我对编程很陌生,所以无法解决这个问题,请帮忙
    • 好吧,我的回答中没有循环,因为没有涉及宏代码。 :) 如果你真的必须编写代码来解决这个问题,那么我看不出你的代码中没有循环结构怎么办。
    猜你喜欢
    • 1970-01-01
    • 2017-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多