• ベストアンサー

エクセルで最新の30個の合計を出したい

いつもお世話になっております。 例えばA列に下方向に数値データが入っている表があって日々データが追加されていくのですが、最新データ=一番下のデータから30個のデータの平均を表示させたいのですが。 A列のデータの数を数えてその行から上に30個さかのぼった行から一番下の行までを範囲指定すればよいと思うのですが具体的な式が分かりません。 出来れば関数での方法をお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • watabe007
  • ベストアンサー率62% (476/760)
回答No.6

>当方が先ず思いつくのは=IF(countA:A<30,・・・) 一行目から最終行まで空白が無いのであれば =COUNTA(A:A) で最終行が求められますね その場合は =SUM(OFFSET(INDIRECT("A"&COUNTA(A:A)),-29,,30,1)) ↑最終行から上に29行目を求め、その位置から30行分の演算をしましたが =SUM(OFFSET(INDIRECT("A"&COUNTA(A:A)),,,-30,1)) 最終行から-30行でも得られそうですね、 と、まぁ~ いろいろ試して下さい。

akira0723
質問者

お礼

今少し手が空いたので、実際の大きな表で試してみて、問題なく動く事確認できました。 横に引っ張れば各列のデータがコピーできるので非常に助かります。 INDRECTの使い方が分かりました。 交点のセルを求めるのに使ってはいるのですが、応用と他の関数との組み合わせが何故か(というか実力不足で)動かないのが現状です。 本件は以前より試行錯誤して、あきらめて(A1-A500)とかを指定して統計値を使用しているのですが、シート(品種)ごとにデータ数が大きく違うので比較するのに無理があると思いながら使っていました。 ご丁寧な回答ありがとうございました。

akira0723
質問者

補足

色々なご回答非常に参考になります。 一応すべてのご回答を試してみて、やはり最後の式が当方には一番わかりやすいのでこれを使うことにします。 うっかりしていましたが最初はデータ数が1個から始まり、シートによってはB列以降にもかなり横に大きな表もあり、各列の上部数行に平均、最大、最小、±3シグマ等々の統計値や説明行が入るので、ご回答の式では当方には扱いにくい。 そこで得意の(やはり)IFを使って =IF(COUNT(A:A)<30,SUM(A8:A37),SUM(OFFSET(INDIRECT("A"&COUNTA(A:A)+7),,,-30,1))) と不細工かもしれませんがこれでデータが30個以下でもデータにマイナスがあっても目的の統計値が得られるようです。 データのないセルは、入力漏れではないことの確認のために-を入れるルールになっていますので空白セルはありませんのでこれでいけると思うのですが。 今回のINDIRCTがよく分かりませんがOFFSETなのでCOUNTの後に上部の行数を入れてみたらうまくいきました。 今回も絶大なサポートのおかげで解決しました。 いつもこんな感じでお手数をおかけし申し訳ありません、大感謝!!

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (7)

  • msMike
  • ベストアンサー率20% (363/1772)
回答No.8

[No.7お礼]へのコメント、 》 B列・・にもデータがあり… それならそうと最初から言えばストトンと済んだものを! B列が使えないならC列で、 C、D、…、Y列も使えないならZ列で、 という次第です。 同式を入力したセル Z30 のフィルハンドルを「エイヤッ!」と… まだ目的とどう違いますか?

akira0723
質問者

お礼

ご回答の方法も使っているのですが今回は種子が違っていました。 質問の仕方が悪く申し訳ありませんでした。

akira0723
質問者

補足

質問に抜けあり申し訳ありませんでした。 例えばA列からR列まで日々下にデータが増えていくのですが、A100にデータを入れたら、A5に最大値や最小値や±3シグマが常に表示されていて、入力した値の統計的な位置が分かる表なので、これらの値がS列以降の場所に表示されても見えないので。 つまり、上から10行程度が枠固定になった表なので入力時に見えていることが必要なので、各列の上部に統計値が出ている必要があるのです。

全文を見る
すると、全ての回答が全文表示されます。
  • msMike
  • ベストアンサー率20% (363/1772)
回答No.7

式 =AVERAGE(OFFSET(A30,,,-30)) を入力したセル B30 のフィルハンドルを「エイヤッ!」とダブクリするってのは如何かと?

