エクセル2010で複数の表から対応するセルの最大値を求める方法

このQ&Aのポイント
  • エクセル2010を使って複数の表のセルの最大値を求める方法について解説します。
  • 添付した図をもとに、同じ行列に相当するセルの最大値を一つの表にまとめる方法を詳しく説明します。
  • 実際の表は37行45列で200個ありますが、本記事では3つの表を例に説明します。
回答を見る
  • ベストアンサー

エクセル2010 複数の表から対応するセルの最大値

エクセル2010を使っています。 同じ行列数をもつ複数の表の、それぞれのセルの最大値を求めたいです。 添付した図で、やりたいことを詳しく説明します。 この図には、frame1,frame2,frame3,の3つの表(A列からD列の部分)があります。 3つの表は、すべて3列5行の表です。 これらの表の同じ行列に相当するセルの最大値を、一つの表(F列からI列の部分)にまとめたいです。 つまり、 B3とB10とB17の最大値を、G3に表示して、 B2とB11とB18の最大値を、G4に表示して、 ・・・ D7とD14とD21の最大値を、I7に表示する。 です。 (実際の表は37行45列で、表の数が200あります。) どうぞよろしくお願いします。     

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.2

>実際の表は37行45列で、表の数が200あります というお話なので、一つ一つの表からセルを拾って数式を書くとか、あるいは配列数式などで無理矢理一発で計算しようとするのは全く適切な方法ではありません。 比較的簡単に答えを導く方法の一つとしては、 G3セルに =MAX(B3,G10) と記入、I7までコピー貼り付け G3:I8をまとめて下向けに表の羅列の下端まで(ご質問のサンプルなら22行まで)コピー貼り付け 以上で全く負荷もかからずにG3:I7に欲しい結果が並びます。

goseinaito
質問者

お礼

すごいアイデアです! 全く気がつきませんでした。 ありがとうございました。

その他の回答 (4)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.5

こんにちは! VBAでの一例です。 >(実際の表は37行45列で、表の数が200あります。) とありますので、↓の画像の左側がSheet1で 画像のような配置で規則だたしく「frame」があるとします。 Sheet2のB1セルから列方向AT1セルまで 1~45の番号が入っている Sheet2のA2セルから行方向A38セルまで1~37の番号がすでに入力済み だとしての一例です。 Sheet3を作業用のSheetとして使用しています。 Alt+F11キー → メニュー → 挿入 → 標準モジュール → VBE画面に ↓のコードをコピー&ペーストしてマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub Sample1() 'この行から Dim i As Long, j As Long, endRow As Long, wS1 As Worksheet, wS2 As Worksheet, wS3 As Worksheet Set wS1 = Worksheets("Sheet1") Set wS2 = Worksheets("Sheet2") Set wS3 = Worksheets("Sheet3") Application.ScreenUpdating = False Range(wS2.Cells(2, 2), wS2.Cells(38, "AT")).ClearContents For i = 1 To 37 wS1.Range("B2").AutoFilter Field:=2, Criteria1:=i endRow = wS1.Cells(Rows.Count, 2).End(xlUp).Row If endRow > 2 Then Range(wS1.Cells(3, 3), wS1.Cells(endRow, "AU")).Copy wS3.Cells(1, 1) End If For j = 1 To 45 wS2.Cells(i + 1, j + 1) = WorksheetFunction.Max(wS3.Columns(j)) Next j Next i wS1.AutoFilterMode = False wS3.Cells.Clear Application.ScreenUpdating = True MsgBox "処理完了" End Sub 'この行まで ※ 関数でないので、データ変更があるたびにマクロを実行する必要があります。m(_ _)m

goseinaito
質問者

お礼

ありがとうございました。

  • tsubuyuki
  • ベストアンサー率45% (699/1545)
回答No.4

> (実際の表は37行45列で、表の数が200あります。) 面倒な手段を使うなら、 flameごとにシートを用意(200シート)用意し、 集計のシートを別に作り、集計シートに最大値を表示する。 合計201シート使う方法です。 全てのシートは同じフォーマット(セル位置)にしておく必要があります。 例えば、シート名が「flame1」「flame2」・・・「flame200」とした場合、 集計シートの「1-1」のセル(添付図を拝借して、flame1の1-1のセル(B3))に     =MAX(flame1:flame200!B3) としてやると、全対象シートのB3のうちから最大値を返します。 あとはこれを > 実際の表は37行45列 に必要な分、コピー(フィル)してやればOKです。 この手法を「串刺し計算」と呼ぶようです。

goseinaito
質問者

お礼

ありがとうございました。

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

回答No1です。 実際の表について求めるとなると先に紹介したような簡単な式では対応が難しいですね。作業列を作って対応するのがようでしょう。 frame1について37行45列でしたら縦の数値は1から35で横の数値は1から44までになっているとしますと次のようにしてはどうでしょう。 AU3セルには次の式を入力してCL3セルまでドラッグコピーしたのちに下方にも℃ラグコピーします。 =IF($A3="","",IF(ROW()<=37,B3,MAX(B3,OFFSET(B3,-37,0)))) 最後のframeの作業列に表示されているデータがお求めの表ということになります。最大値が表示されています。 その部分をコピーしてから例えばシート2に「形式を選択して貼り付け」で「値」にチェックをして貼り付けてもよいでしょう。

