1

私は次の状況にあります:

推定時間の作業リストを含むワークシートがあります。これらの時間は、列Cを使用してユーザー(列DおよびEにリストされている)に割り当てることができます。次に、列DEおよびFでユーザーごとに割り当てられた時間を計算します。

次の関数を使用して、計算されていないフィールドの値を入力できます。すでに次の関数を使用しています(読みやすさのために$記号を削除し、計算されていないため、例としてレコード3を使用しています)

  • 割り当てられた時間の計算:=IF(C3=D1;B3;0)。したがって、ユーザーの名前が割り当てられたユーザーの名前と等しい場合は値が使用され、それ以外の場合は0が使用されます。
  • 割り当てられていない時間の計算:=SUM(D3:E3) - B3。したがって、割り当てられたユーザーが列に存在しない場合、時間は割り当てられません。
    • 編集割り当てられていない時間の計算を編集しました。以前のバージョンは次のとおりです。=IF(AND(C3<>D1; C3<>E1);B3;0)

これらの2つの計算は正常に機能しますが、もちろん計算フィールドでは機能しません。

達成したいこと

次に、疑問符の計算を入力します。計算されたフィールドがどこに配置されているかを知っていれば、これは簡単ですが、どこにでも配置できます。したがって、次のことを行う関数が必要です。

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(ボタンを使用して)1つの余分なインデントがあります。インデント

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:タスクごとに割り当てられていない時間が含まれます

4

1 に答える 1

2

次のような数式を持つセルを判別できます。

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

[VBA用に編集]

ExcelVBAのDoesCellHave Formulaのようなユーザー定義関数を作成し、次のように使用できます。

= IsFormula(A1)

于 2012-05-09T15:23:20.230 に答える