Excel 2007 – 如何确定一列是否被计算

我有以下情况:

我有一个工作表,其中包含一个工作列表,估计的时间。 这些小时数可以分配给使用C列的用户(在D栏和E栏中列出)。现在我要计算每个用户在DE和F栏中分配的小时数。

我能够使用下面的函数填写未计算字段的值:我已经使用以下函数(删除了$符号的可读性,我使用logging3作为示例,因为它不计算)

  • 计算分配时间: =IF(C3=D1;B3;0) 。 所以如果用户的名字等于分配的用户的名字,那么这个值将被使用,否则为0。
  • 计算未分配小时数: =SUM(D3:E3) - B3 。 因此,如果分配的用户不在列中,则不分配小时数。
    • 编辑我编辑了未分配小时的计算。 以前的版本是: =IF(AND(C3<>D1; C3<>E1);B3;0)

这两个计算工作正常,但当然不是计算字段。

我想要完成的

现在我想填写问号的计算。 如果您知道计算的字段放置在哪里但是可以随处可见,这很容易。 所以我需要有一个function,做以下事情:

 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)

示例工作表

  ABCDEF 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 :每个子任务有一个额外的缩进(使用 缩进 button)与其父任务相比较。

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

您可以确定哪些单元格具有这样的公式:

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

[编辑为VBA]

您可以创build一个用户定义的函数,如Excel VBA中的单元格有公式 ,然后使用它:

= ISFORMULA(A1)