Google sheets 谷歌电子表格重复功能第n次&;求和结果

Google sheets 谷歌电子表格重复功能第n次&;求和结果,google-sheets,Google Sheets,我有以下功能 =IF(RAND()<0.25,1,0) =IF(RAND()好的,所以我找到了一个非常复杂的答案。如果有人找到更好的答案,请告诉我 用户|'-'评论的第一件事是在单独的工作表上创建一个范围 因为我知道我不会一次查找超过200个值,所以我创建了这个公式的200长范围 =IF(RAND()<0.25,1,0) 这应该与您稍后试图总结的内容在同一列中 接下来,您需要创建一个动态字符串,稍后可以通过arrayFormula访问该字符串 ="Randomizer!B"&am

我有以下功能

=IF(RAND()<0.25,1,0)

=IF(RAND()好的,所以我找到了一个非常复杂的答案。如果有人找到更好的答案,请告诉我

用户|'-'评论的第一件事是在单独的工作表上创建一个范围

因为我知道我不会一次查找超过200个值,所以我创建了这个公式的200长范围

=IF(RAND()<0.25,1,0)
这应该与您稍后试图总结的内容在同一列中

接下来,您需要创建一个动态字符串,稍后可以通过arrayFormula访问该字符串

="Randomizer!B"&B12&":B"&B12+B3
在我的例子中,我在一张名为randomizer的工作表上有200个随机数。请注意,&,这是连接字符串的方式。在我的示例中,B12是对
=randbween(1200)的引用
,B3是我希望随机性出现的次数。它可以是任意值,只要它小于随机发生器种子的随机次数

最后使用,
=SUM(ARRAYFORMULA(间接(B13))
引用此字符串,间接允许您将字符串引用为单元格,这就是我创建动态范围以进行计算的方式

我要说的是,这种方法的优点是计算速度非常快,因为随机数是预先计算好的

其思想是,它将根据您创建的预计算随机数不断创建随机范围,然后对这些范围求和,基本上计算第n次随机数。


希望这对其他人有所帮助。

我不妨将此作为一个答案,因为它试图解决一个更广泛的问题,即是否可以将一个函数(比如)重复100次。答案是,如果该函数与数组公式兼容,则可以。Rand不能以这种方式使用,因为它不接受任何参数(由于某些原因,countifs等其他函数也不适用)。但您可以使用Randbetween并为其提供100个数组元素来绕过它。这些元素乘以零,因此实际上不会影响答案,但Google Sheets仍然会对函数进行100次计算:

ArrayFormula(sum(if(randbetween(0,A1:A100*0+99)<25,1,0)))
ArrayFormula(sum)(如果(randtween(0,A1:A100*0+99)(Tab)计算->每分钟重新计算)将在25分钟左右给出答案

为了使其更具弹性(允许A1:A100中的任何值,包括错误值),可以尝试

=ArrayFormula(sum(if(randbetween(0,iferror(A1:A100/0,0)+99)<25,1,0)))

=ArrayFormula(总和)(如果介于(0,iferror(A1:A100/0,0)+99之间)我会尝试一下,听起来比我想的要简单,希望会有用。我实际上刚刚发现,在A1:A100中加入一个非数字值会打破公式,因此会为我的答案添加一个替代选项。我刚刚尝试了你写的,简单的惊人答案:)。编辑更好。这肯定是正确的答案。比我做的要好得多。是的,很好的一点,你可以使用间接或可能的索引来设置变量范围。我只是认为它会像常规数组公式一样工作,并对范围中的每个元素重新求值,但在这种特殊情况下,你实际上想通过将数组中的值放入始终为零的表达式中来忽略这些值。公式不“知道”结果不依赖于A1:A100中的内容,所以还是继续进行。所以我这样做了,它似乎起作用,=ArrayFormula(sum(if(randbetween)(0,row(indirect(“A1:A”&100))*0+9999)
=Sumproduct(if(randbetween(0,A1:A100*0+99)<25,1,0))
=ArrayFormula(sum(if(randbetween(0,iferror(A1:A100/0,0)+99)<25,1,0)))
=Sumproduct(if(randbetween(0,iferror(A1:A100/0,0)+99)<25,1,0))
=ArrayFormula(sum(if(randbetween(0,row(A1:A100)*0+99)<25,1,0)))
=ArrayFormula(sum(if(randbetween(0,row(indirect("A1:A"&H1))*0+99)<25,1,0)))