• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:【エクセル】他シートを参照した平均値の算出)

【エクセル】他シートを参照した平均値の算出

このQ&Aのポイント
  • MicroSoft Office Excel 2003について、他のシートを参照してりんごの価格の平均を算出する方法について質問します。
  • マクロを使用せずにSheet1とSheet2に変更を加えずに、Sheet3に途中の計算結果を表示せずに、りんごの平均価格を算出する方法を教えてください。
  • 価格2、価格3が存在しない場合には空白セルとなっています。シートの増加は問題ありません。

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

  • ベストアンサー
  • kybo
  • ベストアンサー率53% (349/647)
回答No.1

Sheet3のB2のセルに以下の様に入力し、Ctrlキー+Shiftキーを押しながらEnter =AVERAGE(IF(Sheet1!B2:B100=A2,IF(Sheet2!B2:D100="","",Sheet2!B2:D100),""))

rumo_neko
質問者

お礼

簡潔なご回答ありがとうございます。 非常に助かりました。 大変、申し訳ないのですが、一点条件が漏れてしまっておりました。。 後出しの条件で大変申し訳ございません。 Sheet2には対応するkeyが存在しない場合があります。 例: 【Sheet2】 key 価格1 価格2 価格3 001 100   80    50 003 60    90 kybo様のご回答は、初めにこちらの提示した条件を満たしており、 簡潔なものでしたので、今後の他の方のご回答に寄らず、 ベストアンサーとさせて頂きたいです。 お手数をお掛けいたしました。

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

その他の回答 (2)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.3

key番号が違っているのに同じ名称(りんご)があるということでかなり難しい問題となっています。 シート1から3までには作業用の列を作りたくはないということなのでシート4に作業用のシートを別に作って対応することにします。 シート4のA2セルには次の式を入力してB2セルまでオートフィルドラッグコピーしたのちに下方にもオートフィルドラッグコピーします。 =INDEX(Sheet1!$A:$B,ROW(A2),COLUMN(A2)) これによってシート1の表をコピーすることになります。 C2セルには次の式を入力して下方にオートフィルドラッグコピーします。 =IF(OR(A2="",A2=0),"",IF(COUNTIF(B$2:B2,B2)=1,ROUNDDOWN(MAX(C$1:C1),-3)+1000,ROUNDDOWN(INDEX(C$1:C1,MATCH(B2,B$1:B1,0)),-3)+COUNTIF(B$1:B1,B2))) この式では同じ名称(りんご)でkey番号が500有ったとしても対応できます。 D2セルには次の式を入力して下方にオートフィルドラッグコピーします。 =IF(C2="","",SUM(E2:Z2)/COUNTIF(E2:Z2,">0")) E2セルには次の式を入力してZ2セルまで横にオートフィルドラッグコピーしたのちに下方にもオートフィルドラッグコピーします。 =IF(OR($A2="",$A2=0),"",IF(MOD($C2,1000)=0,INDEX(Sheet2!$A:$Z,MATCH($A2,Sheet2!$A:$A,0),COLUMN(B2)),IF(INDEX($E$1:$AA1,MATCH(ROUNDDOWN($C2,-3)+COUNTIF($B$1:$B1,$B2)-1,$C$1:$C1,0),COLUMN(A2))<>0,INDEX($E$1:$AA1,MATCH(ROUNDDOWN($C2,-3)+COUNTIF($B$1:$B1,$B2)-1,$C$1:$C1,0),COLUMN(A2)),INDEX(Sheet2!$A:$Z,MATCH($A2,Sheet2!$A:$A,0),COLUMN(B2)-COUNTIF(INDEX($E$1:$AA1,MATCH(ROUNDDOWN($C2,-3)+MOD($C2,1000)-1,$C$1:$C1,0),1):INDEX($E$1:$AA1,MATCH(ROUNDDOWN($C2,-3)+MOD($C2,1000)-1,$C$1:$C1,0),23),">0"))))) 最後にお求めのシート3のA2セルには次の式を入力してB2セルまでオートフィルドラッグコピーしたのちに下方にもオートフィルドラッグコピーします。 =IF(COUNTIF(Sheet4!$C:$C,ROW(A1)*1000)=0,"",IF(COLUMN(A1)=1,INDEX(Sheet4!$B:$B,MATCH(ROW(A1)*1000,Sheet4!$C:$C,0)),INT(INDEX(Sheet4!$D:$D,MATCH(ROW(A1)*1000+COUNTIF(Sheet4!$B:$B,$A2)-1,Sheet4!$C:$C,0))))) これによってA列には名称が、B列には金額の平均が表示されます。

rumo_neko
質問者

お礼

