2016-10-11 3 views
0

私はコードを書いてあなたの助けが必要です。下に私のシートの例があります。
サブシステムからの合計の値を追加する必要があり、結果はメインブロックのサブタイルの隣のセルに入力する必要があります。しかしここにキャッチがあり、サブの数は必ずしも同じではありません。それはまた、細胞が可変であることを意味する。このメインの下には、彼のサブカテゴリと別のメインです。 サブシステムは別のコードで追加されます。この例では2つしかないが、実際には実際のシートは20に近いサブになる可能性がある。可変細胞の合計を作る

私はあなたに私が尋ねようとしていることを理解してくれることを願っています。 Grts

enter image description here

+0

なぜ数式を使用しないのですか? K2 = "= sum(" K4:K1000000 ")を実行する必要があります(ただし、1000の場合は1000000を使用する必要はありません)。 – Hrothgar

+0

値を加算するだけではできません合計は、メインのサブの合計でなければなりません(例メイン1合計=サブ1.1 +サブ1.2メイン2合計=サブ2.2 +サブ2.3 +サブ2.4など) – Steelbox

+0

ああ、メインの列に数字がないので、私はそこにいることに気付かなかった。 – Hrothgar

答えて

0

私はあなたの最初の主要なブロックは3行目にあると仮定しています。
=SUM(OFFSET($K4,0,0,MATCH("Main",$B4:$B1000,-1),1))

この式は、特定の範囲内のすべての値を合計します。 OFFSET関数は範囲を作成します。定義された参照セル(この場合はK4)から開始し、次に指定された行数を移動し、次に指定された数の列、つまり0行、0列を指定して範囲を作成し、指定された範囲高さは1列、幅は1列です。

MATCH機能から高さを取得します。この関数は、次の1,000行のどこにでも "Main"という語で始まる最初のセルを探します。ここの1,000は、多かれ少なかれ恣意的で、次の「メイン」ヘッダーが見つかると確信しています。

この式の欠点は、一致するものが見つからない場合です - 最後の "Main"ブロックで使用され、その下にMainヘッダーがない場合、エラーを返します。 IFERROR関数を追加して制御することができます:
=SUM(OFFSET($K4,0,0,IFERROR(MATCH("Main",$B$4:$B$1000,-1),50),1))、一致が見つからない場合は50セルの範囲とみなされます。

+0

それはすべきことに感謝する – Steelbox