- 締切済み
この関数どうでしょう??
入力用のX6~X75に空欄を含むデータが入っています。 それを出力用のD6~D50に空欄以外のデータを上から順番に表示させたくてネットでいろいろ調べてD6に試しに入力したのですが、 なぜか入力用のX16が出力します。 それ以下は順番に表示されましたが・・・。 エクセル素人なので下の関数の意味を教えてほしいです。 X6の数字を1や11に変えたりするとX11のデータやX21のデータが出ましたが全く分かりませんでした。 よろしくお願いします。 この関数をうまく改造すれば入力用X列を出力用D列に 入力用Y列を出力用E列 入力用Z列を出力用G列 入力用AA列を出力用I列 にできますか?? =IF(COUNTIF(入力用!$X$6:$X$75,"<>")>ROW()-6,INDEX(入力用!$X$6:$X$75,SMALL(IF(入力用!$X$6:$X$75<>"",ROW(入力用! $X$6:$X$75),99999),ROW())),"")
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- MackyNo1
- ベストアンサー率53% (1521/2850)
計算式を説明すると、 IF(入力用!$X$6:$X$75<>"",ROW(入力用!$X$6:$X$75),99999) 上記の式は、入力用!$X$6:$X$75が空白でなければその行数を、それ以外(空白セル)の場合は99999(データ範囲の数字より大きい数)の配列を取得する数式です。 SMALL(上記の数式,ROW())) 上記の数式に誤りがあります。 この数式は上記の配列(該当データの行と空白セルの十分大きな数字)を小さい順に求めていますが、引数がROW()では入力する行によって返す値が1から始まりませんの正しい値を返さないことになります。 すなわち、この部分の明示的にROW(A1)とすれば、どのセル(行)に入力してもよいことになります。 INDEX(入力用!$X$6:$X$75,上記の数式で得られた行番号) この数式は、入力用!$X$6:$X$75から該当データを順に表示させる数式になります。 IF(COUNTIF(入力用!$X$6:$X$75,"<>")>ROW()-6,上記の数式,"") 最後に該当データがない場合は空白表示させるための数式です。 すなわち、対象範囲(入力用!$X$6:$X$75)の空白以外のセルをカウントし、その数が表示項目を数を超える場合は空白表示するための数式です。 この数式も以下のようにすればどのセルに入力しても行番号の補正を行うことなく同じ数式で表示することが可能です。 IF(COUNTIF(入力用!$X$6:$X$75,"<>")>=ROW(A1),上記の数式,"")