• ベストアンサー

エクセルで最後行に入力したデーターを自動で別の(ファイル)シートの任意の場所に自動で転記できるようにしたいのですが・・。

 全くの初心者です。よろしくお願いします。 初心者にもかかわらず無謀にもエクセルで最後行に入力したデーターを自動で別の(ファイル)シートの任意の場所に自動で転記し、上下が逆になる形にしたいと思います。 例) A B C D E F 1 a aa ab ac ad 2 b ba bb bc bd 3 c ca cb cc cd 4 d da db dc dd 行4に d da db dc ddを入力すると A B C D E F E 1 2 3 d da db dc dd 4 c ca cb cc cd 5 b ba bb bc bd          6 a aa ab ac ad          別(ファイル)シートの任意の場所へ挿入する形で転記され、入力のシートとは上下が逆になる。  何かよい方法がありましたら、よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

これは難しいと思います。 たとえ回答が出ても、初心者ではその式の意味を理解できない恐れもあると思う。下記以外の回答は、出たら関数の超上級編です。 エクセルは、持ってくる先のセルで考えて、入力の都度や、入力のデータ内容によって、もって来るもとのセルが変わるようなタイプの 問題は苦手です。抜き出しなどです。この質問も、完成後のシートA3セルに来るデータのセルが、今はA4セルからですが、次ぎの段階ではA5からと動きますが、これが困難な点です ーー どういう方法をイメージしているのか、質問には銘記のこと。 (1)人手操作 (2)関数 (3)VBA (4)その他 初心者ということで(3)は対象外でしょうが、(2)などを考えているのかな。 ーー (1)に当たります。 データ入力完成後、元データに連番を振り、完成シートにコピーして、連番の逆順でソート(並べ替え)をするのが一番簡単です。 ーーー 入力最終行を捉えるには A列にA2から(A1は見出しなどの為に、あけてある) 1 2 3 4 6 7 8 123 の時、同じシートSheet1では =INDIRECT("A"&COUNT(A2:A30)+1) 別のシートSheet2なら =INDIRECT("Sheet1!A"&COUNT(Sheet1!A2:A30)+1) です。A30行より下には入力しないと仮定してます。 これを応用して Sheet2のA4から下行に並べるとして A4に =INDIRECT("Sheet1!A"&COUNT(Sheet1!$A$2:$A$30)+1-(ROW()-4)) B4に =INDIRECT("Sheet1!B"&COUNT(Sheet1!$A$2:$A$30)+1-(ROW()-4)) を入れて、下方向に式を複写する。A,B2れつの例に簡略化。 結果 123 22 8 21 7 20 6 19 4 18 3 17 2 16 1 15 0 0 #REF! #REF! ーー 問題が残っているのは 0 0 #REF! #REF! ・・ ですが、 もし現在の行番号Row()-4(-4はSheet2の第4行目からはじめているから)が、COUNT(Sheet1!$A$2:$A$30)より大きい場合は、IF関数で判断して、空白にするように式を組み立てる必要がある。 結果式  =IF(ROW()-3>COUNT(Sheet1!$A$2:$A$30),"",INDIRECT("Sheet1!A"&COUNT(Sheet1!$A$2:$A$30)+1-(ROW()-4))) と入れて、A4:A30(30行までを対象に考えているから)へ式を複写する。 B列は INDIRECT("Sheet1!B・・・に(A列の式のA->Bに)改める。 B4:B30まで式を複写。 結果データ 123 22 8 21 7 20 6 19 4 18 3 17 2 16 1 15 以下式のみで、値は空白

kei__2000
質問者

お礼

 わかりやすく解説までいただき、ありがとうございました。大変役に立ちました。

kei__2000
質問者

補足

 A列 1 2 3 4 6 7 8 123  の代わりに年月日(2007/7/14)を入力したところ、奇妙な数字(39277)がでました。これを何とかできないでしょうか、よろしくお願いします。

その他の回答 (2)

noname#204879
noname#204879
回答No.3

元データが ブック kei__2000.xls の Sheet1 にあると仮定すると、 別ブックの任意のシートの任意のセル(ここでは セル A3)に次式を入力して、此れを右方および下方に複写すればOKかと。 =IF(COUNTA([kei__2000.xls]Sheet1!$A:$A)-ROW([kei__2000.xls]Sheet1!A1)<0,"",OFFSET([kei__2000.xls]Sheet1!$A$1,COUNTA([kei__2000.xls]Sheet1!$A:$A)-ROW([kei__2000.xls]Sheet1!A1),COLUMN([kei__2000.xls]Sheet1!A1)-1))

kei__2000
質問者

お礼

 このやり方ですと、簡単に作ることができました。ありがとうございました。

kei__2000
質問者

補足

セルに年月日(2007/7/14)を入力したところ、奇妙な数字(39277)がでました。もしよろしければ、こちらも教えていただきたく、お願いいたします。

  • maron--5
  • ベストアンサー率36% (321/877)
回答No.1

◆別シートのB3の式 B3=IF(COUNTA(Sheet1!$A$4:$E$4)=5,OFFSET(Sheet1!A$4,1-ROW(A1),),"") ★右と下にコピー

kei__2000
質問者

お礼

 ありがとうございました、参考にさせていただきたいと思います。