【发布时间】:2014-05-27 06:32:26
【问题描述】:
我正在使用 Excel 中的一些排班功能,其基础是我们需要为工作排班的人数有限,涵盖多个站点的轮班
在规划花名册时,我们使用一组简单的彩色单元格来填写人们在白班、夜班、未花名册、年假等的时间。鉴于我们计划有多个站点,我需要有一个快速公式可以检查该个人是否已被安排在多个站点同时轮班(显然不可能),因此我们可以在计划阶段轻松识别何时存在冲突。该公式需要返回 TRUE 或值(例如,count >1 表示该人有多个分配),以便我可以使用条件格式或 VBA 突出显示单元格/行并引起对冲突的注意
我尝试做的是对使用几种 VBA 方法着色的单元格进行求和/计数:
Function ISFILLED(MyCell As Range)
If MyCell.Interior.colorIndex > 0 Then
Result = True
Else
Result = False
End If
ISFILLED = Result
End Function
和/或:
Function ColorFunction(rColor As Range, rRange As Range, Optional SUM As Boolean)
Dim rCell As Range
Dim lCol As Long
Dim vResult
lCol = rColor.Interior.ColorIndex
If SUM = True Then
For Each rCell In rRange
If rCell.Interior.ColorIndex = lCol Then
vResult = WorksheetFunction.SUM(rCell, vResult)
End If
Next rCell
Else
For Each rCell In rRange
If rCell.Interior.ColorIndex = lCol Then
vResult = 1 + vResult
End If
Next rCell
End If
ColorFunction = vResult
End Function
这些都可以单独工作,但我无法将其与 SUMIFS/COUNTIFS 样式函数结合起来,仅计算当该人的姓名出现在该分配中时着色的单元格的数量。
如果您查看花名册中的示例图片,您会发现 Joe Bloggs 4 在 Site 1 和 都被分配了班次站点 2 于 2014 年 5 月 21 日。我所追求的本质上是计算行中彩色单元格的数量,如果符合条件的个人姓名与这些单元格相反。对于这个例子,如果是
=COUNTIFS(C8:AQ8, "Joe Bloggs 4", C12:AQ12, *Cell is Coloured*)
单元格的颜色无关紧要(因此第一个函数 ISFILLED 更好,因为我不需要参考单元格进行填充),因为它只是一个意义检查。
感谢任何帮助/指针,事实上,我被卡住了!
【问题讨论】:
-
你应该学会正确缩进你的代码;这使其他人(和您自己)更容易阅读。这次为你做了。
-
谢谢-草率的复制/粘贴,将零碎的碎片拼凑在一起,试图获得不同的结果,对不起。我会记住的
-
我建议在这些单元格中使用有价值的东西,让您的生活更轻松(如果可能的话)。即使是与背景颜色相同的空格或 1 也不会显示,您使用 Excel 函数就足够了
-
@xificurC 如果我不能让它通过颜色工作,那将是解决方案 - 谢谢。在实践中,名单在计划期间被砍掉/改变了很多,我试图保持简单,以便航班/住宿。人们可以继续使用他们习惯的日程安排颜色