• 締切済み

エクセル2010 範囲の中から数値を探し、並べ換え

エクセル2010を使っています。 AO3からAO150~AX3からAX150までにランダムな数字が並んでいます。 その数字を若い順に抜き出しAZ3セルの行方向に表示させたいと思います。 また、BAセルにはAZセルに抜き出したものから、0と1を除いたものを表示させたいと思います。 これを関数で教えて頂けませんか? 詳しい方、よろしくお願いいたします。

みんなの回答

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.2

 -1の様な負の数値や、1.5の様な小数点以下の桁数がある数値(特に0よりも大きく1よりは小さい数値)もあるものとします。  その場合、まず、AZ3セルには次の関数を入力して下さい。 =IF(ROWS($3:3)>COUNT($AO$3:$AX$150),"",SMALL($AO$3:$AX$150,ROWS($3:3)))  次に、BA3セルには次の関数を入力して下さい。 =IF(ROWS($3:3)>COUNT($AO$3:$AX$150)-COUNTIF($AO$3:$AX$150,0)-COUNTIF($AO$3:$AX$150,1),"",SMALL($AO$3:$AX$150,ROWS($3:3)+COUNTIF($AO$3:$AX$150,0)*(ROWS($3:3)>COUNTIF($AO$3:$AX$150,"<0"))+COUNTIF($AO$3:$AX$150,1)*(ROWS($3:3)>COUNTIF($AO$3:$AX$150,"<1")-COUNTIF($AO$3:$AX$150,0))))  次に、AZ3~BAの範囲をまとめてコピーして、AZ4~BA1482の範囲にコピーして下さい。  以上です。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんにちは! 一例です。 AZ3セルに =IFERROR(SMALL(AO$3:AX$150,ROW(A1)),"") BA3セルに =IFERROR(INDEX(AZ$1:AZ$2000,SMALL(IF((AZ$1:AZ$2000<>0)*(AZ$1:AZ$2000<>1),ROW(AZ$1:AZ$2000)),ROW(A1))),"") BA3セルは配列数式になりますので、Shift+Ctrl+Enterで確定! この画面からコピー&ペーストする場合は上記数式をドラッグ&コピー → BA3セルを選択 → 数式バー内に貼り付け → そのまま(編集可能なまま)Shift+Ctrlキーを押しながらEnterキーで確定! 数式の前後に{ }マークが入り配列数式になります。 両セルをオートフィルで下へコピーしてみてください。m(_ _)m

関連するQ&A