グッドデザイン賞を受賞したウォーターサーバー >>

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 回答 (4件)

こんばんは!


一例です。

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

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

以上、参考になれば幸いです。m(__)m
「Excelで最大値の入っている数値の右側」の回答画像3
    • good
    • 11
この回答へのお礼

お忙しいところ、レスをつけてくださってありがとうございます。tom04さんの回答をベストアンサーに選ばせていただきました。次回からはこの方法を試してみたいと思います。

お礼日時:2010/02/04 19:57

No.3です!


たびたびすみません。

投稿した後に気づいたのですが、
最大値が複数ある場合は一番上のデータしか拾い出ししませんので
万一、複数ある場合は他の方法を考えなければならないと思います。

どうも何度も失礼しました。m(__)m
    • good
    • 4
この回答へのお礼

何度もありがとうございます。
Excelって使いながらでないと勉強できませんよね。がんばってマスターしたいと思います。

お礼日時:2010/02/04 20:02

質問タイトルの通り、拾いたい項目名が右側にあるのであれば


(つまりA列が数量、B列が年であれば)

=VLOOKUP(MAX(A1:A7),A1:B7,2,FALSE)

が使えたのですが、質問文を読むと左側に項目名があるようですね。
ということであれば以下の式でどうでしょうか。

=OFFSET(A1,MATCH(MAX(B1:B7),B1:B7,FALSE)-1,0)

以下は式の説明です。
=OFFSET(基準セル,行数,列数)
は「基準セルから行数分下、列数分右」に移動したセルの値を返します。
基準セルは、先頭行の年が入っているセル(A1)とします。
行数は、MATCH(検索値,検索範囲,[検索の型])が
「検索値が検索範囲の何番目に存在するか」
を返しますので、これを使って求めます。
実際に3行目が最大の場合、基準のA1から3行下に移動したら
4行目に移動してしまうので、MATCHで求めた値から1を引きます。
列数は、右には移動しないので0とします。

注意点としては、最大値が複数行ある場合、上の方が優先されます。
例えば2002年と2004年の生産量が全く同じ場合、2002年を返します。
    • good
    • 3
この回答へのお礼

お忙しいところ、レスをつけてくださってありがとうございます。don9don9さんの回答の前半を読んで、そうだ、VLOOKUPが使えた!と思って、右にA列をコピーして無事に拾い上げることができました。
後半を読んでなくて、ベストアンサーに選べなくてすみません・・。でも、次回はこの方法を試してみたいと思います。詳細な説明をありがとうございました。

お礼日時:2010/02/04 20:00

A列とB列のデータが逆ならば、



=VLOOKUP(MAX($A$1:$A$6),($A$1:$B$6),2,FALSE)

↑これでできると思いますが、、ダメですよね?w
    • good
    • 2
この回答へのお礼

お忙しいところレスをありがとうございます。
VLOOKUPでA列をC列にコピーして拾い上げることができました。
早々にお返事をくださいましたこと感謝申し上げます。

お礼日時:2010/02/04 20:01

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

このQ&Aを見た人はこんなQ&Aも見ています

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

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

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エクセルで条件に一致したセルの隣のセルを取得したい

下のような「得点」という名前のシートがあります。
(「田中」のセルがA1です。)

 [ 田中 ][ 10 ][ 200 ]
 [ 山田 ][ 21 ][ 150 ]
 [ 佐藤 ][ 76 ][ 250 ]
 [ 鈴木 ][ 53 ][ 350 ]

別のシートのA1セルに、「佐藤」と入力すると、

 [ 佐藤 ]

「得点」シートから「佐藤」の列を見つけて、B1、C1に

 [ 佐藤 ][ 76 ][ 250 ]

のように表示させたいのですが、B1、C1にはどのような式を書けば良いのでしょうか。
「得点」シートでは氏名が重複する事はありません。
IF文を使うと思うのですが、いまいち良く分かりませんでした。

よろしくおねがい致します。

Aベストアンサー

こんにちは!
VLOOKUP関数で対応できます。
IF関数と併用すればエラー処理が可能です。

