我想在vba中做一个函数,这里是我需要的伪代码和概念。如果有人能在这方面给予我帮助,你将因此得到适当的赞扬。
因此,我们有一个工作计划的电子表格,它在第一行的每一列中都有时间,如下所示
400 430 500 530 600等
它们对应于时间4:00a,4:30a等,在A栏中我们有员工的姓名,员工工作的每半个小时我们填上0.5,如果他们从45或15开始,我们用0.25填充。是否有办法在0.5开始和结束时对每个单元格进行函数测试,就像向右和向左的单元格中没有任何内容一样。
编辑:这是Sancho.s的一个示例案例
很抱歉,很难看出,右边的描述写着“这个人有一半,不应该被算作分裂的轮班”。U列中显示的移位情况如下:
发布于 2013-11-11 20:12:59
下面的公式(以及它们产生的结果)引用了这个图像。每个步骤(每个公式)所执行的操作可能是不言自明的。
Cell $V$4 : =MATCH(TRUE,INDEX(($B4:$T4<>0),0),0) -> 3
Cell $W$4 : =SUMPRODUCT(MAX(($B4:$T4<>"")*(COLUMN($B4:$T4))))-COLUMN($B4)+1 -> 17
Cell $X$4 : =OFFSET($B4,0,V4-1) -> 0.25
Cell $Y$4 : =OFFSET($B4,0,W4-1) -> 0.5
Cell $Z$4 : =OFFSET($B$3,0,V4-1) -> 5:00
Cell $AA$4 : =OFFSET($B$3,0,W4) -> 12:30
Cell $AB$4 : =IF(X4=0.5,TEXT(Z4,IF(MOD(V4,2)=1,"h","h:mm")),TEXT(Z4+TIME(0,15,0),"h:mm")) -> 5:15
Cell $AC$4 : =IF(Y4=0.5,TEXT(AA4,IF(MOD(W4,2)=0,"h","h:mm")),TEXT(AA4-TIME(0,15,0),"h:mm")) -> 12:30
Cell $AD$4 : =W4-V4+1-COUNT($B4:$T4) -> 0
Cell $AE$4 : =AD4>0 -> FALSE
Cell $AF$4 : =MATCH(TRUE,INDEX(ISBLANK(OFFSET($B4,0,V4-1):OFFSET($B4,0,W4-1)),0),0)+V4-2 -> #N/A
Cell $AG$4 : =AF4+AD4+1 -> #N/A
Cell $AH$4 : =OFFSET($B4,0,AF4-1) -> #N/A
Cell $AI$4 : =OFFSET($B4,0,AG4-1) -> #N/A
Cell $AJ$4 : =OFFSET($B$3,0,AF4) -> #N/A
Cell $AK$4 : =OFFSET($B$3,0,AG4-1) -> #N/A
Cell $AL$4 : =IF(AH4=0.5,TEXT(AJ4,IF(MOD(AF4,2)=0,"h","h:mm")),TEXT(AJ4-TIME(0,15,0),"h:mm")) -> #N/A
Cell $AM$4 : =IF(AI4=0.5,TEXT(AK4,IF(MOD(AG4,2)=1,"h","h:mm")),TEXT(AK4+TIME(0,15,0),"h:mm")) -> #N/A
Cell $AN$4 : =AB4&"-"&IF(AD4>1,AL4&"/"&AM4&"-","")&AC4 -> 5:15-12:30
他们可能会为你工作。
它们给出列的编号(减去1,以避免计算包含名称的列)数据开始/结束的位置。公式不检查具有数据的单元格的内容。
单元格B3 (作为第3行的示例)包含=TIME(INT(B1/100),INT(MOD(B1,100)),0)
,格式为自定义(与C3不同)。无论如何,第3行只用于公式中,并且可以隐藏。第1行只是为了更清楚地看到相对列号。
然后你会和最后一个公式连在一起。
对于添加a/p
,您只需要使用类似于IF(<time> < TIME(12,0,0), "a","p")
的内容(<time>
应该被包含您想要的-overall或拆分-的开始/结束时间的单元格的引用所取代)。然后,如上文所述进行级联。
您可以保留这里使用的所有单元格(更容易工作/调试),或者通过合并其他单元格来创建一个单一的公式。但是它会非常长(我甚至不确定它是否会超过Excel的某些限制)。我的建议是,如果可能的话,保留这些细胞。您可以隐藏它们,或者更好地将它们分组:选择列和数据-> (大纲)组。您将在顶部看到一个允许您折叠/展开组的框。
我想你有你需要的一切。
https://stackoverflow.com/questions/19868517
复制相似问题