回答番号ANo.2です。
>上記の表をいくつもつくるだけで
上の表ではA2セルに「1日」と入力されているのに対し、2番目の表のA2セルには「4日」と入力されている事から考えますと、上の表と2番目の表の並び方は、
A列 B列 C列 D列 E列 F列 G列 H列 I列 J列
1行目 a c e g i b d h f
2行目 1日 ノ ケ リ ム ラ チ セ ロ レ
3行目(空欄)
4行目 n h a k x b d h f
5行目 4日 110 120 140 ム ラ チ セ ロ レ
という様な形で、一つのシート状に複数の表が並んでいるのではなく、
例えば、Sheet3には、
A列 B列 C列 D列 E列 F列 G列 H列 I列 J列
1行目 a c e g i b d h f
2行目 1日 ノ ケ リ ム ラ チ セ ロ レ
Sheet4には、
A列 B列 C列 D列 E列 F列 G列 H列 I列 J列
1行目 n h a k x b d h f
2行目 4日 110 120 140 ム ラ チ セ ロ レ
という具合に、複数のシート上に、各々1枚ずつの表が存在していると考えて宜しいのでしょうか?
もしそうだとしますと、次の様な方法があります。
今仮に、適当な空きシート(ここでは仮にSheet2)に作業列を設けておき、Sheet1に並べ替えた結果を表示させるものとします。
まず、Sheet2のB列に
1行目 Sheet3
2行目 Sheet4
3行目 Sheet5
4行目 Sheet6
という具合に、元データの表が存在している各Sheetのシート名を、全て入力して下さい。
尚この時、シート名「Sheet1(2)」やシート名「1」の様に、そのSheetを参照する関数を作った際に、「'Sheet1(2)'!」や「'1'!」という具合に、シート名が「' '」で括られる様になるシート名を入力する際には、
="'Sheet1(2)'"
="'1'"
という具合に、シート名を「="' '"」で括った形で入力して下さい。(参照した際に「' '」で括られないSheetに関しては、単純にシート名をそのまま入力して下さい)
次に、Sheet2のC1セルに次の関数を入力して下さい。
=IF(ISERROR(INDIRECT($B1&"!A2")),"",INDIRECT($B1&"!A2"))
次に、Sheet2のD1セルに次の関数を入力して下さい。
=IF($C1="","",SUBSTITUTE(INDIRECT($B1&"!A2"),"日",)*1)
次に、Sheet2のA1セルに次の関数を入力して下さい。
=IF(ISNUMBER($D1),$D1+COUNTIF($D$1:$D1,$D1)/COUNTIF($D:$D,$D1),"")
次に、Sheet2のC1~D1の範囲をコピーして、同じ列の2行目以下に貼り付けて下さい。
次に、Sheet2のA1セルをコピーして、Sheet2のA2以下に貼り付けて下さい。
次に、Sheet1のA2セルに次の関数を入力して下さい。
=IF(ROWS($2:2)>COUNT(Sheet2!$A:$A),"",VLOOKUP(SMALL(Sheet2!$A:$A,ROWS($2:2)),Sheet2!$A:$C,3,FALSE))
次に、Sheet1のB2セルに次の関数を入力して下さい。
=IF(ROWS($2:2)>COUNT(Sheet2!$A:$A),"",IF(COUNTIF(INDIRECT(VLOOKUP(SMALL(Sheet2!$A:$A,ROWS($2:2)),Sheet2!$A:$B,2,FALSE)&"!1:1"),B$1)=0,"",HLOOKUP(B$1,INDIRECT(VLOOKUP(SMALL(Sheet2!$A:$A,ROWS($2:2)),Sheet2!$A:$B,2,FALSE)&"!1:2"),2,FALSE)))
次に、Sheet1のB2セルをコピーして、(表中の)Sheet1のB2よりも右側にあるセルに貼り付けて下さい。
次に、Sheet1の2行目で、関数が入力されている全てのセルを含むセル範囲をコピーして、Sheet1の3行目以下に貼り付けて下さい。
以上で準備は完了で、後はSheet1のB1セルから右方向に向かって、
A列 B列 C列 D列 E列 F列 G列 H列 I列 J列
1行目 a c e g i b d h f
という具合に、1行目の項目を入力しますと、並べ替えた結果が自動的に表示されます。
お礼
回答ありがとうございます。 >>2行目に入力するデータが次々に変わっていく場合にそれらのデータを次々にシート2に表示させることはマクロでなければできません。 関数を使ってシート2にデータを表示させるようにするためにはシート1で2行目だけにデータを入力するのではなく、日にちが変わるごとに下の行にデータを入力していくことが必要です。 やはりマクロが必要ですか。日にちが変わるごとにデータを入力はできれば避けたいのでマクロでやろうと思いますが、具体的にどうすれば良いのでしょうか。 マクロは同じ操作しかできないはずですが、可能なのでしょうか。