• ベストアンサー

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

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

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

  • ベストアンサー
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.1

例えばOFFSET関数とMATCH関数を組み合わせる方法があります D1に日の出時刻、D2に日の入時刻を関数で求めておくと =AVERAGE(OFFSET($B$1,MATCH(D1,A:A,1)-1,0,MATCH(D2,A:A,1)-MATCH(D1,A:A,1)+1,1)) で平均気温(?)が求められます >指定した範囲内に一致する数値があった場合にそのセル番号を返すような数式 それがMATCH関数です。

ikeike000
質問者

お礼

早速の回答ありがとうございます。 とりあえず教えて頂いた数式を入力してみますと目的どおりの結果となりました。ただ、私にとっては複雑で内容を理解できていないのでもう少し勉強してみます。

その他の回答 (1)

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

これは配列数式(多分SUMPRODUCTでも可能か、未確認)で解くのが適した方法かと思う。 例データ ちょっと勝手な例に簡素化している。 F1:H6に 日 日の入り 日の出(24時を越える例になってすまない) 1 11 20 2 20 30 3 24 31 4 28 33 5 30 36 ーーーー A1:B3 A列  B列 1 日 日の入り 日の出で 11 20 ーー A3は =VLOOKUP($A$1,$F$2:$H$6,2,FALSE) B3は =VLOOKUP($A$1,$F$2:$H$6,3,FALSE) で求める。 ーーー D列 E列 D1:E16 時刻(に当たるもの)    計数 1 2 3 3 5 6 7 5 9 4 11 2 13 7 15 3 17 2 19 4 21 5 23 5 25 6 27 7 29 2 31 3 ーー 関数 =AVERAGE(IF((D1:D16>=$A$3)*(D1:D16<=$B$3),E1:E16,"")) ト入れてShift、Ctrl,Enterの3つのキーを同時押しする。 結果 3.6 ーーー 検算  D列とE列の一部(=D列で条件に合致するもの) 時刻の間隔のつもり。 11より大で20より小のもの 11 2 13 7 15 3 17 2 19 4 計 18 平均 3.6ーー>一致 === これも >私にとっては複雑で内容を理解できていないのでもう・・ 言われそうだが、質問の内容が難しいタイプなんです。身に過ぎた 課題にぶつかったということです。 少し易しくする方法は中間列などを多用するしかないようにおもう。 しかし日の数が多くなると収拾付かない。

ikeike000
質問者

お礼

ご指導ありがとうございます。大変参考になりました。 結局、データロガーの値を貼り付けのみで解決したかったので、OFFSETとMATCHを使うことにしました。 えーと、はい、完璧に理解しましたのでご心配なく。

