【最大10000ポイント】当たる!!質問投稿キャンペーン!

エクセルのMAX関数についてご質問します。例えば、
A1セルに$B$1:$B20の文字列が入っているとします。
普通にMAX関数を使う時は引数を=MAX($B$1:$B20)と直接入力しますが、=MAX(A1セルの値($B$1:$B20))としてMAX関数の引数をあるセルの値の内容にしたいのですが、その方法を教えてください。困ってます。宜しくお願いします!!

A 回答 (2件)

=MAX(INDIRECT(A1))



で良いと思いますがいかがでしょうか。
    • good
    • 0
この回答へのお礼

すばやいご回答ありがとうございます。こうするのですね!困っていたので嬉しいです。本当にありがとうございました。

お礼日時:2003/05/14 01:25

複数セルに対して、複数セル(例 $B$1:$B$10)を範囲指定した上で、メニューで「挿入」-「名前」-「定義」-名前の文字列を入力(例 最大範囲)と名付け、=MAX(最大範囲)とするとB1:B10の最大値が求まります。


C1に「最大範囲」と言う文字を入力し、A1セルに=MAX(INDIRECT(C1))とすると、B1:B10の最大値が求まります。
これなども参考になりませんか。
範囲をもっと相対化・自由化したい場合は、VBEの標準モジュールに下記を貼りつけ
Sub test01()
Cells(1, "A") = WorksheetFunction.Max(Selection)
End Sub
シート上の範囲をマウスで指定した上で、上記モジュールを実行する(VBE画面でF5キーを押す)と、A1セルに範囲内の最大値がセットされます。
    • good
    • 0
この回答へのお礼

お返事遅くなりました。
詳しくご回答いただきありがとうございました。

お礼日時:2003/05/30 02:12

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QMAXIFはどうすればいい?

AVERAGEIFはありますが、maxでほしいのです。どうやって作れますか?

詳細:
B列が「あ」のデータだけ抜き出し、A列のmax値を得たいのです。
A    B
1   あ
2   い
4   あ
8   え
15  い
この例ではmax値は4です。

Aベストアンサー

>MAXIFはどうすればいい?
MAX関数の括弧内(配列)を前処理しなければなりません。
前処理の数式=(B1:B5="あ")*A1:A5
従って、=MAX(B1:B5="あ")*A1:A5 → MAX({1;0;4;0;0}) → 4
Excelでは計算結果を配列で返すことを要する数式を入力時にCtrlとShiftを押しながらEnterキーを打鍵することになっています。
確定した状態を数式バーで見ると{=MAX(B1:B5="あ")*A1:A5}のように数式を大括弧で括られています。

SUMPRODUCT関数の引数としてMAX関数の返り値を設定するとEnterキーで確定しても目的通りの値が返ります。
=SUMPRODUCT(MAX((B1:B5="あ")*A1:A5))
どのような数式を使っても結果が目的に合えば良いのでお好きな方法で解決してください。

Qエクセルで別シートからの最大値の反映

エクセルで別のシートの数個のセルの数値の中から最大(最小)の値を選んで入力するにはどうしたらいいですか?

Aベストアンサー

同じブックの別シートなら、
最大では、

=MAX(Sheet1!A1:A10)

のように、

=MAX(シート名!参照するセル範囲)

と指定してください。

最小なら、MAXをMINに変更するだけです。

Qシート参照で変数を使いたい(EXCEL)

通常、Excelで別シートのセルを参照する時は「'シート名'!B3」といった数式になりますが、この「シート名」をユーザーに入力してもらうような仕組みを作りたいと考えています。

・あるシートのA3(例)にシート名を入力すると、B4セルに入力されたシートのB3セルの内容が表示される

このようなこと、可能でしょうか?

Aベストアンサー

INDIRECT関数を使うといいでしょう。

セルA1に入力されたシート名の、セルB3を参照する場合

   =INDIRECT(A1& "!B3")


また上記ではセルB3が固定になってますが、
セルA1 に参照したい【シート名】をいれ
セルA2 に参照したい【セル番地】まで入れておくと
なお、使い勝手がよくなるかも知れませんね。

   =INDIRECT(A1& "!" & A2)
 
 
 

QExcelで最大値の入っている数値の右側にある項目名を拾いたい。

Excelで最大値の入っている数値の右側にある項目名を拾いたい。

下のようなデータがあります。(A列は年、Bは何かの生産量・・とします)

1 2000 7
2 2001 11
3 2002 14
4 2003 10
5 2004 9
6 2005 8

生産量(B列)の最大値を求めるのは=MAX(B1:B7)で"14"が得られると思いますが、求めているのは"14"の入っている年の"2002"という数字を隣のC1に入れたいと思います。
どのような関数が必要でしょうか?

Aベストアンサー

こんばんは!
一例です。

↓の画像でC2セルに表示するようになりますが・・・