ご回答頂きまして、ありがとうございます。 まさか、ここまで難解になるとは、思っておりませんでした。。 大変、ご面倒な質問に丁寧に回答頂きましてありがとうございます。 数式が複雑になってしまったのは、 私の質問の条件に問題があるのでしょうね。。 ご回答頂いた内容は、自分には高度で理解に時間がかかりそうですが、 一式ずつ、読み解かせて頂きたいと思います。 貴重なお時間を、このような質問に割いて頂いたkurumito様に、 感謝させて頂きたいです。

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

Sheet1の横方向のデータ数が最大10個(K列まで)で、Sheet2の品名のデータ数が100行目までの範囲に入力されているなら、Sheet3のA2セルに以下の式を入力して下方向にオートフィルしてください。 =AVERAGE(INDEX(Sheet2!$B$2:$K$100,MATCH(A2,Sheet1!$B$2:$B$100,0),))

rumo_neko
質問者

お礼

ご回答ありがとうございました。 参考にさせて頂きたく思います。 こちらの入力ミス等であれば、大変申し訳ないのですが、 質問と同じ入力内容を記載したエクセルシートに、 ご回答頂いた数式を入れた所、結果が正しくありませんでした。 (例えば、Sheet2のD4に10000と入力した所、結果が77でした。) また、下記の方のお礼にも書かせて頂いたのですが、 こちらの記載漏れで、 「Sheet2に対応するkeyが無い場合がある」 という事が、どこにも書かれていませんでした。 後付で大変申し訳ございません。

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

