• ベストアンサー

等間隔ごとのセルの平均値、最大値、最小値を求める関数式

仕事で作業時間をエクセル表にまとめています。 A~Cに作業項番と作業内容、D,E,Fにそれぞれ作業時間の平均、最小、最大値が入っています。その次の列からそれぞれの作業時間が入っています。 ひとつの作業で4列分使い、左から作業開始時間、作業終了時間、所要時間、所要時間の小計と続いています。 今までは、平均、最小、最大をAVERAGE,MIN,MAX関数を使い、一つのセルずつ計算していました(例:=MIN(I9,M9,Q9,U9.Y9,AC9,・・・,)が、作業回数が30回を超えたところ、これらの方法が使えなくなってしまいました。(計算できる数値が30個までしかない) 30個以上の数値を計算させるためにはどうしたらよいのでしょうか。 また、式が長くなると管理が大変になってくるので、すっきりとまとめられるような関数があったら教えてください。 以上です。よろしくお願いします。

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

  • ベストアンサー
  • telescope
  • ベストアンサー率54% (1069/1958)
回答No.2

配列数式を使います。 =MAX(IF(MOD((COLUMN($I$9:$AP$9)-9),4)=0,$I$9:$AP$9,"")) CtrlキーとShiftキーを押しながら、Enterキーを押します。 数式には、自動的に { }  がついて、 {=MAX(IF(MOD((COLUMN($I$9:$AP$9)-9),4)=0,$I$9:$AP$9,""))} のようになります。 例:=MIN(I9,M9,Q9,U9.Y9,AC9,・・・ の場合、列番号が I が9番目、Mが13番目・・・と4つ置きになっていますので、 範囲のなかで、列番号から9を引いた数を4で割った余りが0のものを計算するという意味です。AVERAGE,MAX関数も同じです。 例の通りでなかったら、適切に変えてください。 等間隔でしたら、なんらかの規則性があると思います。

SelesMysty
質問者

お礼

配列数式というものを使うのですね。 早速試してみます。 名前の定義を使うやり方よりは式が複雑ですが、例を見ると結構汎用性があるような気がします。 貴重な情報どうもありがとうございました。

SelesMysty
質問者

補足

上の式、試しさせていただきました。 重ねて質問なんですが、新しく作業時間を記入するときに式を書き直さなくて済むように、予め計算範囲を最右部(IV)まで広げたところ、意図しない計算結果になってしまいました。(おそらく空白セルが0として認識され、計算過程に盛り込まれたものと思われます。) 空白セルを計算対象からはずすようなことはできるのでしょうか。 再度お願いします。

その他の回答 (2)

  • telescope
  • ベストアンサー率54% (1069/1958)
回答No.3

こちらでどうでしょうか? {=AVERAGE(IF($I$9:$IV$9<>"",IF(MOD((COLUMN($I$9:$IV$9)-9),4)=0,$I$9:$IV$9,"")))}

SelesMysty
質問者

お礼

お礼遅くなってすいません。 上記の式を試させて頂きました。 理想通りの計算結果になりました!! どうもありがとうございました。

  • wisemac21
  • ベストアンサー率39% (171/429)
回答No.1

例:=MIN(I9,M9,Q9,U9.Y9,AC9,・・・,) この引数の参照範囲を名前の定義して、引数に定義名を使う方法があります。 =MIN(定義名)

SelesMysty
質問者

お礼

該当セルごとに名前の定義をつけていく方法ですね。 早速試してみます。 貴重な情報ありがとうございました。

関連するQ&A

  • 三次関数の最大値・最小値

    グラフの大体のイメージはつくれるんですがよくわかりません。 具体的な問題ですが y=2x^3+3x^2-12xで xのとる範囲が[-3,+3]であるときの最大値、最小値なのですが 自分なりの答えはx=3のときmax45で、x=1のときmin-7 なのですがグラフを書いて最大値、最小値の 見当をつけて計算でだしたのですが、何かいい方法があったら教えてください。

  • Excel2003 VBA 最大値と最小値の求め方

    自分でいろいろ調べてみたのですが、ちょっとわからなくて質問させて頂きます。 VBAのコードにMINとMAX関数を入れて日付の最大値と最小値を求めたいのですがうまくいきません。 処理の初めに、対象の列には書式をYYYY/MM/DDの書式にし、そのあと最大値と最小値を変数に入れて求めています。 値を入れる変数はデータ型にしています。 表には2008/3/12など表示されているのに、MAX,MINともに変数の値は0でした。 どうしてこうなるのか見当もつきません。 よろしければ、返答お願いします。

  • C言語 最大値と最小値を求めて表示するプログラム

    はじめまして。 C言語を学習中です。 下記の問題演習の解答として記載されているプログラムがどうしても理解できません。 特にプログラムの最後の方のwhile文で最大値と最小値の判定をしているのかと思いますが、どのような計算をして判定しているのでしょうか。 while (array[i] != -1) { if (array[i] > *max) *max = array[i]; if (array[i] < *min) *min = array[i]; i++; 具体的に教えてください。 よろしくお願い致します。 ●問題 0~100の範囲で入力された複数の数値の中から、 最大値と最小値を求めて表示するプログラムを作成せよ。 -1が入力された場合は入力の終わりと判定する。 ただし、最大値と最小値はmain関数以外の一つの関数の中で求める。 また、入力された数値を記憶する配列の要素数は10とし、 それ以上入力された場合はエラーが起きても仕方ないこととする。 ヒント:配列の中に -1 があればデータの終わりだと判断できる。 ヒント:最小値を探すには、最大値を記憶した変数との比較を繰り返せば良い。 ●解答 #include <stdio.h> void maxmin(int array[],int *max,int *min); int main(void) { int i = 0,array[10],max,min; do { printf("%d 番目の数:",i + 1); scanf("%d",&array[i]); i++; } while (array[i - 1] != -1); maxmin(array,&max,&min); printf("最大値 %d : 最小値 %d\n",max,min); return 0; } void maxmin(int array[],int *max,int *min) { int i = 0; *max = 0; *min = 100; while (array[i] != -1) { if (array[i] > *max) *max = array[i]; if (array[i] < *min) *min = array[i]; i++; } }

  • 関数で求めた2つのセル範囲内の、平均値を出したい。

    日の出から日の入までの範囲の平均温度を求めたいのですが、日の出時刻と日の入り時間はVLOOKUP関数によって求めています。 A列に時刻、B列に温度が並んでいます。 求めた時刻が例えば、日の出6:00(セル番号 A360)、日の入18:00(セル番号 A1080)となっている場合。 当然ながら、=AVERAGE(A360:A1080)と入力すれば可能ですが、 =AVERAGE(VLOOKUP関数数式:VLOOKUP関数数式)はエラーとなります。 =AVERAGE(VLOOKUP関数数式,VLOOKUP関数数式)は2点のみの平均温度となってしまいます。 どのような方法で解決できるでしょうか? あるようで見つからないのですが、指定した範囲内に一致する数値があった場合にそのセル番号を返すような数式はあるのでしょうか?

  • 最大値と最小値の求め方

    以下はコマンドライン引数で任意の数の整数を受け取って、合計・平均・最大・最小を求めようとしたソースです。 しかし、実行したら最大値と最小値が正しく出ませんでした。 if文が間違っているのかもしれないと思ったのですが、はっきりと『ここが間違っている』という場所が分かりません。 どうかご指摘お願いします。 class Choco { public static void main (String[] args) { int i; int sum = 0; int max; int min; for ( i=0; i<args.length; i++) sum += Integer.parseInt(args[i]); double ave = sum/args.length; max = args.length; min = args.length; if (args.length>max){ max = args.length; } if (args.length<min){ min = args.length; } System.out.println("合計は" + sum + "です。"); System.out.println("平均は" + ave + "です。"); System.out.println("最大値は" + max + "です。"); System.out.println("最小値は" + min + "です。"); } }

    • ベストアンサー
    • Java
  • 2次関数の最大値、最小値

    次の関数に最大値、最小値があればそれを求めよ。      y=-2x(二乗)+4x+1 (-1<x≦2) 計算方法は分かるのですが、最小値の答えが「なし」になる理由が分かりません。どなたか教えてください(最大値の答えは合っていました)

  • エクセル 最小値を求める関数について

    複数シートの集計で串刺し集計を使っています。 最大値は =MAX('1:31'!G57) で求められるのですが、0以上の最小値を求める関数(SMALL,またはMIN)を使ってもうまくいきません。 0以上の最小値を求める関数を教えてください。よろしくお願いします。

  • 平均を求める関数についてと日付入力について

    Excel2000を使っています。 いくつか判らないことがあるのですが、どれか1つでもいいので 教えてください! ○平均を求める関数について 各支店の月々の光熱費を一覧表にまとめています。 横列に1月から12月まで列を作ってあり、6月と12月の横には半期ごとの小計列もあり最後に合計列があります。 合計列の隣に月平均を表示したいのですが、間に小計列があるせいで AVERAGE関数が使えません。 とりあえず、COUNT関数を使ったりしてなんとかうまくいったのですが もっといい方法あればと思い質問しました。 また、地域別小計の行もあり、その月平均を出したいのですが、 計算式が入っているので分母が常に12になり困っています。 0以外の合計とデータ個数で平均をだす方法はありませんか? 判りにくいと思いますがよろしくお願いいたします。 ○日付入力について 今、3/13といれると→平成19年3月13日となります。 これを、本日以降の年月日でもっとも近い年度が現れるように したいのです。 つまり、3/13といれると→平成20年3月13日と表示したいのです。 日付データとして残したいと思っています。 8/3/13といれるのが面倒なので。。。すみません。 ○携帯電話番号の表示について 1つのセルに09012345678と入力したら、表示で 090-1234-5678と表示したいのです。 書式設定でいろいろやってみたんですがうまくいきません。。。 いろいろ質問して申し訳ありませんがよろしくお願いいたします

  • Excel 2007にて最小値・最大値・平均値が計算されなくなってしまいました。

    違う相談サイトにて質問させて頂きましたが、回答がなく急ぎ助けて頂きたくこちらにて質問させて頂きます。 Excel 2007使用です。E2~E25未入力セル(必要時入力)があり、折れ線グラフがうまくつながらなく「データ要素を線で結ぶ」にチェックしてもグラフの線が未入力部分も線でつながってしまう為、E2の式を「=IF(OR(C2="",D2="")=TRUE,NA(),C2-D2)」と入力し(E25~E25までオートフィル)表示された「#N/A」は条件付き書式で非表示したのですが、それまでE26で最小値として「=MIN(E2:E25)」・E27で最大値として「=MAX(E2:E25)」・E28で平均値として「=IF(COUNT(E2:E25),AVERAGE(E2:E25),)」と入力して計算され表示されていたのですが、折れ線グラフをうまく表示する為にE2~E25の式を変更したらグラフはうまく表示されたのですが、最小値・最大値・平均値が計算されなくなってしまいました。どうしてもこの3種の計算も大事で、外す事も出来ず色々調べたのですがわからなく大変困っております。助けて下さい。当方まだ未熟なのでわかりやすく教えて下さい。よろしくお願いいたします。説明が下手でわかりにかった場合お詫び致します。

  • EXCEL関数で最大値と最小値を省いた標準偏差

    EXCEL関数で最大値と最小値を省いて平均値を求める関数にTRIMMEAN がありますが、これと同様に、EXCEL関数で最大値と最小値を省いた標準偏差を求める関数はありますか?標準偏差を求める関数としてはSTDEVPAがありますが。

専門家に質問してみよう