akira0723
質問者

お礼

ご回答ありがとうございます。 B列・・にもデータがあり少し目的と違っています。

全文を見る
すると、全ての回答が全文表示されます。
  • watabe007
  • ベストアンサー率62% (476/760)
回答No.5

最終行を求めるのにMATCH(,A:A,-1)を使いましたが マイナスの数値には対応しないですね なのでMATCH(MAX(A:A)+1,A:A,1)に変更してください。 =SUM(OFFSET(INDIRECT("A"&MATCH(,A:A,-1)),-29,,30,1))   ↓ =SUM(OFFSET(INDIRECT("A"&MATCH(MAX(A:A)+1,A:A,1)),-29,,30,1)) 最終行を求めるのに前回提示したようにいろいろな方法が有るので 試してみてください。

akira0723
質問者

補足

何度もご丁寧にありがとうございます。 ご回答色々試してみて、当方が一番分かりやすい式で、結果報告させていただきます。 当方が先ず思いつくのは=IF(countA:A<30,・・・)で行き詰ります。 ケース分けする場合必ず先頭にIF来るので複雑になってHELPです。

全文を見る
すると、全ての回答が全文表示されます。
  • ubku
  • ベストアンサー率37% (227/608)
回答No.4

泥臭いですが、 =AVERAGE(INDIRECT("A"&ROW(INDIRECT("A"&COUNTA(A:A)))-29&":"&"A"&ROW(INDIRECT("A"&COUNTA(A:A))))) これを好きなセルに入れてもおなじ結果が出ます。 どのやり方にも共通しますが、データ数が30個より少ないとエラーになります。 こちらはMATCH関数を使っていないので、データに0やマイナスの数値があってもちゃんと計算されるのが強みです。

akira0723
質問者

お礼

ありがとうございました。 おかげ様で何とか解決できました。

全文を見る
すると、全ての回答が全文表示されます。
  • watabe007
  • ベストアンサー率62% (476/760)
回答No.3

おまけ A列に文字が入力されている最終行  =MATCH("",A:A,-1)  =MATCH("*",A:A,-1) A列に数字が入力されている最終行  =MATCH(MAX(A:A)+1,A:A,1)  =MATCH(10^308,A:A,1)  =MATCH(,A:A,-1) A列に文字・数字が入力されている最終行  =MAX(MATCH(MAX(A:A)+1,A:A,1),MATCH("",A:A,-1))  =MAX(MATCH(,A:A,-1),MATCH("*",A:A,-1)) などが有ります。

akira0723
質問者

お礼

ご丁寧な回答に感謝。 最終行を求めるのが苦手ですので非常に参考になりました。 と言うか、この関数を使う時には必ず他の関数との組み合わせになるのでいつも四苦八苦の試行錯誤を繰り返しています。 最近は安易にここで聞いてしまって少し反省しながらも時間節約のため、ご容赦!! この回答はワードに張り付けて、「最終行の求め方」とファイル名にして他のテクニックと一緒に保存しておきます。

全文を見る
すると、全ての回答が全文表示されます。
  • watabe007
  • ベストアンサー率62% (476/760)
回答No.2

合計なら =SUM(OFFSET(INDIRECT("A"&MATCH(,A:A,-1)),-29,,30,1))

akira0723
質問者

お礼

ご回答ありがとうございます。 ここまで丁寧でなくてもさすがにOKですヨ。 実は合計のほかに、平均、偏差、最大値、最小値も同一の表で使用して統計的な管理に使っていますのでどれでも良かったのですが。

全文を見る
すると、全ての回答が全文表示されます。
  • watabe007
  • ベストアンサー率62% (476/760)
回答No.1

>一番下のデータから30個のデータの平均を表示させたいのですが。 表示させたいセルに =AVERAGE(OFFSET(INDIRECT("A"&MATCH(,A:A,-1)),-29,,30,1))

akira0723
質問者

お礼

