我知道这里有很多类似的主题,问过类似的问题,但实际上找不到我想要的东西。
现在我有一个这样的数据数组;
A列和B列分别是公司的进入/退出时间,格式为“时间”。
C列也被格式化为“时间”并使用以下公式计算:
IF(B1>A1,B1-A1,IF(B1<A1,B1-A1,0))
计算一个人使用数组中的进入和退出小时工作的小时数。
D列的格式为“常规”,包括工作人员的公司名称,我只需要。
我尝试做的是这样的表格;
这里A列是人们每天工作的小时数,从每天5小时开始。
为了计算每天工作一定时间的人数,我必须选择工作时间范围,例如每天工作5小时,我说“工作时间为4:45至5:14的人。所以任何人在这几个小时之间应该计算,因为他们每天工作5小时。我在其他时间做了类似的方法。
现在我为列R4创建的公式是;
COUNTIFS('06.08.2017'!$C$1:$C$300,">="&TIME(4,45,0),'06.08.2017'!$C$1:$C$300,"<="&TIME(5,14,0),'06.08.2017'!$D$1:$D$300,"COMP1")
和T4;
COUNTIFS('06.08.2017'!$C$1:$C$300,">="&TIME(4,45,0),'06.08.2017'!$C$1:$C$300,"<="&TIME(5,14,0),'06.08.2017'!$D$1:$D$300,"COMP2")
我会在每个时间间隔重复一遍,然后得到一个结果。它非常相似。事实上,COMP2的总人数是正确的。但它们不适用于COMP1。
我检查了几乎所有的东西都浮现在我的脑海中,却找不到我弄错的地方。
更新:我试图抓住问题所在,并将其缩小到不计算的值。结果是;我找到了其中一个问题,但我无法找到第二个问题。
以下是新图片:
和
第一个问题是,行208.在行208中,时间是00:19并且使用上面在C列中提到的公式,结果类似于#####。所以我不得不手动添加日期01/01/1990以使公式给我结果。我得到的结果是你可以看到15:52:00,这是正确的。但是我在结果页面中使用的COUNTIFS
公式不计算这个,所以我必须手动编写这个日期以使其计数。因此我得到了一个失踪者。如果你可以帮我解决这个问题,而不是先改变添加01/01/1990然后再手动编写时间,我将不胜感激。
现在结果表中缺少另一个人。由于数据范围很小,我手动将每个时间范围用颜色分类,并将它们与结果表进行比较。
问题单元格是R10,这个数字应该是4.但它是3.所以我手动检查哪一个不是从数据表计算的,它来自行222.我的第一个想法是它是相关的随着时间的推移,所以我在相同的范围内尝试了不同的时间,但它没有改变。但是当我在D222中重写“COMP1”时,它起作用了。
但为什么呢?这是我的问题。我有很多这样的数据范围我需要处理,所以每次尝试捕获这样的问题对我来说太耗费时间,所以我需要找到根本原因。我使用宏来生成D列。公司中有两组人员名为“XYZ”,另一组名为“XYZ-B”,我想将它们转换为一个名为“COMP1”的公司。这是宏:
Sub ChangeCompanies()
'
' ChangeCompanies Macro
'
'
ActiveCell.Offset(0, 0).Columns("A:A").EntireColumn.Select
Selection.Replace what:="XYZ'", replacement:="COMP1", lookat:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=True, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace what:="XYZ-B", replacement:="COMP1", lookat:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=True, SearchFormat:=False, _
ReplaceFormat:=False
End Sub
为什么它适用于其他所有细胞但不适用于此细胞?
答案 0 :(得分:1)
<=
)。我建议将其改为严格的不平等。你可能看不到它,但你的时间可能会有几秒钟。在R5:
COUNTIFS('06.08.2017'!$C$1:$C$300,">"&TIME(5,14,0),'06.08.2017'!$C$1:$C$300,"<="&TIME(5,44,0),'06.08.2017'!$D$1:$D$300,"COMP1")
^ ^