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

解決済みの質問

エクセルで数字を転記する方法

いつもお世話になります。
エクセルの初歩的な質問ですが、ある規則正しく並んでいる数字を表にまとめたいと思っています。
例えば以下のように数字が並んでいるとします。
    A  B  C
1   5  3  2
2   9  1  8
3   8  3  6
4   0  7  3
5   9  5  4
別の表には
A1 A2 B1 C1
A4 A5 B4 C4
というようにAが続けて2行その後にBCが1行ずつ続き、その次の行(A3)をとばしてAが2行、BCが1行ずつ・・・とある規則で続いていきます。
簡単な数式を使って表にまとめる方法を教えていただきたいと思います。
尚、マクロは知りませんし、難しい用語も分かりません。月曜日の仕事で必要なので、日曜日中に宜しくお願い致します。

投稿日時 - 2006-02-26 02:08:53

QNo.1992029

すぐに回答ほしいです

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

上側の表が入っているシートをSheet1、下側の表をSheet2に作成するとします。まずSheet2のA1~D1に次の様に式を入力します。

A1のセル
=OFFSET(Sheet1!$A$1,(ROW()-1)*3,0,1,1)

B1のセル
=OFFSET(Sheet1!$A$2,(ROW()-1)*3,0,1,1)

C1のセル
=OFFSET(Sheet1!$B$1,(ROW()-1)*3,0,1,1)

D1のセル
=OFFSET(Sheet1!$C$1,(ROW()-1)*3,0,1,1)

そうしましたら、Sheet2のA1~D1を必要な分だけ下にコピーします(ドラッグすればできますよね)。

・・・という感じですがご要望に沿ってますでしょうか。

投稿日時 - 2006-02-26 03:19:03

補足

すごーい (*^-^*) 出来ました。ありがとうございました。
OFFSETを調べましたら、基準、行数、列、高さ、幅とありました。こんな便利な関数があるんですね。
二つ質問してもいいでしょうか。
(1)Sheet1とSheet2のセルの場所が同じでないと出来ないのでしょうか。違う場所では出来ませんでした。
(2)=ROW()を調べたら、「数式が入力されている行の行番号を調べます」とありましたが、ROW()-1の意味がよく分かりません。意味を教えていただけないでしょうか。度々すみませんが、宜しくお願い致します。

投稿日時 - 2006-02-26 07:32:49

お礼

困っている時に早急なご回答ありがとうございました。
早速活用させていただきます。

投稿日時 - 2006-02-26 15:47:05

ANo.2

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

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

回答(5)

ANo.5

#2です。

>違う場所では出来ませんでした
違う場所でも可能ですが、式をいじってやる必要があります。

>ROW()-1の意味がよく分かりません
まぁこれは式の説明をしないとわかりませんよね(^^;)>。


ということでちょと説明。例としてこの式を使います。

=OFFSET(Sheet1!$A$1,(ROW()-1)*3,0,1,1)

これが入っているのはSheet2のA列になりますが、A列にはSheet1のA1、A4、A7・・・を表示されたいわけです。よく見るとSheet1の番号が3づつ飛んでますよね?なのでOFFSET量は0、3、6・・・と変化させればいいわけです(Sheet1のA1を基準として固定していますので。Sheet1の表の始まり(左上)がA1でない場合は変えてあげる必要があります。)。

Sheet2のA列においてROW()で得られる値は、A1は1、A2は2、A3は3・・・となります。この数値を使って先の0、3、6・・・を得るようにしなくてはならないので・・・

(ROW()で得られた値-1)x3

としているわけです。Sheet2のどこに記述するかによってこの部分はいじってあげなくてはなりません。ですから「別の表」の始まり(左上)がA7のセルだった場合はROW()で得られる値は7、8、9・・・となりますのでROW()-1の部分はROW()-7とする必要があります。

・・・とこんな感じでわかりますでしょうか?

投稿日時 - 2006-02-26 17:37:00

お礼

度々のご回答ありがとうございます。
無知な私に詳しく説明して頂き、大変よく分かりました。
これでぐっすり寝れます。(笑)

投稿日時 - 2006-02-27 01:27:58

ANo.4

#3です。「別の表」であるらしいので、元のシート名をSheet1として
=INDIRECT("A"&(ROW()-1)*3+1)

=INDIRECT("Sheet1!A"&(ROW()-1)*3+1)
にしてみてください。
他の3つも同じくSheet1!を加えて、変えてください。

投稿日時 - 2006-02-26 15:27:46

お礼

再度ご回答ありがとうございました。
やっと出来ました♪
もっと関数を沢山使いこなせるようになりたいです。
また困った時は宜しくお願い致します(^^;)

投稿日時 - 2006-02-26 15:50:40

ANo.3

「別の表」のA1に
=INDIRECT("A"&(ROW()-1)*3+1)
B1に
=INDIRECT("A"&(ROW()-1)*3+2)
C1に
=INDIRECT("B"&(ROW()-1)*3+1)
D1に
=INDIRECT("C"&(ROW()-1)*3+1)

と入れて、下方向に式を複写する。

投稿日時 - 2006-02-26 09:15:31

補足

ありがとうございます。
A1だけやってみましたが、うまく出来ません。(;;)どうしてなのか分かりませんが、せっかく返信していただいたのに申し訳ありませんでした。

投稿日時 - 2006-02-26 14:56:30

ANo.1

別の表の

A1 A2 B1 C1
A4 A5 B4 C4

というのはセルの番号ですか?つまり・・・

5 9 3 2
0 9 7 3

と入ればいいのでしょうか?

投稿日時 - 2006-02-26 02:14:29

補足

そうです。
宜しくお願い致します。

投稿日時 - 2006-02-26 02:31:43

あなたにオススメの質問