関連するQ&A

  • エクセルで条件付きの平均値を求める関数

    お世話になります。 恐らく簡単な見落としかと思うのですが、 関数がうまく動いてくれないので質問します。 A1~A5に商品名群(空白セルあり)、B1~B5(空白セルなし)にその値段が入力されています。 C1セルに、A1~A5で空白ではない行のB1~B5セルの平均値を出したいです。 例: A1:リンゴ  B1:100 A2:(空白) B2:50 A3:みかん  B3:400 A4:メロン  B4:500 A5:みかん  B5:200 この場合、B2の「50」は含めず、それ以外の行の平均値を求める。 関数はC1=AVERAGEIF(A1:A5,"<>""",B1:B5)と入れたのですが、空白セルを除いて計算してくれません。 間違いが分かる方がいましたら、返信頂きたいです。

  • エクセル VBA マクロについて

    初めまして。 以下のようなマクロを組みたいんですが可能でしょうか?  A     B     C    D    E    F 東京   足立区 みかん  10   5   50       葛飾区 みかん  20   3   60        港区  りんご  30   1   30 小計                       140 ( 空白行   ) 愛知  名古屋市 みかん  10   5   50      東海市    もも   10   5   50 小計                       100 上記のようなデーターシートがあります。 Dには数字が入ってるんですが、 ここに係数をかけたいんです。 たとえば、=10*1.07 とか (1)元の値に係数かける式をセルに入れるマクロはあるんでしょうか? (2)この係数を別シートのセルで入力したいんですが セルを参照できますか? (3)みかん、もも、りんごの列を検索して、  それに対応した係数かけるマクロはあるんでしょうか? 処理速度は、とくにはこだわりません。 ご指導おねがいいたします。

  • エクセルのマクロについて

    一つのセルに以下のマクロを設定したいです。 [Aシート] A1~B30の表があります。 A1~A30セルには、有 or 無 が入力されています。 B1~B30セルには、りんご、みかん、ばなな など物の名前(重複なし)が入力されています。 [Bシート] C3セルに、AシートのAセルが"有"だったら、Bセルの値を反映させたいです。 ※例えばAシートが以下の時 ----------------------   A  B 1 有  りんご 2 有  みかん  3 無  ばなな 4 無  いちご 5 有  ぶどう 6 無  ぱいん 7 有  びわ ・ ・ ------------------------ BシートのC3セルに、AシートBセルの値を"折り返して"表示する。   A  B  C 1 2 3      りんご        みかん        ぶどう        びわ 4 ------------------------ OS:Windows XP sp3 エクセル:Microsoft Office Excel 2003 sp3 ご存知の方がおりましたらご教授ください。

  • Excelでセル文字列に応じて他シートからコピペ

    Excelで、 シート1には「ある値の羅列」 シート2には「特定の値についての詳細説明が複数セルにわたって記載されている」 という構成になっているとき、 シート1のセル内の部分的な値と一致する、シート2の特定のセル (詳細説明の中で必要なセルのみ)をシート1の値の横のセルから右方向に コピーアンドペーストしたいと考えています。 具体的には シート1の、A列のセル内に以下のように「:」で区切った情報の羅列が数千行分 入力されています。     A                  B 1 商品名:リンゴ:渋谷店:在庫有り  (空白セル) 2 商品名:みかん:新宿店:在庫無し  (空白セル) 3 商品名:メロン:池袋店:在庫有り  (空白セル)    ・    ・ シート2には      A     B     C     D     E      1 イチゴ      赤   甘酸っぱい  春     高価   ・・・ 2 みかん      橙   甘酸っぱい  冬     安価   ・・・ 3 リンゴ      赤    甘い    冬     普通   ・・・ 4 メロン      緑    甘い    夏     高価   ・・・ 5 バナナ      黄色   甘い    ?     普通    ・    ・    ・ という風に、ある値に対する詳細説明が列方向に記載されています このとき、シート1のA1のある値(リンゴ、みかん 等)に対応した シート2の説明行のうち、ある一定の部分(D列より右がわ)を、 シート1のB列より右に一括でコピーアンドペーストできないでしょうか? 出来上がりの希望は以下の通りです。     A                  B      C   ・・・ 1 商品名:リンゴ:渋谷店:在庫有り     冬     普通  ・・・ 2 商品名:みかん:新宿店:在庫無し     冬     安価  ・・・ 3 商品名:メロン:池袋店:在庫有り     夏     高価  ・・・    ・    ・    ・ 従来ははいちいちシート1のA列の値をコピーし、シート2で検索、 該当する情報をドラッグしてコピー、シート1の戻ってB列にペースト、 という作業を行っていました。 しかし今回、シート1の内容が数千行もあるため、できればマクロや関数でなんとかできれば、 と思っています。 この作業の自動化に付き、ご存知の方、お教えいただきたくお願いいたします。

  • sheet1からsheet2に飛ばす(エクセル)

    例えばsheet1の表で出した平均値などの数字をsheet2の別の表に飛ばすのはどうしたら良いのでしょうか。このことの名称もわかりません。もしかしたら「マクロ」? むずかしいのでしょうか?

  • EXCELで

    EXCELで、マクロを使ってすると思うのですが、 例えばsheet2でりんご、みかん、ばななと打ち込んで、sheet1には、りんご、みかん、ばななとsheet2で打ち込んだものが出てくるやり方を教えて下さい。

  • エクセルのセル内に順番をつけていくマクロ

    はじめまして。 私は、マクロ初心者でほとんど分からなく困っています。 内容というのが、例えばセル番号のB列に不規則に文字が入っており、それを上から順にA列に順番を付けるマクロを作りたいと思っています。しかし、その番号を付ける条件が特殊で、 1、特定の文字内容が入っている場合は飛ばす。 2、連続して文字が入っている場合は、上のセルに番号を付け、下のセルは番号を付けず飛ばす。 3、空白セルも飛ばす。 EX:  りんご  みかん  イチゴ となった場合、 1りんご □みかん 2イチゴ   というようになるようなマクロを作りたいと思います。(EXの□は空白を意味します。) 何かいい案がないでしょうか? 宜しくお願いします。

  • エクセル AVERAGEを取るときに

    平均値を取りたいのですが 範囲が少し複雑だったのでどのように式を作ったらいいのか わかりません。 シート1に A列 りんご みかん ばなな このようにデータがありそれぞれシート2にある りんご の個数の平均値をB列に求めたいのですが シート2には A列   B列 りんご  3      8      9 みかん  5      9      10 このように果物の種類の項目名が1番上にしかなく 個数はそれに対して必ず3行あるので VLOOKUPなどを使うとりんごと書かれている真横のセルしか 参照しないので常にその項目の横のセルから3行を参照したい のですが どうしたらよいでしょうか? 教えてください。よろしくお願いいたします。

  • 別シートに並べ替える方法

    教えてください exsel2007使用しています sheet1 りんご 2 みかん 1 バナナ 2 ↓ sheet2 りんご りんご みかん バナナ バナナ と並べ替えしようと思うのですがマクロ使わずにできるのでしょうか? よろしくお願いします

  • EXCELのシート名を自動参照

    EXCELのワークシートの名称を、例えばA1セル内にある文字列を参照させて変更させるマクロは可能でしょうか? 具体的には ・日々使用している様式(ワークシート)をコピー ・コピーしたシートへ、他のファイルからデータを貼付 ・貼付けたデータのひとつのセルを参照してワークシートの名前を変更 といった作業をマクロで一発処理しようと考えています。 参照させるデータはロットナンバーですので、毎回異なります(セルは同一です)。 単純にマクロの記録で該当セルをコピーした後、名前タブへ貼り付けてもうまくいきませんでした。

専門家に質問してみよう