• ベストアンサー

エクセル表

下記のような表があり、同じ人名の中で一番金額が高いデータをだしたいのです。    A列    B列    C列     1   中村   1500 2   中村   2000 3   松井   1000 4   松井   1800 5   松井   2500  6   香川   3000 7   香川   3000  8   香川   3000 C列を作業列とした場合に、2,5,8を抽出できるようにしたいのですが、C列にはどんな関数をいれればよいでしょうか。前回うまく説明できず、どうしても解決したい問題でしたので教えてもらいたいと思いました。あまり難しいことはわかりませんが、よろしくお願い致します。

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

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

これ今日(別人?)別の質問で回答したように思う。 これは配列数式という回答になると思うが、 求める答えは、質問のようにC列ではなく、何処かの空き列・行に 中村 松井 香川 を作る必要がある。 まあ配列数式は関数でも高等な部類かも知れないので、理解できないかもしれないが、質問の性格・中身がそれに適しているということだ。そしてそれ以外の解があるかな(VBAは別として) そういう質問をしているということだ。 配列数式はWEBで照会すれば解説が結構多数ある。 例データ A1:B8 中村 1500 中村 2000 松井 1000 松井 1800 松井 2500 香川 3000 香川 3000 香川 3000 ーーーー 解 中村 2000 松井 2500 中村の式は =MAX(IF($A$1:$A$10=A11,$B$1:$B$10,"")) と入れて、SHIFT,CTRL,ENTERのキーを同時押しする。 松井は式の複写。 ーー 配列数式を使わない他の回答が出るかどうか。待ってください。

igu0625
質問者

お礼

まだまだ勉強不足ですが、自分が求めたものの要求が高かったこともわかりました。今回は教えてもらったことをベースに中村、松井、香川の重複をなくした状態を作り、「=A11」の状態を相対参照させるような形で各個人の最大値をその横に表示させることにしました。(検証した結果OKそうでしたので) 二回も回答を頂きありがとうございました。自分でも勉強はしているつもりですが、また壁にあたったときには是非お願い致します。ありがとうございました。

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

その他の回答 (4)

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

#1です。さらに考えると中村などが、松井、香川などと入り混じって出てくる場合は、配列数式でということになろうが、本件は、並べ替えされて、中村は固まっているようだ。それなら関数で出来そう。 MAX-OFFSETの組み合わせ。 ーー 例データ A列   B列 中村 2500 中村 2000 松井 1000 松井 2800 松井 2500 香川 3000 香川 3000 香川 4200 ーーーーー 何処か空き列に(仮にF,G列として) F列に名前を作る F列       G列 中村 2500 松井 2800 香川 4200 G1の式は =MAX(OFFSET($B$1,MATCH(F1,$A$1:$A$100,0)-1,0,COUNTIF($A$1:$A$10,F1),1)) 式を下方向に複写。 match関数で最上行(開始行)、COUNTIFで氏名の出現回数=行数を求めている。 -- 結果 G列。

すると、全ての回答が全文表示されます。
  • wisemac21
  • ベストアンサー率39% (171/429)
回答No.4

C列に抽出ではありませんが代案で 列見出しを付ければ、データ→集計で抽出します。 name data 中村 1500 中村 2000 松井 1000 松井 1800 松井 2500 香川 3000 香川 3000 香川 3000 集計の設定でグループの基準をname、集計の方法を最大値、集計するフィールドをdataにして 現在の集計と表を置き換えるにチェック 集計行をデータの下に挿入するにチェック でOKをクリック 作成された集計のアウトラインレベルを2にするとそれぞれの最大値が表示指される。 必要とあらば、可視セルのデータのみコピーして利用できます。 中村 最大値 2000 松井 最大値 2500 香川 最大値 3000

igu0625
質問者

お礼

抽出列はさておき、こういう方法もあるのかと大変関心していました。自分でも調べてみたいと思います。本当に勉強になりました。ありがとうございます。

すると、全ての回答が全文表示されます。
noname#204879
noname#204879
回答No.3

》 あまり難しいことはわかりません 関数を一切使わない[ピボットテーブルレポート]を勉強することを奨めます。 合計を出すのが一般的だけど、平均、最大値、最小値、積、個数、標本、標準偏差、標準偏差、標本分散、分散も可能です。

すると、全ての回答が全文表示されます。
  • diashun
  • ベストアンサー率38% (94/244)
回答No.2

RANK関数でできるかと・・・   A列   B列  C列(結果)  (式) 1  中村   1500   2 (=RANK(B1,$B$1:$B$2,0) 2  中村  2000   1 (=RANK(B2,$B$1:$B$2,0)) 3  松井  1000   3 (=RANK(B3,$B$3:$B$5,0)) 4  松井   1800   2 (=RANK(B4,$B$3:$B$5,0)) 5  松井   2500   1 (=RANK(B5,$B$3:$B$5,0)) 6  香川   3000   1 (=RANK(B6,$B$6:$B$8,0)) 7  香川   3000   1 (=RANK(B7,$B$6:$B$8,0)) 8  香川   3000   1 (=RANK(B8,$B$6:$B$8,0)) 単純に、同じ名前の人ののデータが連続していることが、前提条件です。同じ名前の人の参照範囲を絶対参照(例:$B$6)にします。

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

関連するQ&A