• ベストアンサー

Excelで二つの列を足して二番目に大きい値を求め

   A   B 1  2  10 2  9  32 3 11   1 4 11   3 5 45   8 上記のような列AとBがあったとします。AとBを足したマトリクスC={12、41、12、14、53}から二番目に大きい値を求めたいのですがやり方がわかりません。作業列などはつくらずVBAを使ったユーザー定義関数でやりたいのですがマトリクスの操作の仕方が分かりません。 よろしくお願いします。

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

  • ベストアンサー
  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.4

>VBAを使ったユーザー定義関数でやりたいのですがマトリクスの操作の仕方  ⇒具体的にマトリクス操作のどういう点が不明なのかを補足して下さい。   別にマトリクス(配列と想定)にする必要があると思えないし、関数では作業列が必要と   思ってるのなら間違いで、例えば、=LARGE(INDEX(A1:A5+B1:B5,),2)の方法で抽出できますが   如何でしょうか。

one-eyed
質問者

お礼

関数のみでできるとは思いませんでした。ありがとうございます。

その他の回答 (3)

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

マクロで処理したいなら勿論構いませんが,ふつーにワークシート関数だけでも出来ます。 セルに =LARGE(A1:A5+B1:B5,2) と記入して,コントロールキーとシフトキーを押しながらEnterで入力する。

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.2

VBAは先の回答を参考にしていただくとして (余計なお世話ですが) たとえばD列に作業列(=Ax+Bx)を作れば(非表示にしていれば見えませんし) =LARGE(D:D,2) ですむことなのですが、なぜ作業列では駄目なのでしょう。

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.1

各要素(Ax+Bx)を配列に入れてソートして配列(MAX-1)でいかがですか ソートの仕方はこちらを参考に エクセル大事典 並べ替え(ソート)をマスターしよう! http://home.att.ne.jp/zeta/gen/excel/c04p41.htm Quickソート(クイックソート)による並べ替え を参考にしてください。

関連するQ&A