• ベストアンサー

Excel 複数シートの平均値

競合店の統計表を作成しています。 一つのシートには、競合店の『販売コーナーごとの来客数』が数時間おきにとられたデータが入っている表が6店舗分。 このシートが1日1シートで月単位で1ブックとしています。 店休日があった場合、その日のその店の来客数の部分が現在は0表示になっています。 1日から例えば5日までの店舗ごとの来店客の平均値を求めたいのですが、 店休日を除いた平均値を求めるにはどのような数式で求めることができるでしょうか。 どなたかお教え下さい。

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

  • ベストアンサー
  • tascany
  • ベストアンサー率48% (15/31)
回答No.6

#3です。たいへん失礼いたしました。 で、ゼロを除外して平均を出すユーザー定義関数をいちおうつくってみました。こんなんでもお役に立ちそうなら、おためしください。 下記のコードをVBエディタの標準モジュールに貼り付けたらすぐ使えます。 使い方は、たとえば「=平均(2,5,A1)」と記述した場合、左から二番目~五番目のシートの、A1の値の平均を求めます。で、値が0または空の場合は集計しません。 ※注意点・・・(1)集計範囲に含まれるセルの値がかわっても、自動で再計算してくれません。Ctrl+Alt+F9で再計算できますが、それが面倒ならあらかじめ「=平均(2,5,A1)+Now()*0」としておいてください。NOWがあるとすぐ計算してくれるようになりますし、「*0」してるので値に影響はありません。(2)たとえばA1:A3というように各シートで複数のセルにまたがる範囲を指定しても、A1の平均しか求めてくれません。ですので、複数シートにまたがる一個の座標の集計専用です。 Function 平均(x, y As Integer, a As Range) Dim i, j, s, c i = a.Row j = a.Column 'セル情報。 s = 0 '合計 c = 0 '0より大きいデータの個数 For counter = x To y '0より大きなデータだけ集計していく。  If Sheets(counter).Cells(i, j).Value > 0 Then    c = c + 1    s = s + Sheets(counter).Cells(i, j).Value  End If Next 平均 = s / c End Function

kanade11
質問者

お礼

ご丁寧にありがとうございます。 まだ実際に動かしてはいませんが(外なので)、 拝見したところ、有効に利用できそうです。 頑張ってみます。

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

その他の回答 (5)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.5

質問のシート内容の質問 (1)シートの様子 (1シート=1日分)-1月分=1ブック 12月1日のシート コーナー 来店客数(10時)来店客数(12時)来店客数(15時)・・・ A店   23        30     42 B店   ・ C店   ・ D店   ・ E店   ・ F店   ・ のような表ですか? (2)「数時間おき」の回数は、毎日同じ回数ですか 日によってバラバラですか?

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

店休日が0でなく空白だったら 単純にAVERAGE(1日:5日!A1)で求められるのですが、 なかなか難しいですね。 店休日は、空白にする(値を入力しない)というのはだめですか?

kanade11
質問者

お礼

本当に難しいです。 あちらこちらで調べたりもしましたが、何処にも見当たらずでして。 やはりこれはゼロでは良い方法が無いということなのでしょうね。

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

店休日に入ってるゼロのデータを抜き取って空にすると、AVERAGE関数でふつうに範囲指定してやるとそこだけ除外されます。 なお(以下、もしご存じなら、失礼・・・)。範囲指定のさいはSfiftキーを押しながら、たとえばシート1とシート5をクリックしたうえで、平均を求めたい値が入ってるセルを選んでください(フォームはすべて同じですよね・・・?)。こうすると、シート1とシート5とのあいだにあるシート上のセルもすべて指定したことになります。

kanade11
質問者

お礼

ゼロでなく空白の場合には私もそれを考えていたのですが、 出来ればゼロで平均が出る良い方法をどなたかご存知ないかと思いまして…

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