goseinaito
質問者

お礼

ありがとうございました。

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

お示しの表の場合でしたらG3セルに次の式を入力してI3セルまで横にドラッグコピーしたのちに5行下方まで下にもドラッグコピーします。 =MAX(B3,B10,B17)

goseinaito
質問者

お礼

ありがとうございました。

関連するQ&A

  • 複数のセルの引数を絶対参照にする方法

    エクセル2010を使っています。 複数のセルの最初の引数を一度に絶対参照にしたいです。 やりたいことを、添付した図で具体的に説明します。 この図には、frame1,frame2,frame3,の3つの基本の表(A列からD列の部分)があります。 また、frameX(I列からL列の部分)もあります。 今、作業は、E列からH列で行なっています。 まず、 F3には、=IF(J3=0,0,B3) G3には、=IF(K3=0,0,C3) ・・・ H7には、=IF(L7=0,0,D7) という関数を入れました。 この後、E1からH7を、コピー貼り付けして、 frame3-2までを完成したいです。 ですが、このままですと、frame2-2も、frame3-2も、それぞれの5行3列の値は全て0になってしまいます。 そこで、 F3には、=IF($J$3=0,0,B3) G3には、=IF($K$3=0,0,C3) ・・・ H7には、=IF($L$7=0,0,D7) と、5行3列に入れた(15個のセルの)、最初の引数を絶対参照にしたいです。 (実際の表は37行45列で、frameの数が200あります。) 複数のセルに入っている、最初の引数を一度に絶対参照にする方法はあるのでしょうか? よろしくお願いします。

  • Wordの表(セルの結合あり。)に貼り付けると、左右凸凹に貼り付く

    質問自体は、実際に見れば簡単なことなんですが、 言葉で書くので煩わしくなってしまいます。 Wordで作っている文章の中に表があります。 ただし、その表は単純な表ではなくて、 セルの分割や結合が行われています。 表自体は長方形をしていますが、セルの結合によって、行によりセルの数が違います。 詳しく書くと、 表は4列で、 列をエクセルのように假に左からA、B、C、Dとすると、 D列はどの行も結合されていません。 1行目は、A1・B1・C1が結合されている状態。 2行目と3行目は、A2とA3が結合されていて、 B2とC2、B3とC3が結合されている。 4・5・6行目は、A4・A5・A6が結合されていて、 B4・C4が結合、B5・B6が結合。 7行目は、(1行目と同じく)A7・B7・C7が結合。 (多分、表を作るときは分割も使ったと思いますが、 説明が面倒になるので、分割という言葉は使いませんでした。) さて、結合がされていないD列に、 エクセルのある列のデータを貼り付けたいと思います。 貼り付けたいデータをコピーして、 上記のWordの表のD列を選んで貼り付けます。 すると、意図に反して、うまくD列に貼り付きません。 どの行でも、必ず、左から2つめのセルに貼り付いてしまいます。 上記のようにセルの結合が行われているために、 左右に凸凹に貼り付いてしまいます。 例えば、 3列になっている2行目や3行目は、結合されている (左から)2つめのセル(B2・C2、B3・C3)に、 4列になっている5行目や6行目は2つめのセル(B列)に貼り付いてしまいます。 このように、行のセルの数にしたがって凸凹に貼りつくのではなく、 行のセルの数にかかわらず縦一直線に貼り付けたいのですが、 どうすればよいでしょうか。 Wordは2000

  • excelのセルの並べ替え。

    Excelの操作で迷っています。詳しい方の知恵を拝借できたらと思います。 以下のようにデータの入力されたセルが並んでいます(アルファベット1文字が1セルです)。 A B C D E F G H I J K 横に何セル並んでいるかは、行によってまちまちです。このようなデータが、数千行あります。これを、以下のように1列に並べ替えたいのです。 A B C D E F G 「行列を入れ替えてコピー」ではなかなかに大変なので、何か良い方法を探しています。よろしくお願いいたします

  • エクセルの表から抽出

    エクセルについて教えてください。 表の列と行を指定して(セル番地と言う意味ではないです。)一致しているセルの文字列を表示したいのですが方法がわかりません。   1 2 3 4 A あ か さ た B い き し ち C う く す つ D え け せ て E お こ そ と 上記のような表で2-Bなら「き」と表示させたいのです。 分かりにくいかも知れませんが 宜しくお願いします。

  • エクセルで空白セルを寄せたい

    エクセル2002使用です VBAは使わずに関数だけで空白セルがあるセルを詰めて表示したいのですが・・・   A|B|C|D|E|F|G 1 あ い う え お か き 2 ○   ○ ○   ○ の表を   A|B|C|D|E|F|G 1 あ う え か  2 ○ ○ ○ ○ のように表を書き換えたいのです。 1行目には必ず文字が入力されています。 2行目には入力されているセルと空白セルが不定期に入力されています。 2行目のセルが空白ならば、1行目のセルも削除して左へ詰めて 表を転記したいのです。 よろしくお願いします。

  • セル内で変化する値の最大値、最小値を抜きだす。

     初めまして、よろしくお願いします。  セル内でランダムに変化させる値の最大値と最小値を抜き出すマクロを教えていただきたいと思います。  セルD10からD20まで、セルおのおのランダムに変化させていきます。そのセルごとで、表示された最大値の値をF10からF20に、最小値をH10からH20へ抜き出していきたいと思います。 セルが変化した場合に実行する Private Sub Worksheet_Change(ByVal Target As Range) を使用し、FやHの数値と比べて、最大値、最小値の条件が合えばコピーして抜き出すやり方だと思います。他のやり方が有れば、他の方法でもかまいません。  他のセルには他のデーターが入っています。  当方初心者ですので、応用が利くように説明していただければありがたいと思います。(おのおの変化するセルがD10からD30へ範囲の拡大した場合の説明。位置がD列からE列、F列列からG列、H列からJ列へと変化した場合の説明、セルD10からD20まで、D列ですが、ランダムに変化するセルがI10からR10の行へ、同様に抜き出す最大値がI15からR15行へ、最小値がI18からR18へ、列から行へ、変化できるような説明)  解る方、よろしくお願いします。

  • エクセルで予定表を管理。

    たとえば、下のような(1)の表を元に、別のシートの(2)のカレンダーの日付と、 1)の日付と担当者が、一致したセルへ、”開始”という文字をを自動で入れる事はできるのでしょうか? また表示後にも、”開始”が目立つようにセルに色が入ると見やすいのですが・・・。 こういった場合は、どうしたらいいのでしょうか?良い知恵をお願い致します。 よろしくお願いいたします。m(_ _)m (1)      A 列    B 列     E列  1    日付   担当者     開始 2   2007/6/7  あ 3   2007/6/1  い 4   2007/6/10  う (2)カレンダー    A列  B  C  D... G  H  I  J  K 1行 担当者 6/1 6/2 6/3,,,6/6 6/7 6/8 6/9 6/10........ 2行  あ             開始 3行  い  開始 4行  う                      開始

  • エクセル セルの複数削除がしたい。

    使用しているオフィスは、WORD2003になります。 例えばセルの 1行目のB列~G列まで 2行目のB列~G列まで のそれぞれのセルに文字が入っているとします。 1行目の文字を一括で消したい場合、 1行目のB列~G列までのセルをマウスで選択して、 バックスペースやデリートキー(以下:削除キー)を押せば、 通常一行目のB列~G列に入っている文字は、通常全て削除されると思います。 所が、設定を変更した覚えはないのですが、 セルをB列~G列まで選択して削除キーを押した時、 選択されている状態のまま、文字は削除されず、B列のみが直接入力?する形になってしまいます。 多分、オプション設定等で調整する事が出来るものだと思っているのですが、それらしき項目がなくて解らない状態です。 ※行ごと削除したり他にもやり方はあると思いますが、セルを複数選択して、その選択したセルに入力してある文字を、削除したいのです。 上手く伝わっているでしょうか・・・ ご存じの方がいれば教えて頂けないでしょうか。 よろしくお願いします。

  • エクセルVBAで、一部のセルの結合をしたい

    エクセルの表で、同じ内容の行を結合したいのですが、一か所の列のみ結合をせずそのままにしておく必要があります。どなたかVBAを教えていただけないでしょうか? イメージとしては次のようになります。 a b c d e 1 g a b c d e 2 g a b c d e 3 g これを下記のようにしたい a b c d e 1 g       2       3 社内システムに入力されているデータをCSVにて抽出しそれをエクセルで加工しているのですが、 aを物件番号とするとb~e,gは物件1件につき一個の項目が入っているのに対し、数字の部分のみ1件につき複数の内容が選択されているのです。そのため、データを抽出すると数字のセル部分以外もすべての行でデータが落ちてくるのです。 そこで、見やすくするために、1~3の内容以外の部分はセルを結合させたいのです。 ここでは3行にしていますが、1行のときもあれば7行くらいになっていることもあります。 列はすべて同じ数になりますが現段階では何列か覚えておりません。すみません。 説明が下手で申し訳ないのですが、わかっていただけるでしょうか? 私はVBAを習い始めたばかりでまったくわからず、自分で作成することができませんでした。ネットで探したものをコピペしてみたりしたのですが、どうもうまくいかず・・・ でもなんとかしたいのです! みなさんのお力をお借りしたいと思います。よろしくお願いします。

  • Excelで最大値の求め方

    Excelで、A列とB列の4行目までに下記のように数値が入っています。 A列の最大値はA5セルに =MAX(A1:A4) と入力すれば求められます。 さらにB5セルに「A列最大値の行のB列の数値」を出力するにはどうすればよいのでしょうか?この例ではB5セルは1となります。 5 3 2 8 6 1 4 2 ご存知の方、教えてください。 よろしくお願いします。

専門家に質問してみよう