Excel Sub / Function根据条件返回基于子列表中已完成项目的百分比

我试图创build一个子或function,将输出完成/不迟到的子任务的百分比。 此列表使用复制和粘贴添加项目,“类别”由用户input,“categorysub”使用= concatenate(类别+“sub”)。 顶部的date是= now()函数。 我添加了添加更多“潜艇”与macros的能力。 添加项目button只需复制并粘贴第二个项目的范围。

我想分/乐:

1)计算给定类别项目的总“子”数量(不是工作簿中的每个单个“问题”块,如红框所示)

2)计算给定类别项目/编号的完成“子”的数量(不超过与当前date对照的到期date)

3)输出完成/打开时间子数量在总子项目上

4)如果所有项目都是完整的输出“完成” 在这里输入图像说明

这是迄今为止的代码:

Public Function Complt(category As String) Dim loc As Range loc = Application.Caller Dim categoryCell As Range categoryCell = Cell(loc.row, "C") Dim categorySub As String categorySub = category + "sub" Dim subcat As Range subcat = Cell(categoryCell.row - 1, "C") Dim assignedDateCell As Range Dim complCount As Integer complCount = 0 Dim ActComplDate As Range Dim numberofsubs As Integer numberofsubs = 0 Do While subcat.Text = categorySub numberofsubs = numberofsubs + 1 assigendDateCell = Cell("G", subcat.row) ActComplDate = Cell("H", subcat.row) If assignedDateCell.Value <= Sheet2.Cells(1, "G") Or IsEmpty(ActComplDate) = False Then complCount = complCount + 1 subcat = Cell(categoryCell.row - 1, "C") Else complCount = complCount + 0 subcat = Cell(categoryCell.row - 1, "C") End If Loop Complt = complCount / numberofsubs End Function 

添加助手列时,可以使用工作表公式轻松完成此操作。

在帮助栏中检查完成date是否在到期日之前或之后:

=IF(H7<=G7,1,0)例如在K7中

然后把这个公式放在J6中,如果它们包含Yieldsub,并且它们按时交付,则检查以下十行。

=SumIf(R[1]K[-8]:R[10]K[-8],RK[-8]&"sub",R[1]K[1]:R[10]K[1])