Excel2007以降のバージョンであれば
B1セルに
=IFERROR(VLOOKUP($A1,得点!$A:$C,COLUMN(B1),0),"")
としてC1セルまでオートフィルでコピー!
そのまま下へコピーすると行が2行目以降でも対応できます。

Excel2003までの場合は
=IF($A1="","",VLOOKUP($A1,得点!$A:$C,COLUMN(B1),0))

としてみてください、m(_ _)m

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ある範囲のセルから任意の値を検索して、その隣のセルの値を取得するという関数はありますか?

Excelの関数について質問します。
ある範囲のせるを検索して、その隣のセルの値を取得するという関数を探しています。
なければユーザー定義で作りたいと思っています。
VLOOKUP関数では一番左端が検索されますが、
それをある範囲まで拡張して、
その右隣の値を取得できるようにしたいのです。
どうかお知恵をお貸しください。

Aベストアンサー

●X1セルの値を範囲A1:F200の中から探して、その右隣のセルの値を返す

 =OFFSET(A1,SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1))-1,SUMPRODUCT(COLUMN(A1:F200)*(A1:F200=X1)))

※最初のA1はワークシートの左上隅を示すものなので、検索範囲に関わらずA1固定
※SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1)) ⇒ A1:F200で値がX1と一致するセルの行番号

>その「ある範囲」の中には検索したい値が入っているセルは1つしかありません。
というのが前提です。複数のセルがHITすると関係ないセルの値が返るので、
場合によっては、IFをかぶせてCOUNTIFで確認した方が良いかもしれません。
 ex. =IF(COUNTIF(A1:F200,X1)=1,【上記数式】,"えらー")

ちなみに、VBAでやるならこんな感じになるかと。

動作の概要
 【検査範囲】から【検査値】を探し、
 最初にHITしたセルについて、右隣のセルの値を返す。
 ex. =Sample(X1,A1:F200)

'--------------------------↓ココカラ↓--------------------------
Function Sample(ByVal 検査値 As Variant,ByVal 検査範囲 As Range)
 For Each セル In 検査範囲
  If セル = 検査値 Then Exit For
 Next セル
 Sample = セル.Offset(0, 1)
End Function
'--------------------------↑ココマデ↑--------------------------

いずれもExcel2003で動作確認済。
以上ご参考まで。

●X1セルの値を範囲A1:F200の中から探して、その右隣のセルの値を返す

 =OFFSET(A1,SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1))-1,SUMPRODUCT(COLUMN(A1:F200)*(A1:F200=X1)))

※最初のA1はワークシートの左上隅を示すものなので、検索範囲に関わらずA1固定
※SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1)) ⇒ A1:F200で値がX1と一致するセルの行番号

>その「ある範囲」の中には検索したい値が入っているセルは1つしかありません。
というのが前提です。複数のセルがHITすると関係ないセルの値が返るので、
場...続きを読む

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行までとしていますが、必要に応じて変更して下さい

QエクセルのMAX関数を複数条件で

エクセルのMAX関数を下記のような複数条件をつけて
使いたいのですが、自分で式を書いてもうまくいきません。
アドバイスをよろしくお願いします。

A1に「部署名」、B1に「受注個数」、C1に「受注日」と見出しをし
(A2:C9)にデータを入力した表があるとします。
部署名には営業1部、営業2部、営業3部のいずれかが入力されていて、
受注日には6月22日と、6月23日のいずれかの入力があるとします。
この表で「営業1部」であり、「6月22日」のものである受注個数の
最大の値を返したいのです。
日付「6月22日」は別途(E2)に参照用として入力したものを使いたいです。

=MAX(IF(AND(A2:A9="営業1部",C2:C9=E2),B2:B9,""))

これではダメでしょうか。
初歩的ですみません、よろしくお願いいたします。

Aベストアンサー

DMAX関数を使うことで、可能です。
(配列数式を使う方法もありますが、他にも流用したいという要望もあるようですので
 こちらのほうがよいでしょう)

DMAX(Database,フィールド,Criteria)
http://excel.onushi.com/function/dmax.htm

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

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

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

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

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

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

宜しくお願いします。

Aベストアンサー

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

