我有以下情况:
我有一份工作表,其中包含估计工时的工作清单。 可以使用列C将这些小时分配给用户(在列D和E中列出)。 现在我想在D E和F列中计算每个用户的指定小时数。
我可以使用以下函数填写未计算字段的值: 我已经使用了以下函数(删除了$符号以便于阅读,我使用记录3作为示例,因为它没有计算)
=IF(C3=D1;B3;0)
。因此,如果用户名等于指定用户的名称,则使用该值,否则为0. =SUM(D3:E3) - B3
。因此,如果列中不存在分配的用户,则不会分配小时数。
=IF(AND(C3<>D1; C3<>E1);B3;0)
这两个计算工作正常但当然不适用于计算字段。
我想要完成的事
现在我想填写问号的计算。如果您知道计算字段的放置位置,那么这很容易。所以我需要一个能完成以下任务的函数:
if: The value of columns B is calculated
then: calculate all values for the certain user until the next calculated row
else: use one of the two calculations I have already described
使用样本表要求的结果:
?1?
:SUM(D3;D6)
?2?
:SUM(E3;E6)
?3?
:SUM(F3;F6)
?4?
:SUM(D8;D9)
?5?
:SUM(E8;E9)
?6?
:SUM(F8;F9)
示例表
A B C D E F
1| Tasks | Hours |Assigned To| User1 | User2 |Not Assigned|
2|Main Task |=SUM(A3:A6)| | ?1? | ?2? | ?3? |
3| Sub Task | 10 | User1 | 10 | | |
4| Sub Task | 25 | User2 | | 25 | |
5| Sub Task | 14 | User2 | | 14 | |
6| Sub Task | 17 | User1 | 17 | | |
7|Main Task |=SUM(A8:A9)| | ?4? | ?5? | ?6? |
8| Sub Task | 22 | User2 | | 22 | |
9| Sub Task | 43 | | | | 43 |
说明:
列A
:与其父任务相比,每个子任务都有一个额外的缩进(使用按钮)。
列B
:如果项目包含子项
Task 1 Calculated because contains subtasks (Task 1.1 and Task 1.2)
Task 1.1 Calculated because contains subtasks (Task 1.1.1 and Task 1.1.2)
Task 1.1.1 Not calculated because no subtasks
Task 1.1.2 Not calculated because no subtasks
Task 1.2 Not calculated because no subtasks
Task 2 Not calculated because no subtasks
Task 3 Calculated because contains subtasks (Task 3.1)
Task 3.1 Not calculated because no subtasks
列C
:只能将未计算的列分配给用户
列D - E
:标题包含可以将任务分配给
列F
:包含未分配的每个任务的小时数
答案 0 :(得分:2)
您可以确定哪些单元格具有如下公式:
Range formulaCells = range.SpecialCells(XlCellType.xlCellTypeFormulas);
[编辑VBA]
您可以从Excel VBA创建一个用户定义函数,例如Does Cell Have Formula处的用户定义函数,然后使用它:
= ISFORMULA(A1)