Google表格中有条件多名员工的工作日累计计数

问题描述

伙计们,

我有以下问题:我有四个员工的时间表,我需要计算他们连续工作多少天。

文件位于Google表格中,如果有人要复制数据并尝试使用,请点击以下链接https://docs.google.com/spreadsheets/d/1TUJr9skcXQDtGEV36JVHMGgiLzPlCiEgaPqJ5ZazfFI/edit?usp=sharing

这是文档的片段:

Snipshot

在说明中,A,B和C列包含日期,人员名称及其时间表(不工作的日子为“关”)。这是原始数据。

如果该人不在办公室,则D转换为0,如果该人正在工作,则D转换为1。

Col E是我可以进行更改的列,可以使人们按计划离开班次,反之亦然。 (具有2个值的数据验证列)。

如果该人不在办公室,则F转换为0,如果该人在我更换后正在工作,则转换为1。

在GI列中,使用公式= IF(F2 = 0,0,SUMIFS(F $ 2:F,B $ 2:B,B2,A $ 2:A,“

我需要的是从零开始重新启动的数字(col H,我已手动填写)。

这是一个示例数据,其中有四名员工,但是我的原始数据有300多名。

我也不是很熟练使用脚本,所以我真的很想成为一个公式。

任何帮助将不胜感激!

P.S。如果有人可以建议更好地显示我的数据以及如何实现,我将不胜感激!

解决方法

这只是一个下拉公式:到目前为止,恐怕还没有自动展开公式:

=ArrayFormula(if(F2=0,countifs(F$2:F2,1,B$2:B2,B2)-
countifs(F$1:F1,B$1:B1,B2,row(A$1:A1),"<"&iferror(vlookup(row(B2),if((B$1:B1=B2)*(F$1:F1=0),row(B$1:B1)),1),0))))

在(例如)I2中。

enter image description here

编辑

这会更简单:

=ArrayFormula(if(F2=0,"<"&max(if((B$1:B1=B2)*(F$1:F1=0),row(B$1:B1))))))
,

带有struct foo { int a; const char *b; }; struct bar { int c; const char *d; }; static_assert( std::is_aliasable_to<foo,bar>::value,// <-- Is this possible? "foo must be structurally equivalent to bar" ); void public_api_function(foo &f) { private_third_party_function( reinterpret_cast<bar*>(&f) ); } 的另一个选项:

SUMPRODUCT

enter image description here