所以我想使用谷歌电子表格找到多少次五个连续单元格的值大于一行中的给定值,但一个单元格不能成为两组连续单元格的一部分。例如,我想计算在一个月内连续5天购买特定物品的次数,但如果它连续7天购买,它将只算作一次,而如果它是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.
* 您不需要编写代码就可以做到这一点。这就是电子表格的作用。
你有一列,假设列A,有值。
在下一列中,启动一个计数器,如果第一列中的值>=您的预设值,则每行递增,如果不是,则重置计数器。公式类似于(对于单元格B2)
=IF(A2>=$E$1,B1+1,0)
在下一列,计算5的倍数。对于单元格C2:
=IF(MOD(B2,5)=0,C1+1,C1)
将这些单元格复制到列表A列的底部,最后一个值将是连续5次超过单元格$e1的值的计数
使用本地Sheets函数的另一种方法:
=ArrayFormula((ROWS(A:A)-LEN(REGEXREPLACE(CONCATENATE(LEFT(A:A>=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;
}