でどうでしょうか?

Qエクセルで一番大きな数字の列名を表示させいたい

■■セダン■ワゴン■スポーツ■カテゴリ
田中□1□■□1□■□□□□■
佐藤□1□■□2□■□□1□■
鈴木□1□■□2□■□□3□■
高橋□1□■□4□■□□4□■
山本□1□■□3□■□□1□■


エクセルでこんな感じの表があります。
カテゴリの列に、一番大きな数字の列名(セダン・ワゴン・スポーツ)を
表示させたいのですが、どのようにすればいいのでしょうか?

EX佐藤→ワゴン、鈴木→スポーツ、山本→ワゴン

それから同数のものがある場合には、(田中、高橋)の場合には、同数と
表示させたく思っています。また数字がはいったセルには、データがない
場合があります。

以上よろしくお願いいたします。

Aベストアンサー

A1から表が作ってあるとして、カテゴリはD列ですから同率一位を考
慮しなければ
D2: =INDEX($B$1:$D$1, 1,MATCH(MAX(B2:D2),B2:D2,0))
でいいんです。match関数とindex関数の組み合わせは表の検索で頻繁
に使いますから、憶えとくと便利ですよ。

で、「同数」の処理ですが、「最大値に一致するセルの個数が1を超
えたら」ですから、
D2 : =IF(COUNTIF(B2:D2,MAX(B2:D2))>1,"同数",INDEX(以下同文))
のように拡張します。

QEXCELで行内最小値を検索し、その最小値の入っているセルの同じ列の"1"行の値を返したいのですが。。。

EXCELに疎いので、わかる方がいたら教えてください。

行いたいことは以下の通りです。
1: EXCELの各行で最小値を検索します。 
  (値自体はMIN関数で検索できるのですが。。。)
2: 各行において、その最小値の入っているセルの一つ上のセルの値を
  返す。

わかりにくいと思うので、例をのせておきます。

*|ABCDEF
-----------
1|*35478
2|*41269
3|*75926
4|*24653
5|*31428
(*は空欄を表します。)

という行列があったときに、2行め以降に対し、最小値を検索(2行目であれば、1)し、
そのセルの1行目の値(2行目であれば、"1C"の値である5)を返すということを行いたいのです。。。
上の行列を例にすると以下のようなA列の値を返したいのですが。

*|ABCDEF
-----------
1|*35478
2|541269
3|775926
4|324653
5|531428
(*は空欄を表します。)

別のシートを利用するなど、複雑な方法になってしまっても良いので、
何か知恵のある方がいらっしゃいましたら、よろしくお願い致します。

EXCELに疎いので、わかる方がいたら教えてください。

行いたいことは以下の通りです。
1: EXCELの各行で最小値を検索します。 
  (値自体はMIN関数で検索できるのですが。。。)
2: 各行において、その最小値の入っているセルの一つ上のセルの値を
  返す。

わかりにくいと思うので、例をのせておきます。

*|ABCDEF
-----------
1|*35478
2|*41269
3|*75926
4|*24653
5|*31428
(*は空欄を表します。)

という行列があ...続きを読む

Aベストアンサー

A2: =INDEX(B$1:F$1,,MATCH(MIN(B2:F2),B2:F2,0))

QExcel 表から値をさがして隣のセルの値を返す

お願いします、教えて下さい。
VLOOKUPのようにいまから左端に番号などを入れる手間無く、値を返したいです。

一つの目のbook     2つ目のbook
 A列  B列      A列   B列
顧客   担当    木下麻衣
小野博美 佐藤          ↑
田中香織 吉岡       ここに関数を入れて、B列の金田を返す
木下麻衣 金田   

同シート上で表をふたつ作っても構いません、どなたか教えて下さい。 

Aベストアンサー

質問者さんの意図にあっているかどうかわかりませんが。

内容を見る限りでは2つ目のbookのA列が検索値に
なるようでしたら、

=VLOOKUP(A1,Sheet1!A1:B5,2)

では如何でしょうか?
1つ目のbookをsheet1、2つ目のbookをsheet2で考えてます。
また、左上よりA1としてますので確認ください。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング