こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

 全くの初心者です。よろしくお願いします。
初心者にもかかわらず無謀にもエクセルで最後行に入力したデーターを自動で別の(ファイル)シートの任意の場所に自動で転記し、上下が逆になる形にしたいと思います。

例)
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         

別(ファイル)シートの任意の場所へ挿入する形で転記され、入力のシートとは上下が逆になる。


 何かよい方法がありましたら、よろしくお願いします。

投稿日時 - 2007-07-14 09:34:41

QNo.3166028

困ってます

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

これは難しいと思います。
たとえ回答が出ても、初心者ではその式の意味を理解できない恐れもあると思う。下記以外の回答は、出たら関数の超上級編です。
エクセルは、持ってくる先のセルで考えて、入力の都度や、入力のデータ内容によって、もって来るもとのセルが変わるようなタイプの
問題は苦手です。抜き出しなどです。この質問も、完成後のシート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れつの例に簡略化。
結果
12322
821
720
619
418
317
216
115
00
#REF!#REF!
ーー
問題が残っているのは
00
#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まで式を複写。
結果データ
12322
821
720
619
418
317
216
115
以下式のみで、値は空白

投稿日時 - 2007-07-14 10:47:42

補足

 A列

1
2
3
4
6
7
8
123

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

投稿日時 - 2007-07-14 11:43:25

お礼

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

投稿日時 - 2007-07-14 20:07:52

ANo.2

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(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))

投稿日時 - 2007-07-14 18:31:21

補足

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

投稿日時 - 2007-07-14 20:12:00

お礼

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

投稿日時 - 2007-07-14 20:11:10

ANo.1

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

投稿日時 - 2007-07-14 10:22:39

お礼

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

投稿日時 - 2007-07-14 11:25:32

あなたにオススメの質問