集計をどのような形でされるのか分かりませんので、もしかしたら求められているものと違うかも知れませんが、そのような場合私だったらこうするという方法を。 1)「月単位の1ブック」の中に「月集計シート(仮にSheet0)」を作る。 2)Sheet0の適当な列を毎日の来客数の合計の表示欄とする(仮にA列でA1:A31)。 3)毎日のシートがSheet1~Sheet31まであって、そのB1にその日の来客数の合計が記入されているとした時に、Sheet0のA1に =IF(ISERROR(INDIRECT("Sheet"&ROW()&"!B1")),"",INDIRECT("Sheet"&ROW()&"!B1")) と入力してA31までコピー。 (「ROW()」はそのセルの行番号になるので、1行目(A1)ではなく、例えば2行目(A2)にSheet1の参照値を表示したい場合は「ROW()」を「ROW()-1」とする) 4)Sheet0のB列を5日おきの平均来客数の記入欄として、適当なセル(仮にB5)に =SUM(A1:A5)/COUNTIF(A1:A5,">0") と入力して平均値を出す。 おそらく毎日の集客数の一覧はどこかに作られるんじゃないかと思いましたので、それを利用する方法です。

kanade11
質問者

お礼

考えていただきありがとうございます。 ただ、一読では少々想像することが出来ませんで… 試しに作って比較・検討させていただきます。

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

この場合,ある期間の平均値を求める式は,  (平均値)=(来客数の総和)÷(日数) となるはずです。普通は7日分の平均値なら(日数)=7ですが,休日が1日含まれるなら,(休日の来客数)=0を加えても加えなくても,(来客数の総和)は変わらないので,(日数)=6としてやるだけで,6日分の平均になりますね。 (来客数)=0の日を休日とみなすなら,0の日の数だけ(日数)から引いてやれば,平均値が出せます。  (平均値)=(来客数の総和)÷{(日数)-(来客数0の日の日数)} 面倒ですが,自分で式を書くのが手っ取り早いと思います。答えになっていなかったらごめんなさい。

kanade11
質問者

お礼

そうですね、確かにそれで求められるのは理解出来るのですが…。 効率的で、スマートな方法をちょっと考えています。 欲張りですよね。なかなか上手くいかなくて。

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

