• ベストアンサー

Excelで一列に並んだデータから表を作成したい

Excelで、A列に入力したデータがあります。 これを、横3列使った表に加工したいのですが、どのような方法がありますでしょうか? 例えば、A1~A5に入力されたデータを、横3×縦2の表にしたいのです。 A1     A1 A2 A3 A2     A4 A5 A3  →   A4 A5 関数など使ってできないかと考えたのですが方法がわからず、 仕方なくA1~A3をコピー→行列を貼り付けで表を作成しました。 が、データが100個以上あるのでどうにも時間がかかってしまいます。 何か良い方法ありましたら教えてください。

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

  • ベストアンサー
  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.1

例 B:D列にする場合 B1=INDEX($A$1:$A$100,(COLUMN()-1)+(ROW()-1)*3,1) または B1=OFFSET($A$1,(COLUMN()-2)+(ROW()-1)*3,0) 上記をB1:D6の範囲にコピー 注意:セルがブランクの場合、数式の結果はブランクでなく0になります。

sakuranbo888
質問者

お礼

早速のご回答ありがとうございました。 どちらの式も理解できました。 今後、A列の途中途中に新規データが挿入されることがあるのですが、その度に表を作り直す手間が無くなりました。 どの関数も使ったことがなかったですが、覚えておくと色々役立ちそうです。

その他の回答 (1)

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

こういうのは関数の問題である前に、数学のパズル的問題です 1,2,3 4、5,6 ー・・ 最左列に来るのは1,4・・で差を取ると3ですね(公差) だから4->2、5->2、6->2になるのは3で割ればよいらしいと考える。しかし4/3は1ですから2にならない。そのために (2行ー1)*3+列番目1でやる。 それで 0+1、0+2,0+3 1*3+1、1*3+2,1*3+3 2*3+1、2*3+2、2*3+3 ・・ でうまくいく。 それでセル範囲から特定のセルを取ってくるのはINDEX関数なので Sheet1にデータがあるとして Sheet2のA1に =INDEX(Sheet1!$A:$A,(ROW()-1)*3+COLUMN()) とします。 第二引数に上記の(行ー1)*3+列の式を使いました。 A1の式をC1まで式を複写。 A1:C1の式を下方向に式を複写、で

sakuranbo888
質問者

お礼

大変にわかりやすい説明をありがとうございました。 パズル的なものを解いていくのって、回答がわかったときスッキリしますね。 式としてはNo.1の方とほぼ同じなので、回答順にポイントをつけさせていただきます。 失礼かとは思いますが、どうぞご了承ください。