Excel:识别2+;给定范围内行中值的单独实例

Excel:识别2+;给定范围内行中值的单独实例,excel,count,excel-formula,row,Excel,Count,Excel Formula,Row,上图是一个电子表格,左边是员工,顶部是一年中的几天。周末是蓝色的 对于给定日期范围内的每一行,我想要实现的是识别两个或多个单独的缺勤事件。一些代码符合缺勤条件,即IL-疾病、PR-个人原因,一些代码不符合缺勤条件,即去牙医、MW-助产士 最上面的一行是一个很好的例子,它有两个或多个单独的缺勤 一次缺勤不限于一天,因此,如果同时缺勤有点像MA示例,那么他们将被视为一次缺勤。虽然马不算生育 抱歉没有提供任何代码,因为我被困在哪里开始。即使是正确的提示也会有帮助。您的数据中是否需要周末 我有一个使用S

上图是一个电子表格,左边是员工,顶部是一年中的几天。周末是蓝色的

对于给定日期范围内的每一行,我想要实现的是识别两个或多个单独的缺勤事件。一些代码符合缺勤条件,即IL-疾病、PR-个人原因,一些代码不符合缺勤条件,即去牙医、MW-助产士

最上面的一行是一个很好的例子,它有两个或多个单独的缺勤

一次缺勤不限于一天,因此,如果同时缺勤有点像MA示例,那么他们将被视为一次缺勤。虽然马不算生育


抱歉没有提供任何代码,因为我被困在哪里开始。即使是正确的提示也会有帮助。

您的数据中是否需要周末

我有一个使用SUMPRODUCT的解决方案,但它不会将周末缺勤作为一个单独的区块(例如MA区块)来处理。

列AI中的公式基于AI3中的公式:

=SUMPRODUCT((B3:AG3<>"-")*(B3:AG3<>"")*(A3:AF3="-")*1)+SUMPRODUCT((B3:AG3<>"-")*(B3:AG3<>"")*(A3:AF3="")*1)
=SUMPRODUCT((B3:AG3“-”)*(B3:AG3“”)*(A3:AF3=“-”*1)+SUMPRODUCT((B3:AG3“-”)*(B3:AG3“”)*(A3:AF3=“”)*1)
first sumproduct公式中的第一项确定范围(B到AG)中的哪些列没有缺失(用破折号表示)

第二项确定哪些列是周末(空白)

第三项确定了前几列(半天)没有缺勤(破折号)-数据前必须有一个空白列(即本例中所示的a列-可以隐藏)

第二个sumproduct公式做同样的事情,但第三个术语处理前半天是周末的情况(空白)


正如您所看到的,这适用于除MA缺失的单个区块之外的所有区块。如果要删除周末列,则可以简化公式。

数据中是否需要周末

我有一个使用SUMPRODUCT的解决方案,但它不会将周末缺勤作为一个单独的区块(例如MA区块)来处理。

列AI中的公式基于AI3中的公式:

=SUMPRODUCT((B3:AG3<>"-")*(B3:AG3<>"")*(A3:AF3="-")*1)+SUMPRODUCT((B3:AG3<>"-")*(B3:AG3<>"")*(A3:AF3="")*1)
=SUMPRODUCT((B3:AG3“-”)*(B3:AG3“”)*(A3:AF3=“-”*1)+SUMPRODUCT((B3:AG3“-”)*(B3:AG3“”)*(A3:AF3=“”)*1)
first sumproduct公式中的第一项确定范围(B到AG)中的哪些列没有缺失(用破折号表示)

第二项确定哪些列是周末(空白)

第三项确定了前几列(半天)没有缺勤(破折号)-数据前必须有一个空白列(即本例中所示的a列-可以隐藏)

第二个sumproduct公式做同样的事情,但第三个术语处理前半天是周末的情况(空白)


正如您所看到的,这适用于除MA缺失的单个区块之外的所有区块。如果要删除周末列,公式可以简化。

我建议将其作为协议写出来,类似于“对于第一个列表中的每一个休假,有另一个休假,与之分开一天或多天,而不是周末”。可能有人可以提供公式解决方案,但IMO VBA会更容易。我建议将其作为协议写出来,比如“对于第一个列表中的每一个休假,有另一个休假,与之分开一天或多天,而不是周末”。也许有人可以提供一个公式解决方案,但IMO VBA会更容易。我认为这是值得投票的好的基本想法。我可以想象你如何使用networkdays()或在工作日测试日期来处理周末,但这会增加很多复杂性。我认为这是一个值得投票支持的好基本想法。我可以想象您如何使用networkdays()或工作日的测试日期来处理周末,但这会增加很多复杂性。