関連するQ&A

  • VLOOKUP関数の範囲をセルで指定したいと思っています。

    VLOOKUP関数の範囲をセルで指定したいと思っています。 B1:参照シート名(VLOOKUP関数で使用する範囲があるシート) C2:範囲の開始位置 E2:範囲の終了位置 B3:G3:列番号(B3の値は、B6:B8の範囲で使用する列番号、 D3の値は、D6:D8の範囲で使用する列番号) これらのセルに入力された情報をもとにB6:G8の範囲にVLOOKUP関数を 反映させたいと思っています。 例えば、 B1に参照シート名「2ケタ」 C2にVLOOKUP関数の範囲の開始位置「A5」 E2にVLOOKUP関数の範囲の終了位置「G7」 B3に範囲の列番号「2」がある場合 B6に「=VLOOKUP(A6,'2ケタ'!A5:G7,2,0)の関数を入力。 B2に参照シート名「3ケタ」 C5にVLOOKUP関数の範囲の開始位置「B5」 E2にVLOOKUP関数の範囲の終了位置「H7」 C3に範囲の列番号「3」がある場合 C6に「=VLOOKUP(A6,'3ケタ'!B5:H7,3,0)の関数を入力。 といった感じです。 現在、B6に「=VLOOKUP($A6,INDIRECT($B$1&"!a5:g7"),INDIRECT("$b$3"),0)」と 関数を入力して、VLOOKUP関数の「範囲の参照シート名」と「列番号」の情報は セルから持ってくることができました。 しかし、「a5:g7」という範囲だけは、INDIRECT関数をうまく入れることができません。 どのように関数を入力したら、上手くいくのか、教えていただけないでしょうか。

  • 空白のセルを除いた平均は出ますか??

    お忙しい中お願いいたします。 エクセル関数で空白のセルは除いた指定範囲の平均(合計)を 算出することはできますか? 例えば、AVERAGE(A1:A20)という関数の中でA10とA13のセルは空白 にした時その他のセルの平均を出すことは可能ですか? お願いいたします。

  • vlookupの結果があるセルの書式を取得したい

    vlookupの結果があるセルの書式を取得したい =VLOOKUP(検索値,範囲,列番号,検索の型)で値を取ってくることは 出来ますが、その値の入っているセルの書式を取得したい。 Sheet1の セルA1に、検索したい値が入っていて、 セルB2にVLOOKUP関数が入り。 範囲はSheet2のA1:D1000となっていて、 列番号に4と入っていて10行目に 検索値と一致する値が入っていた場合に、D10の値は VLOOKUP関数で持ってこれますが、D10のセル書式を セルB2に反映させたいのですが、どのようにすれば良いでしょうか? VBAでプログラムしないとダメでしょうか?

  • 条件を付けて平均を求めたい!(Excel)

    列   A      B         C    商品名    ランク       金額    1みかん    A        1000 行 2みかん    C         300    3みかん    B         600    4みかん    C            5             合計 1900    6             平均A    7             平均B    8             平均C 説明をする為に適当に作ったので、何故こんな物の平均を?と思うかもしれませんが、そこはあまり気にせずご回答頂ければ幸いです。 例えば、こんな表があったとします。(勿論、データ量はもっと沢山。。。) 各ランクごとの平均を求めたいのですが、どんな関数を使い、どんな範囲選択をすれば宜しいのでしょうか?  条件を付けAVERAGEで求めれば良いことはなんとなく分かるのですが・・・ 範囲の設定や数式の順番が全然分かりません。 よろしくお願いします。 ※金額欄(C列)・・・ 実際に未入力のセルがあるので、未入力のセルを0(ゼロ)として考えてくれる数式をお願いします

  • VLOOKUP関数の選択範囲にセルの値を入れたい

    エクセルのVLOOKUP関数の選択範囲にセルの値を入れることは出来ませんか? やりたい事は(画像参照) 1、現在の時刻に一番近い時間を検索して、現在の色を出す。 =VLOOKUP(現在時刻の入ったセル,B1:C50,1) 2、次に一番近くに来る赤の時間を表示する 1が何行目かを表示して、 =VLOOKUP("赤",A【表示したセル】:B50,2) にしたかったのですが、出来ませんでした。 わかりにくい説明ですが・・・わかる方、よろしくお願いします。 また、他に良い方法があれば教えてください。

  • VLOOKUP関数の列番号をフィルに対応させる方法を教えてください(COLUMN関数以外)

    VLOOKUP関数を横のセルにフィルして使いたいのですが、 検索範囲がA列~ではないので、列番号にCOLUMN関数を使えません。 シートのフォーマットを変えず、範囲内における列番号(範囲内で左端から何番目か、など) を返すためにはどうすれば良いか、ご存知の方教えてください。 VLOOKUP関数を横のセルにフィルしていった場合、列番号は変わらないため、 列番号にCOLUMN関数を入れて列番号を返すようにするとうまくいきますよね。 ただ、COLUMN関数は単純に列番号を返すだけなので、この方法は VLOOKUP関数の検索範囲がA列から始まっている場合のみにしか使えません。 シートのフォーマットを変えず、VLOOKUPにおける範囲がB列以降になる場合、 範囲内における列番号(範囲内で左端から何番目か、など)を返すための関数 もしくは他に何か良い方法をご存知でしたら、お教えいただけませんでしょうか。 売上12ヶ月分+利益12ヶ月分が横に広がっている定型フォーマットがあるのですが、 24ヶ所の列番号を手入力で直すのって非効率的なので・・・。 どうぞ宜しくお願い致します。

  • エクセル関数

    エクセル初心者です。 Average関数で=AVERAGE(A2:A6)の数式の意味の理解はできるのですが、 AVERAGE(A2:A6, 5)の ,5が理解できません。ヘルプ機能を使ったら、セル A2 からセル A6 の数値と 5 から平均値を求めます。とありましたが、5から平均値の5からとはどういう意味でしょうか? ご存知の方、教えていただけると大変助かります。よろしくお願いします。

  • マクロで名前をつけたセル範囲の平均値を求める

    Excel2000のマクロを使用しています。 まだまだ初心者なので、少し複雑になるとさっぱりです。 ぜひお力をお貸しください。 例) A1のセルに200、A2のセルに300、A3のセルに500のデータを持ち、 Range("A1":"A3")に "data"と名前を付けたとします。 ここでAVERAGE関数を使いたいのですが、 ActiveCell.FormulaR1C1 = "=AVERAGE("A1":"A3")"という方法ではなく "data"で参照して平均値を求めたいのですが、 ActiveCell.FormulaR1C1 = "=AVERAGE(data)としても参照してくれません。 この場合のいい解決法があったら教えてください。 よろしくお願いいたします。

  • 平均の出し方

    Excel初心者です。 下記のような平均を出す関数を教えてください。 日毎に3列使い、日々の処理数を集計しています。 A列、B列、D列、E列は数値又は空欄。 日計:C列はsum(A:B) 日計:F列はsum(D:E) 月合計計:Q列はsum(C,F・・・) Z列に処理平均を出したい。 C列とF列の値がゼロの時は平均の対象外にする。 average(C4,F4)とすると、数式が入っているせいか、結果が1.5になってしまいます。 ここにゼロや数式が入っているセルを除いた平均を出し、Z4に3と出るようにしたいです。 範囲が10個以上あるので、範囲指定もうまくできません。   A   B   C     D    E    F  ・・・    Q        Z 1 9/1           9/2               9月 2 午前 午後 終日  午前 午後 終日       月合計   処理平均 3  4   1   5    1    3   4         9       4.5 4               2    1   3         3        3 5  1   5   6                      6        6 6  6   1   7    5       5         12        6 宜しくお願い致します。

  • IF関数:複数条件、ISNA、VLOOK

    関数初心者です。 =IF(ISNA(VLOOKUP(検索値,範囲,列番号,FALSE)),"",VLOOKUP(検索値,範囲,列番号,FALSE)) あるセル(例:A1セル)が1以上で上記の答えを出す。という関数を作りたいのですが、うまくいきません。 どなたかわかる方がいらっしゃったら、回答お願いします。

専門家に質問してみよう