関連するQ&A

  • EXCELシートのコピー

    あるExcelブックに統計表シート、グラフシート、グラフ用の数値シートがあります。 グラフシートだけ別の場所にコピーすると、コピーしたグラフシートのブックを開いたとき、このグラフシートはコピー元の数値シートにリンクしたままになりますが、このリンクを無効にしてシートコピーする方法はありますか。

  • 1日の本屋の平均の来店者数はどのくらいでしょうか?

    1日の本屋の平均の来店者数はどのくらいでしょうか? ブックマート書泉(神田)が分かればより理想です。 よろしくお願いします。

  • 複数のシートの同じセル範囲を一つのシートにまとめたいです。

    Excelで複数シート上の同じセルにある表を一つにまとめたいです。 表はBQ6:CS6で、A:BPにある表の集計が入ってます。 多数のシート上のBQ6:SC6の表を一つのシートに値で貼り付けていきたいのですが、 シート名が固定でないこと、シート数が20~30と複数あり、数も決まってないこと、 そんなブックがいくつもあり非常に困っております。 VBAの貼り付け、マクロの自動登録くらいのスキルしかありません。 どなたかお知恵を貸して下さい。お願い致します。

  • エクセル シートのコピーをリンク無しで行いたいのです。

    エクセルの数式データ表のシートをコピーして、他のブックへ貼り付けしたのですが、 新しいブックを開くたびに 「他のデーターとリンクしています。更新しますか?しませんか?」 というウィンドウが開きます。 リンクはさせたくないのですが、どこをどう設定、または貼り付けの仕方?すればよいのでしょうか? 表はそのまま新しいブックでも使いたいのです。 よろしくお願いします。

  • エクセル上の縦長の表を特定の範囲で複数のシートに分ける方法を教えて下さ

    エクセル上の縦長の表を特定の範囲で複数のシートに分ける方法を教えて下さい。 当方、下請けの仕事でエクセルの資料をお借りしたのですが 同じ表(A4サイズの印刷設定有り)が縦に並んでおり 1シートに10ページから25ページの表があります。 ファイルも7ブックあり、1ブックに2シートのものや、4シート、5シートのブックもあります。 普段は下請けも少なく自社のデータで仕事しているのですが 仕事上、データを更新するのに1日に3、4ページ分の表しか更新しませんし 更新作業の入力も外注に発注しているので、データの確認や 必要な表のページ数を指定して印刷など、非常に手間が掛かってしまいます。 ひとつひとつ切り取り、貼り付けをしていましたがこれも手間が掛かってしまいました。 マクロの知識がないのですが、マクロで解決できないでしょうか。 使用しているのはExcel2003です。 借りた資料の表は1ページが 「9列・31行」のA4縦サイズが縦に繋がって並んでいます。 宜しくお願い致します。

  • Excel2003でシートのコピーについて

    シートごと月別になっている売上表を、別のブックにコピーしたいのでが、その際それぞれのシートに色々と設定している「値や書式、表」などは残し、「数式」だけを除いて行うにはどうすれば良いでしょうか?

  • EXCELで複数のブックの特定のセルの合計を求める方法は?

    EXCELの関数,数式で質問です。 <例題>異なる様式の表(数値)で構成された3つのシート(a,b,c)をもつブックが,同じ型式で50個(50ブック)ある。各ブックの特定のシートの特定の数値セル(1~50ブックのbシートのA5セル)の合計を求める数式を示しなさい。 ※この回答の1つは「=1ブックのbのA5+2ブックのbのA5+3ブックのbのA5+4ブックのbのA5+…+50ブックのbのA5」だと思うのです。しかし,いちいち各ブックの対象シート(b)の対象セル(A5)をクリックして数式を完成させるのは大変です。さらに,求めたい特定の数値セルが「bのA5」だけでなく「aのB3」や「cのR6」など,3つ,4つと増えるとすると,同様の数式を入力するのに大変な労力を要します。何か簡単な集計方法(関数,数式)はあるでしょうか。ややこしい質問ですみません。どうぞ御教示ください。

  • エクセルでシート間のリンクを別のシートに変更したい!

    エクセルで、シート間のリンクの変更がしたいのですが・・・。→ひとつのブック内のいくつかのシートがリンクしています。概要を説明すると、シートCにはシートA・シートBからリンクさせた数式が入っています。今回はシートA・シートBそれぞれを作り直し(数式を手直しした表が入っています)それぞれシートA’、シートB’とし、シートCにリンクさせたいのですが・・・。シートCで検索・置換でシートA’、シートB’とやってみると値の更新というボックスが出てうまくいかない感じです。わかりづらい説明で申し訳ないのですがご教授お願いします!!

  • エクセル2010 複数シートの同時入力

    知人から相談されて、いろいろ調べたんですがわからないので質問です。 エクセル2010の基本練習の問題で、複数のシートを同時操作する問題がありました。 中身は単純な「単価」「売り上げ数」「合計金額」の表で、 月ごとにシートに分けられています。 シートをすべて選択して、一気に「合計金額」の欄に数式を入れるという簡単なものなのですが、 直接入力したシート以外のシートに、 RC[-2]*RC[-1] という数式が表示され、計算結果が表示されません。 (直接入力した計算式は「=C5*D5」です。) オプションで確認しましたが、 R1C1の表示形式~~~のチェックは外れていました。 知人の操作を見ていましたが、特におかしなところがなかっただけに、 全然理由がわからなくて困っています。 解決方法や原因がわかれば教えてほしいです。 どうかよろしくお願いします

  • 31枚のシートを1シートにまとめる

    私はエクセル初心者です。 基本的な質問かもしれませんが、すみませんが教えてください。 1ブックのシート31枚を、一枚にまとめて印刷したいのです。 このシートはA1からM35までの表で、文字列のみです。 1ブックは月毎になっており、シートは1日~31日あります。 この月まとめ表みたいなものを、手帳にはさんで持ち歩きたいので A4用紙一枚に収めたいと思っていますが、 VLOOKUPを使ってみても上手くいきません。 どうすれば綺麗に一枚に収めることができるでしょうか? ちなみにたくさんブックがあるので、 コピぺを繰り返す方法だと大変です。 なんとか関数でやってみようとおもっていますが、 他に良い方法があったら教えてください。 どうぞ回答してくださるようお願いします 。

専門家に質問してみよう