我在一所学校工作,在每学期结束时,我们需要为每个班级的每个学生计算教学时间,然后得到全班的总数。我们每个学期都会把考勤记录在谷歌的单子上,这样我就可以用花哨的功能来完成这个任务了。这一职能在过去几年中发挥了良好的作用:
=数组式(sum(countifs(数据范围,{“,"T","*all *","*no *”}))
我在行的开头运行这个程序,它计算学生(或整个班级)将被计算为当前的所有实例,但不计算任何其他内容;就像我所需要的那样(如果单元格为空,则将学生视为存在)。我在每一行上运行这个函数(针对每个学生),然后在页的底部运行一个快速求和,这样就可以了。
好吧,这很管用,因为我们的课每天都是一小时。从这个学期开始,他们要么是1小时20分钟,要么是32分钟,取决于一周中的一天(每堂课有一次是一小时二十分钟,一次是每周三十二分钟)。所以上面的函数不再起作用了,因为它只是计算一个学生上了多少节课。我现在需要的东西,可以做到这一点,但也将每个单元格(1或0)的结果乘以1.33或.53取决于一周中的一天。这可以通过引用每一列的标题来完成,其中包含日期附加,并在IF参数中嵌套一个工作日参数(例如,使用一个在星期五具有较长实例的类):
(如果(工作日(1美元)=6,1.33,0.53))
我把它组合成一个能工作的函数:
=countifs(Z2,{"","T","*all *","*no“})(if(工作日(Z$1))=6,1.33,0.53)
..。但是,我必须在列旁边创建一个虚拟列,该列包含每个日期的出勤数据,将公式裁剪到它旁边的列,然后复制并粘贴整个列。我应该只需要每页修改一次公式,但是我仍然需要在每个日期旁边创建虚拟列,然后在每一列上手动运行这个公式。在这之后,我可以总结每一行。起作用了..。但我想要的是更少的时间和容易出错的东西。
我希望的是一个函数,它可以完成我现在拥有的功能(对于单个单元格),但是在将每个单独的单元格添加到行的开头后,在整个数据行上运行该函数的每个部分,然后最好是总结结束时的总时数(应该只需在函数的开头添加一个SUM参数?);所有这些都是一个单元格函数。我尝试过像以前一样使用数组(在上面的第一个公式中),但问题是(可能不止一个问题),我无法获得函数来引用每个单元格的头并运行IF函数,我只能让数组在函数的COUNTIF部分上工作。也许这整件事需要用剧本来代替?
我希望我所要求的是有意义的,下面是我正在使用的数据示例的链接:
https://docs.google.com/spreadsheets/d/12fTE_AMlKtlqc_KToYB5TkvpYwFzON9Q6vvRfnDlr0A/edit?usp=sharing
谢谢你的阅读,我希望我的要求有一个合理的解决方案!
发布于 2022-11-30 14:03:10
尝试:
=INDEX(BYROW(B2:N15, LAMBDA(x, SUM(
REGEXMATCH(x, "^$|no .+|all .+|T")*
IF(WEEKDAY(B1:N1)=6, 1.33, 0.53)))))
https://stackoverflow.com/questions/74634531
复制