COUNTIF其中标准是特定的细胞序列

时间:2015-10-11 22:31:26

标签: count conditional formula spreadsheet libreoffice-calc

我正在使用模P的算术序列做一些工作,其中序列在模数下变为周期性的。我的工作表生成一个序列mod P,第一个术语为0,第二个术语是数字K(引用另一个单元格),以及跟随递归关系的下列术语。序列的周期(其重复之前的值的数量)与比率P / K,s相关,例如,如果P = 2且K = 1,则得到序列{0,1,1,0, 1,1,0,1,1,...},周期为3,所以当P / K = 2时,周期为3。

我目前有一个公式,它使用COUNTIF函数计算范围内的零个数,然后将其除以总范围,当前任意大小为120,这为我提供了许多比率的正确周期P / K.然而,大多数情况下,所产生的序列表现出半周期性,有时甚至是准周期性,例如在K = 1和模9的情况下:{0,1,1,2,3,5,8,4 ,3,7,1,8,0,8,8,7,6,4,1,5,6,2,8,1,...},其中P / K = 9,期间为24,并且半周期是12(因为0,8,8,......序列的一部分)。在这种情况下,我当前的COUNTIF公式认为整个周期是12,即使它应该是24,因为它计算定义半周期的零。

我想做的是调整公式,使得计数为0,K,K的计数的三元组序列不是计数为0的标准。

我目前的公式:= QUOTIENT(120,(COUNTIF(B2:DQ2,0)))

所以如果我有= QUOTIENT(120,(COUNTIF(B2:DQ2, X ))),我想要" X " ,当前为0,引用特定的单元格序列,即整个系列的前三个,所以类似于:= QUOTIENT(120,(COUNTIF(B2:DQ2,(0,C2) ,D2)))),虽然显然该标准不是远程正确的语法。

我并不精通编写宏,所以这可能是不可能的,但任何帮助都会受到赞赏!!!

编辑:我个人使用LibreOffice,我只是认为我标记了所有三个主要电子表格,因为它们相似。

1 个答案:

答案 0 :(得分:0)

我会用四个辅助行加上最终公式来做到这一点。比我更聪明的人可能能够在一个带有数组公式的单元格中做到这一点;但是与数组公式相比,我认为辅助行更容易理解,如果需要,也可以调整。

设置完成后,如果您总是使用三个作为标准,则可以隐藏辅助行(隐藏行,右键单击电子表格左侧的灰色数字标签,并选择“隐藏”)。

所以你的序列在第2行,从B列开始。我们将在第3行中设置第一个辅助行,从C列开始。在单元格C3中输入公式=C2=$B$2。这将评估为FALSE,相当于0.将该公式一直复制并粘贴到单元格DQ3(或者要运行它的列数很多)。低于序列号等于序列中第一个数字的单元格将计算为TRUE,相当于1。

接下来的两个辅助行非常相似。在单元格D4中放置公式=D2=$C$2并复制并粘贴到单元格DQ4。此行测试哪个单元格等于序列中的第二个数字。

在单元格E5中放入公式=E2=$D$2并复制并粘贴到单元格DQ5,显示哪些单元格等于序列中的第三个数字。

最后一个辅助行有点不同,所以我在前三个助手之后留下了一个空行。在单元格E7中,我放了公式=SUM(C3,D4,E5);将其复制并粘贴到列DQ。这会计算在前三个辅助行中找到的匹配项数。如果所有三个匹配,则此公式的结果将为3,并且您已确定了确定期间的标准。

现在显示句点:在您希望拥有此数字的单元格中,输入公式=MATCH(3,E7:DQ7,0)。这将搜索最后一个(第四个)辅助行,查找等于3的单元格。(显然,您可以修改此方法以仅匹配前两个序列号,或匹配超过3个,然后您将调整第一个MATCH公式中的参数。)此MATCH公式中的最后一个参数是0,因为辅助行未排序。返回值是第一个匹配的索引:E7中的匹配将是索引1,E8中的匹配将是索引2,等等。

我在LibreOffice 4.4.4.3中对此进行了测试。