C2セルの数式は
=INDEX($A$2:$A$1000,MATCH(MAX(B2:B1000),B2:B1000,0))
にしています。
(エラー処理はしていません)
A列の1000行目まで対応できるようにしていますが、
データ量によって範囲指定の領域はアレンジしてみてください。

以上、参考になれば幸いです。m(__)m

Q最大値のあるセルの行番号のみを求めたいです。

エクセル2000を使用しています。
OSはXP HOMEです。
よろしくお願いします。

下のようになっているとします。
そこで二つの質問をさせていただきます。



    A        B    C
1    13
2    10
3    64
4    50
5    12

B5にA1:A5の最大値の行番号を表示させるには関数を用いてどのようにあらわせばよいでしょうか?
※上記の例ですとB5には「3」が表示されるはずです。

また、C5にはA1:A5の最大値が示されているセルの行番号からどれだけ隔たりがあるかを表示させたいと思います。
※上記の例ですとC5の行番号は「5」最大値のセルはA3ですので、行番号は「3」。
「5-3=2」となりC5には2が表示されるはずです。


お分かりの方がいらっしゃいましたらお願い申し上げます。

Aベストアンサー

B5の式は
=MATCH(MAX(A1:A5),A1:A5,0)
でしょうね。

QエクセルのIF関数で、文字が入力されていたならば~

エクセルのIF関数で文字が入力されていたならば~、という論理式を組み立てたいと思っています。

=IF(A1="『どんな文字でも』","",+B1-C1)

A1セルに『どんな文字でも』入っていたならば、空白に。
文字が入っていなければB1セルからC1セルを引く、という状態です。

この『どんな文字でも』の部分に何を入れればいいのか教えてください。

またIF関数以外でも同様のことができれば構いません。

宜しくお願いします。

Aベストアンサー

=IF(ISTEXT(A1),"",B1-C1)

でどうでしょうか?

Qエクセルで、条件に一致した行を別のセルに抜き出す方法

エクセルで、指定した条件に一致するセルを含む行をすべて抜き出す方法が知りたいです。

たとえば、

<A列> <B列> <C列>
7/1 りんご 100円
7/2 ぶどう 200円
7/2 すいか 300円
7/3 みかん 100円

このような表があって、100円を含む行をそのままの形で、
別のセル(同じシート内)に抜き出したいのですが。

7/1 りんご 100円
7/3 みかん 100円

抽出するだけならオートフィルターでもできますが、
抽出結果を自動的に、別の場所に、常に表示させておきたいのです。

初歩的な質問だと思いますが、検索しても分からなかったので、よろしくお願いします。

Aベストアンサー

同じ質問が結構よく出てますが、そんなに初歩的でもありません
別シートのA1セルに「100円」と入力し、そのシートの任意のセルに以下の式を貼り付けて下さい。後は、下方向、右方向にコピー。
日付のセル書式は「日付」形式に再設定してください

=IF(COUNTIF(Sheet1!$C:$C,$A$1)>=ROW(A1),INDEX(Sheet1!A:A,LARGE(INDEX((Sheet1!$C$1:$C$500=$A$1)*ROW(Sheet1!$C$1:$C$500),),COUNTIF(Sheet1!$C:$C,$A$1)-ROW(A1)+1)),"")

データ範囲は500行までとしていますが、必要に応じて変更して下さい

QE列のセルに数値が入れば(空白でなければ)B列の同じ行のセルに色がつく

E列のセルに数値が入れば(空白でなければ)B列の同じ行のセルに色がつくようにしたい。

エクセル2007です。
条件付き書式で、数値を入れたセル自体に色をつけることはできたのですが他の列を参照することができませんでした。

どうやって設定すればいいでしょうか。

Aベストアンサー

B1セルの条件付書式で、条件を
「数式が」「=ISBLANK(E1)=FALSE」
とすればよいです。

QINDIRECT関数 エラーになる

Sheet1とSheet2があり、
Sheet1のA1には「tset」という値が入っています。

そこで、Sheet2の任意のセルに
Sheet1のA1の値を入れたいのですが
「=Sheet1!A1」なら可能なのに
Sheet2のA1に「Sheet1」と入力し
Sheet2のA2に「=INDIRECT(A1)!A1」とするとエラーになります。

このような場合は、INDIRECT関数を使えばいいと知ったのですが
何が間違っていますか?

Aベストアンサー

INDIRECT 関数の仕様では、参考 URL にあるとおり、文字列を引数とします。「セル参照」あるいは「セル範囲に付けられている名前」を表す文字列(参照文字列)を引数として指定しますが、代わりにセル参照を指定した場合は、参照元の文字列を関数が受け取ってきます。シート名のみを引数とする方法は、ありません。


○ =a1
○ =sheet1!a1

