0

次のようなスプレッドシートがあります。

   A         B               C
1  Section   Task            Dev Hours
2  4         PROJECT TOTAL   =c3+....
3  4.1       Public site     =c4+c5+...
4  4.1.1     User Accounts   2
5  4.1.2     Daily Deal      =sum(c6:c7)
6  4.1.2.1   Model           4
7  4.1.2.2   View            2

私が欲しいのは、リーフ以外の行の列Cの小計を計算するためのより良い方法です。= sumを使用すると、行を追加/削除するときにエラーが発生しやすくなります。また、すべての子供が葉である場合にのみ使用できます。そうしないと、物事が二重にカウントされます。加算を使用すると、エラーが発生しやすく、非常に煩わしくなります。{Excel、OpenOffice、LibreOffice、Google Documents}に、列Aのアウトライン番号に基づいて、後続のすべての子行の列Cの値をロールアップするように指示する方法はありますか?私はこのような関数が大好きです:

=sum_children(A2)

ここで、A2は、現在の行のアウトライン番号を持つセルです。

4

1 に答える 1

2

これを行うには、配列数式を使用できます。以下の式では、Section上記のように値が並べ替えられていると仮定しています。に、以下を貼り付け、 + + :C2を押して数式を入力します。CtrlShiftEnter

=SUM(IF(LEFT($A3:$A$7,LEN(A2))=A2,IF(ISERROR(FIND(".",$A3:$A$7,LEN(A2)+2)),$C3:$C$7,0),0))

これで、セルC2をコピーして、親セクションを表す以下のセルのいずれかに貼り付けることができるはずです。

基本的に、この式は、現在の行の下の列Aで、現在のセクションで始まる文字列をチェックし、現在のセクション+"。"の後に追加のピリオドがない文字列の開発時間を合計します。

テーブルにセクションを追加するときにこれらの数式を更新する必要がないように、配列のエンドポイント(A7およびC7数式の例)をテーブルの下部(A50およびなどC50)を超えた行にすることができます。これはパフォーマンスにわずかに影響を与える可能性がありますが、実際には、船外に出て50,000列のパッドを自分に与えた場合に限ります。

于 2012-04-30T18:30:49.563 に答える