• ベストアンサー

excel small関数とif関数の組み合わせ

エクセル2010を使っています。言語環境は英語です。 a1:a14がaのときに対応するb1:b14の数字を小さいほうから並べたいと考えています。 ほかの質問箱で 1.if文で条件を与えて一致したデータを小さな順に並べたい {=SMALL(IF(J44:J48=3,I44:I48),5)} という式があたのですが、それを当てはめても望みの数字を出してくれません。{}を入れるとそもそも式として認識してくれないのですが、どのようにしたら式を作ることができるでしょうか?わかる方が降りましたら、よろしくお願いいたします。

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

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

数式を書き込む際に,ご自分で{ }を書き足しては「いけません」。 発見した回答にキチンを目を通せば,「コントロールキーとシフトキーを押しながらEnterで入力する」という注意書きが添えられていたと思います。 そのように操作することで,前後に{ }が自動で取り付き,配列計算という少し特殊な計算をしてくれます。 また,数式を下向けにコピーして並べて使うためには,$付きのセル参照を上手に使わないといけません。 以上の注意を踏まえて =SMALL(IF(A$1:A$14="a",B$1:B$14),ROW(A1)) という数式を記入し,コントロールキーとシフトキーを押しながらEnterで入力し,下向けにコピーします。 #実際には =IFERROR(SMALL(IF(A$1:A$14="a",B$1:B$14),ROW(A1)),"") という数式をCtrl+Shift+Enterして下向けにコピーしておくと良いでしょう。

shallowsou
質問者

お礼

ありがとうございます。配列関数についてはまったく知らなかったので、助けになりました。二人の方が答えてくださいましたが、両方とも優劣をつけがたい答えでしたので、最初に答えていただいたkeithinさんをベストアンサーに選ばせていただきました。ありがとうございました。

その他の回答 (1)

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

一例です。 {}は文字入力ではなく、shift+ctrl+enterキーを同時押下します。(配列数式と言います) 以下の数式を任意セルに入力、入力完了時に前述操作を行い、下方向にコピーでお試しください。 =IF(COUNTIF($A$1:$A$14,"a")>=ROW(A1),SMALL(IF($A$1:$A$14="a",$B$1:$B$14),ROW(A1)),"")

shallowsou
質問者

お礼

発見した答えは配列数式を知っていることを前提で話としていましたので、助かりました。二人の方に答えを作っていただいたのですが、優劣がつけがたく、助かりました。最初に答えていただいた方をベストアンサーに選びましたが、mu2011さんにも時間をとって答えていただき、うれしく思っています。ありがとうございました。

関連するQ&A

専門家に質問してみよう