○ =indirect(a1)       …… A1 セルに「a2」などの有効な参照文字列が記入されている場合のみ
○ =indirect("a1")      ……「=a1」と同じ意味
× =indirect(sheet1)     ……エラー「#NAME?」
× =indirect("sheet1")    ……シート名を含む参照文字列が未完成のため、エラー「#REF!」
○ =indirect("sheet1!"&a1)  …… Sheet2 の A1 セルに「a2」などの有効な参照文字列が記入されている場合のみ
○ =indirect("sheet1!"&"a1") ……「=sheet1!a1」と同じ意味
○ =indirect("sheet1!a1")   ……「=sheet1!a1」と同じ意味

○ =a1!a1           …… Excel のサービス機能により「a1」が「'a1'」に自動変換されるため、「a1」という名前のシートが存在する場合のみオッケー
△ =a1&"!"&a1         ……一応エラーにはならないが、期待とは全く異なる結果(結合された文字列)を返す
△ =INDIRECT(A1)&"!"&A1    …… A1 セルに「a2」などの有効な参照文字列が記入されている場合のみ一応エラーにはならないが、期待とは全く異なる結果(結合された文字列)を返す
△ =INDIRECT("A1")&"!"&A1   ……一応エラーにはならないが、期待とは全く異なる結果(結合された文字列)を返す
× =INDIRECT("A1!")&A1    ……シート名を含む参照文字列が未完成のため、エラー「#REF!」
× =INDIRECT(A1)!A1      ……「&」と「"」がないため、数式の入力がそもそも受け付けられない
× =sheet1!indirect("a1")   ……数式の入力がそもそも受け付けられない

○ =indirect(a1&"!"&a1)    …… A1 セルに「a2」などの有効な参照文字列が記入されており、かつ、「a2」などの名前のシートが存在する場合のみ
○ =indirect(b1&"!"&a1)    …… B1 セルに「sheet1」など、A1 セルに「a2」などの有効な参照文字列が記入されている場合のみ
○ =indirect(a1&"!a1")    …… A1 セルに「sheet1」などの有効な参照文字列が記入されている場合のみ

× =indirect(合計)     ……エラー「#NAME?」または「#REF!」
○ =indirect("合計")     ……「合計」という名前が付けられたセルが存在する場合のみ


INDIRECT では、正しいセル参照になる文字列でありさえすれば、自由に文字列をつなげて作ることができます。

●=indirect(c1&d1)
●=indirect("sheet1!"&c1&d1)
●=indirect(a1&b1&"!e1")
●=indirect(a1&"!"&c1)
●=indirect("合計")

参考URL:http://office.microsoft.com/ja-jp/excel-help/HP005209139.aspx

INDIRECT 関数の仕様では、参考 URL にあるとおり、文字列を引数とします。「セル参照」あるいは「セル範囲に付けられている名前」を表す文字列(参照文字列)を引数として指定しますが、代わりにセル参照を指定した場合は、参照元の文字列を関数が受け取ってきます。シート名のみを引数とする方法は、ありません。


○ =a1
○ =sheet1!a1

○ =indirect(a1)       …… A1 セルに「a2」などの有効な参照文字列が記入されている場合のみ
○ =indirect("a1")      ……「=a1」と同じ意味
× =indirect(sh...続きを読む

QSub ***( ) と Private Sub ***( ) の違い

初歩的な質問で申し訳ありませんが・・・

自分でコードを書いていても、イベントが発生したりした時の処理で、コードのウィンドウで上のドロップダウンリストで選択できる時の処理などは自動的に[Private Sub Command1_Click( )]などと出てくるのでそのまま使っています。自分で別途プロシージャーを作成する時は[Sub ****( )]としています。
ですがその違いを理解しないまま、自分で作成する時は[Private Sub]ではなくて[Sub]を使っています。

Sub ***( ) と Private Sub ***( ) の違いは何なんでしょうか?
どなたか説明頂けませんか?
よろしくお願いします。

Aベストアンサー

「Sub」の部分にカーソルを置いて[F1]を押せばヘルプが起動します。
「指定項目」のところに「Public」と「Private」の説明がありますよ。
省略して「Sub hogehoge()」とした場合は「Public」とみなされます。

Publicは「すべてのモジュールから呼び出せるプロシージャ」ということになります。
Privateとすると「同じモジュールの中からしか呼び出せないプロシージャ」となります。

もしExcelをお持ちでしたらExcelのVBEで標準モジュールを追加し、「Sub Test1()」と「Private Sub Test2()」を作成してみてください。
そしてExcelの[ツール]-[マクロ]-[マクロ(Alt+F8)]でマクロ実行のダイアログを表示させてみるとわかります。
ここには実行できるプロシージャの一覧が表示されますが、Test1は表示されているけれどTest2は表示されません。
Test1はPublicで、Test2はPrivateだからです。


人気Q&Aランキング