- ベストアンサー
Excel 関数で上から順に数字を整列させる
Excelで、下記表(例)に入力された数字を上から順に関数を用いて隣のB列に整列させたいです。 ・例 A1:A60の表があります。 ※以下A列に入力された数字とします 1 空白 2 20 3 空白 4 15 5 25 ・(省略、この間空白と考えて下さい) ・ ・ 59 10 60 空白 上記表(例)は、A2に20,A4に15,A5に25,A59に10それ以外は空白を表します。 上記表のセル内数字は全て手入力とします。 全てのセルが空白の場合もあります。 B列はB1:B5の5行です。 この入力された数字を関数を用いて、B列に上から順にB1に20,B2に15,B3に25,B4に10,B5は空白となるように整列させたいです。 B列セル結果は他シートに参照されますのでセルはロックを掛けています。 上記のことからデータの並べ替えも使えませんし昇降順でもありません。 上から順に整列させた数字を、B1:B5の5行内で上位5まで表示させます。 A列の行数が多いのでif関数も使えません。 なお、上記質問内に不明な点がありましたら補足させて頂きます。 以上、宜しくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
一例です。 B1に以下の関数を入力、入力完了時にshift+ctrl+enterキーを同時押下し、B1セルをB5セルまでコピーして下さい。 =IF(COUNTIF($A$1:$A$60,"<>")>=ROW(A1),INDEX($A$1:$A$60,SMALL(IF($A$1:$A$60<>"",ROW($A$1:$A$60),999),ROW(A1))),"")
その他の回答 (2)
》 A列の行数が多いのでif関数も使えません その理屈が理解できません。説明してください。 A B C D 1 20 2 20 15 2 3 25 4 15 10 4 5 25 5 … … … 59 10 59 60 D1: =IF(A1="","",ROW()) 此れをズズーッと下方にセル D60 までドラッグ&ペースト B1: =IF(ISERROR(SMALL(D$1:D$60,ROW(A1))),"",INDEX(A$1:A$60,SMALL(D$1:D$60,ROW(A1)))) 此れをズズーッと下方にセル B5 までドラッグ&ペースト
お礼
早速の回答有難うございます。 ROW()関数の使い方も解らず、if関数と組み合わせる事が思い付かなかったもので、「使えません」という表現になってしまいました。 mike_gさまのをそのまま貼り付けることで、目的の値を得ることが出来ました。 今回は有難うございました。
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! 横からお邪魔します。 結果としてNo.1さんと重複してしまいますが・・・ こちらも配列数式になりますので この画面から数式をコピー&ペーストしただけではエラーになると思います。 B1セルに↓の数式を貼り付け後、F2キーを押すか、数式バー内で一度クリックします。 編集可能になりますので、Shift+Ctrl+Enterキーで確定してみてください。 数式の前後に{ }マークが入り配列数式になります。 B2セルは =IF(COUNTA($A$1:$A$60)<ROW(A1),"",INDEX($A$1:$A$60,SMALL(IF($A$1:$A$60<>"",ROW($1:$60)),ROW(A1)))) として、Shift+Ctrl+Enterキーで確定です。 これをB5セルまでオートフィルでコピーします。 今回はA列が文字列・数値どちらでも対応できるようにしましたが、 もし数値のみなら =IF(COUNT($A$1:$A$60)<ROW(A1),"",INDEX($A$1:$A$60,SMALL(IF($A$1:$A$60<>"",ROW($1:$60)),ROW(A1)))) でもOKだと思います。 以上、長々と失礼しました。m(__)m
お礼
回答有難うございます。 配列式は以前試したことがありましたが、上手く出来なかったので諦めておりました。 上記をそのまま使用させて頂こうと思います。 有難うございました。
お礼
回答有難うございます。 早速試させて頂いたところ、上手く使用することが出来ました。 今回は有難うございます。 ◎なお、今回は全て良回答ですので、回答順に評価を付けさせて頂きます。