Excel 2003にデータベースのようなテーブルがあり、行6にオートフィルターを含む単一のヘッダー行と行7から行160までのデータがあります。行1〜5はシートのタイトル、列グループのタイトル、および指示です。取り除く。
また、数値列のこの領域にSUM(X6:X160)
とSUBTOTAL(109,X6:X160)
を表示します。複数のユーザーが頻繁にそのテーブルに行を追加し、定期的に数式を破棄したため、これをテーブルの下部に表示したくありません。
問題:ユーザーがテーブルの最後にデータを追加するたびに、SUM式とSUBTOTAL式を更新して範囲を拡大する必要がありますが、言うまでもなく、ほとんど忘れられています。
数式を拡張して、たとえば行500までのすべての行をカバーし、残りの行を非表示にすることもできます。そのため、ユーザーは、テーブルの表示されている端に達したときに行を「挿入」する必要があります。これにより、数式が更新されます。 、しかし私はこれを非常に安全な方法とは考えていません...私のユーザーを知っています。
質問: X6からSUMとSUBTOTALを作成する方法はありますか "列Xの終わりまで "?
[〜#〜]結論[〜#〜]
SUM(OFFSET(....))を使用して、ヘッダーの新しいフィールドから「height」パラメーターを取得しました。このフィールドには、「レコード数」が=COUNTA($A:$A)-1
(列見出しの場合は-1)で表示されます。ビジネスコンテキストから、有効なデータレコードの列Aにキー値が存在する必要があり、空白行は許可されないことが明らかであるため(少なくともユーザーをトレーニングできます)、さらにユーザーもカウントされます。 SUMだけでなく、ヘッダーのフリーズされたペインのレコード数も表示されるという利点があります。
Offset()とCount()を使用するのが最も人気があるようで、使用するのが最も効率的だと確信しています。 。
_=SUM(OFFSET($X$6,0,0,COUNT($X$6:$X$1000)))
_
個人的には、Indirect()をよく使う傾向があります。おそらく実行速度は遅くなりますが、機能します。作成されている範囲を確認するのに役立ちます。ただし、範囲の一部はテキストで保持されているため、数式を移動しても更新されないことに注意してください。それはあなたをつまずかせることができます。とにかくここにいます。
_=SUM(INDIRECT("$X$6:$X$" & COUNT($X$6:$X$1000)))
_
IDevlopが指摘するダイナミックレンジを使用するか、Offset()またはIndirect()をSum()私がやったように。
Indirect()とOffset()は 揮発性関数 であるため、どちらの方法でも注意が必要です。一般的には避けたいものです。
また、Index()とMatch()を使用している this guy も見つかりました。揮発性関数。
編集:
それについて考える(私はちょうど私のスプレッドシートでやったので)。
データに妥当な制限(たとえば1000)があることがわかっている場合は、=SUM($X$6:$X$1000)
を使用するだけで、小計メソッド1または101(平均)の場合でも空白をスキップできます。
= SUM(C:C)のようなものを使用して、列Cのすべてのセルを合計すると、テキストが自動的に除外されると思います。試してみましたが、機能しました。
承知しました !また、最初の行をフリーズして合計を表示したままにすることもできるため、合計を一番上に配置する方がはるかに優れていると思います。
Googleに「Excelダイナミックレンジ」を尋ねるだけです。ここにいくつかのリンクがあります:
http://www.ozgrid.com/Excel/DynamicRanges.htm
http://support.Microsoft.com/kb/830287
それはすべて、Offset()関数とCount()関数の組み合わせで行われます。
この式をあなたのデータの範囲(テーブル/リストであってはならない)の最後の行に入れてくださいこれはあなたの問題を解決するかもしれません
=SUM(INDIRECT(("x6:x"&ROW()-1)))
または、テーブル/リストがある場合は、この式を使用できます
=sum([table header name])
タイプの見出しの「金額」の列を合計したいように
=sum([Amount])
リスト/テーブルの最後の行