回答番号ANo.4です。
>F1のセルがうまく表示されません。(E1と同じになってしまいます)
それはおそらく、E1セルに数式を入力した際の入力ミスが原因かと思われます。
ANo.4では、E1セルに入力する数式を
=IF(ROWS($1:1)>COUNT(Sheet2!$A:$A),"",INDEX(
Sheet1!A:A
,MATCH(SMALL(Sheet2!$A:$A,ROWS($1:1)),Sheet2!$A:$A,0)))
と言う具合に、「INDEX(」の後に続く、Sheet1のA列を参照する様に指定している箇所を、相対参照としていますが、もしかしますと、質問者様は誤って、
=IF(ROWS($1:1)>COUNT(Sheet2!$A:$A),"",INDEX(
Sheet1!$A:$A
,MATCH(SMALL(Sheet2!$A:$A,ROWS($1:1)),Sheet2!$A:$A,0)))
と言う具合に、絶対参照にしてはおられないでしょうか?
もし、「INDEX(Sheet1!$A:$A」とされていた場合には、「INDEX(Sheet1!A:A」に戻して下さい。
そしてその上で、E1セルをコピーして、Sheet1のF1セルに貼り付けてから、Sheet1のE1~F1の範囲をコピーして、同じ列の2行目以下に貼り付けて下さい。
>難しい内容を回答頂き
ANo.4の回答では、元データが入力されているセルが削除、挿入、切り取り、貼付け、等の編集作業が行われて、セルの位置関係がずれてしまった場合も考えて、セルの位置が上下にずれた場合においても、正常に動作する様にするために、「INDEX(Sheet1!$C:$C,ROW())」等の様に、 INDEX関数とROW()の組み合わせで参照先を指定しているために、数式が長くなっております。(セルが左右にずれる場合には対応しておりません)
それから、計算処理に要するパソコンの負荷は大きくなりますが、作業列を使用せずに、関数のみで並べ替える事も、一応は可能です。
まず、E1セルに次の数式を入力して下さい。
=IF(ROWS($1:1)& gt;COUNTIF($A:$A,"*"),"",INDEX(A:A,SUMPRODUCT(ROW(INDEX($A:$A,1):INDEX($A:$A,MATCH("゛",$A:$A,-1)))* (INDEX($C:$C,1):INDEX($C:$C,MATCH("゛",$A:$A,-1))=IF(ROWS($1:1)> COUNT($C:$C),"",SMALL($C:$C,ROWS($1:1))))* (COUNTIF(OFFSET(INDEX($C:$C,1),,,ROW(INDEX($A:$A,1):INDEX($A:$A,MATCH("゛",$A:$A,-1)))),"="& amp;IF(ROWS($1:1)>COUNT($C:$C),"",SMALL($C:$C,ROWS($1:1))))=IF(ROWS($1:1)>COUNT($C:$C),ROWS($1:1)-COUNT($C:$C),ROWS($1:1)-RANK(SMALL($C:$C,ROWS($1:1)),$C:$C,1)+1)))))
次に、G1セルに次の数式を入力して下さい。
=IF(ROWS($1:1)& gt;COUNT($C:$C),"",INDEX($C:$C,SUMPRODUCT(ROW(INDEX($A:$A,1):INDEX($A:$A,MATCH("゛",$A:$A,-1)))* (INDEX($C:$C,1):INDEX($C:$C,MATCH("゛",$A:$A,-1))=SMALL($C:$C,ROWS($1:1)))* (COUNTIF(OFFSET(INDEX($C:$C,1),,,ROW(INDEX($A:$A,1):INDEX($A:$A,MATCH("゛",$A:$A,-1)))),"="& amp;SMALL($C:$C,ROWS($1:1)))=ROWS($1:1)-RANK(SMALL($C:$C,ROWS($1:1)),$C:$C,1)+1))))
次に、E1セルをコピーして、F1セルに貼り付けて下さい。
次に、E1~G1の範囲をコピーして、同じ列の2行目以下に貼り付けて下さい。
これで、日付け順位のデータを並べ替えが自動的に行われます。(こちらも、セルが上下にずれた場合でも正常に動作します)
お礼
ありがとうございます。できました。感謝です!!