Google表格:根据RANGE中的DATE使用ArrayFormula到COUNTIF

好,所以我有两个公式我想一起使用,一个我用来从前一天'SUM'项目总数:

=ArrayFormula(SUM(1*(INT(Archive!M3:M)=Today()-1))) 

这将统计前一天完成的所有项目。

现在我有几个不同types的项目,我使用下面的公式来分离项目types,并给出总计:

 =COUNTIF('V1 Archive'!D:D,"25A") 

我想要做的是能够从前一天“总结”一个特定项目的总数。

更多的细节:

数据是纯文本项目代码ex; 25A,25B,25C等。date格式化为; 6/3/2014 16:41:36

在我直接回答您的问题之前,应该注意的是,在新的Google Spreadsheets中可以使用COUNTIFS() ,而且这个公式更容易。

但是,您具体询问了如何使用ARRAYFORMULA()来执行此操作。

首先,我们分解一个ARRAYFORMULA()

我将在名为“ Archive的工作表上使用以下数据

在这里输入图像说明

假设我在Master表上执行以下操作: =Arrayformula(Int(Archive!B$1:B$10))

输出结果如下。 注意我没有拖下去。 Google电子表格会自动执行此操作,因为公式将返回整列而不是逐个单元格地执行

[插入数组公式输出]

现在你看到了arrayformula()概念,我们可以build立你的公式。

首先,根据你的标准你有:必须在昨天完成(标准1),它必须等于某个项目(标准2)。

使用它我们将组成一个公式,将发现这些交集。 逻辑思想是在if语句中使用“AND()”,但是这样做不起作用,因为它会试图find整个集合的逻辑交集(逻辑AND)。

所以我们将利用“任何数字0是0”的结果,并且使得我们想要的所有事情在一个arrayformula是1,而其他标准的所有东西都是1在一个单独的数组expression式中,如下所示:criteria 1: =arrayformula(if(int(Archive!B$1:B)=Today()-1,1,0)) criteria 2: =arrayformula(if(Archive!A$1:A=A2,1,0)) (注:在这个公式中,我在A列中查找了一个比较表,即“A2”)。

然后我们将使用sumproduct()来合并它们。
=sumproduct(arrayformula(if(int(Archive!B$1:B)=Today()-1,1,0)),arrayformula(if(Archive!A$1:A=A2,1,0)))

以下是主屏幕上的输出。

在这里输入图像说明