いつもお世話になっております。 早々のご回答に感謝です。 質問に記載しようと思って忘れたのですが、後のご回答の通り最初はデータ1つから始まるので、指定データ数(30個)以下の場合もあることを記載するのを忘れました。 気付いた時には対応回答が出ていました。 2-3日手が無いので、結果は後日させていただきます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 常に最新10個の合計を表示したいのですが…

    A列に日付、B~P列に数値が入った表で 新しいデータをいちばん下に追加していっています 1行目に最新10回分の合計を表示したいのですが 関数を使って常に最新のデータ10個の合計を表示することは可能でしょうか? Q列以降に =INDEX(A:A,COUNTA(A:A))、=INDEX(A:A,COUNTA(A:A)-1)のようにして 10個抜き出してそれを合計してみようとしましたが循環参照になってしまって出来ませんでした・・ よろしくお願いします

  • エクセル SUMIFを使って下から合計する

    先ほど下記質問をして回答を得ましたが欲がでて追加で行いたい事が出てきましたがいっこうに進みません。 先ほどの質問 ほぼ毎日最終行の所にA列に日付 B/C/D/列に数値を加えているという作業を繰り返しています。従って下の方が最近入力した値になっている状態です。 私がしたいのはこの最近入力した(最終行)行から5行上までの各列の合計や平均値をそれぞれ1番上の方に自動で表示したいのですがいろいろと調べても分かりません。(行を追加するたび範囲を指定し直すというのがつらいです。) ・今回は皆さんの回答の中から=SUM(OFFSET(B2,COUNTA(B2:B65536)-5,0,5,1))とう式を使って下から5行上まで合計しました。 追加質問 F列の数値条件に合致したものだけを同様に下から5行上まで合計したいです。 SUMIFを使って見ましたが実力のなさからうまくいきません。 よろしくお願いします。

  • ExCEL2000合計

    A列になにかしらのデータ(ランダムです。ちなみに日付です) が何行がおきにならんでいます (何行おきかはランダムです) そのデータ(日付)ごとにC列に数値があります。 数値もランダムです。数値の個数もランダムです。 A列にデータの入っている行にだけその日付ごとの数値の合計値をだしたいのです。 関数とかつかってできますでしょうか?

  • エクセルで下の行から合計とかを求めたいです。

     ほぼ毎日最終行の所にA列に日付 B/C/D/列に数値を加えているという作業を繰り返しています。従って下の方が最近入力した値になっている状態です。 私がしたいのはこの最近入力した(最終行)行から5行上までの各列の合計や平均値をそれぞれ1番上の方に自動で表示したいのですがいろいろと調べても分かりません。(行を追加するたび範囲を指定し直すというのがつらいです。) このような事はエクセル2003で可能でしょうか?  調べた中では最終行を取得するとか最終行の値を表示するというのは見つけれたのですがここ何日も悩んで解決できません。  よろしくお願いします。

  • エクセルで指定範囲の平均値を求めたいのですが。

    エクセル2010で、列に入った数値(時系列データー)の1つ前から直近50個分のデーターの平均や標準偏差を出したいのですが。 データーが毎日増えるので入力された値を直近の50個分のデーターの統計値と比較したいのですが直近50個のデーター範囲を指定する方法を教えてください。 毎日列の一番のセルに数値が入力されていく表が有って、最後の数値を除く、直近50個のデーターの平均値と比較したいのですが。 最新(一番下)の数値が大きく外れた場合、その「外れ値」を含めて、単に入力範囲全部のデーターの統計値と比較するのは不都合が有る為です。

  • エクセルで条件に合わせて合計を出したい

    いつもお世話になります。 ある列の範囲(B1:B8)の合計を出したいのですが、 条件があり、うまくできません。 (ケース1)    A    B      1  りんご  10         2  なし   10      2  ぶどう  10 4  メロン  20 5  いちご  10 6 7 8 9  合計 0 (ケース2)   A    B   1 りんご  10       2  なし   10      2  ぶどう  10 4  メロン  20 5  いちご  10 6 7 8 9   合計   60 条件というのは、合計する範囲の中に空白(もしくは0)があったら合計しない(もしくは0とする)、 そうでなければ合計値を出す ということです。 上の表のケース1の場合はB3にデータがないので、合計しない、 ケース2は合計する、ということです。 ネックになっているのは上の表では5行目にデータがありますが、 場合によって6行目、7行目、8行目も計算範囲になり、 データがあったり、なかったりするのです。 関数の組み合わせでもマクロでも良いので知恵をお貸し下さい。 わかりにくいところは補足します。よろしくお願いします。

  • エクセルでHLOOKUP関数の選択範囲について

    エクセルでHLOOKUP関数を使って、検索したいのですが、 シートは、一覧表のシートと データが入っているA101、B203、C305、...シートは300シートくらいあります。 一覧表のシートには、下のような表になっていて、      A列  B列  C列  D列 ...          1003、1004、1005、1006、... 2行目 A101  3行目 B203 4行目 C305       .       .       . データのはいっているシート、A101は下の表になっています。      B列 C列 D列、・・・、Z列 2行目 1004、1005、1006、... 3行目 100、 200、 150、... 一覧表のB列の2行目には HLOOKUP(B2、シートA2のB2:Z3、2行目、FALSE) という感じで、シート名をセルA2のものを参照にして 探して表示させ、B列、C列、D列の2行目から下の行も 表示させたいのですが、うめくできませんでした。 INDIRECT関数を使ってみましたが、セル範囲が無効という エラーがでてしまいます。↓こんな感じで入力してみたのですが... SUMPRODUCT((INDIRECT($A2&"!$B$2:$Z$3"))=$B$1,(INDIRECT($A2&"!$B$2:$Z$3"))) 1つづつデータを見て手打ちはデータが多く、 どんどんデータが増えていくので できれば関数を使って表示させたいと思っています。 詳しい方いらっしゃいましたら、どうか教えてください よろしくお願いします。

  • エクセルで二つの条件での合計値

    こんにちわ。 関数でいろいろやってみているのですが、どうしてもうまくいきません。 シート1に一覧表があります。A列にコード番号(約500番)、B列に名前、C列に種類わけ(10種類・リストにしています)、D列に数字が入っています。これが約5000行あります。 これをシート2に、コード番号(A列)及び種類(C列)が一致するものの数字(D列)の合計を出した、自動更新される集計表を作りたいのです。 しかも、C列の種類わけしているものの中から、2つずつペアリングしての数字(D列)の合計を出したいのです。 ピボットテーブルやオートフィルターでひとつずつ出していってもいいのですが、次々と追加で行が増えていくので、その都度集計表を更新していくのもタイヘンだと思い、自動的に更新されるといいなと思っています。 説明不足なことがありましたら、返答します。 相当困っています。 どなたか助けてください。 よろしくお願いします。

  • エクセルの表の列の最下行から指定数のデータで

    データが縦方向に入っている表があります。 新しいデータは最下行に追加していきます。 それぞれの列の最下行から1つ上のセルから任意の数で平均や最大、最小値を求めたいのです。 (つまり統計値に最新値を含まない値で最新値を評価したい) 但し、下記の条件が付きます。 1.データは17行目から始まって、それより上の行は列によってデータ数が違っています。 2.出来ればデータ数が指定(例えば30個)に名足りない場合は最新値を含むデータにしたい。 最初はデータ数が少ないのでそれも含めて統計処理したい。 (この条件でハードルが上がるようなら無視でもOK) 3.データ列には空白セルや「ー」が入っている場合が混在しているので扱うのは数値のみ。 昔ここで教えてもらいながら、試行錯誤してかなり長い式を作って使っていたのですが、最新データを含むと非常にまずいケースがあることに気付き、色々試行しているうちに全く混乱してしまったのでHELPしました。

  • 項目別に合計数入力

    シート1の表-1にA~C列に文字とD,E列に数値が入力されておりシート2の表-2にA,B,C列の文字が同一行であれば1行とし違えば行を追加し同一行はD,E列の数値を加算していきたいのですがどなたかVBAコードか関数の解る方宜しくお願いします。

派遣の労働実態について
このQ&Aのポイント
  • 派遣経験ある方、このようなことは普通ですか?
  • 派遣労働の実態について調査しました。早上がりやシフトカットなど、派遣社員が直面する問題についてまとめました。
  • 派遣労働者は、待遇の面で不安を抱えることがあります。派遣の現場では早上がりやシフトカットの可能性があることが多いです。
回答を見る

専門家に質問してみよう