Excel 2007 - 如何计算列的计算与否

时间:2012-05-02 15:49:28

标签: excel excel-2007

我有以下情况:

我有一份工作表,其中包含估计工时的工作清单。 可以使用列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:与其父任务相比,每个子任务都有一个额外的缩进(使用indent按钮)。

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:包含未分配的每个任务的小时数

1 个答案:

答案 0 :(得分:2)

您可以确定哪些单元格具有如下公式:

Range formulaCells = range.SpecialCells(XlCellType.xlCellTypeFormulas);

[编辑VBA]

您可以从Excel VBA创建一个用户定义函数,例如Does Cell Have Formula处的用户定义函数,然后使用它:

  

= ISFORMULA(A1)