• ベストアンサー

エクセルで1列に500行並んだデータを5列毎に改行

エクセル2000で、A1~A500までデータが縦並びに入力されています。 これを5列毎に改行して、横並びのデータに加工したいのですが、何か方法ありますか? 図解すると、、 A1 A2 A3 A4 A5 A6 A7 : : A500 のデータを A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 ・・・・・・ A496 A497 A498 A499 A500 と したいのです。 何かよい方法ありましたらお教え願います。

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

  • ベストアンサー
  • mar00
  • ベストアンサー率36% (158/430)
回答No.1

'直接シートをいじるのでコピーをしてから試してみてください。 Sub Macro1() COUNTER = 0 For INP = 1 To Cells(Rows.Count, 1).End(xlUp).Row Step 5 COUNTER = COUNTER + 1 Range("A" & INP & ":A" & INP + 4).Copy Range("B" & COUNTER).PasteSpecial Paste:=xlPasteValues, Transpose:=True Application.CutCopyMode = False Next INP Range("A1").EntireColumn.Delete End Sub

その他の回答 (4)

回答No.5

以下のどちらかでできると思います。 (方法1)VBAでプログラムを組む  データを1列づつ読み込んで行番号に応じて1~5列に分けてカット&ペーストする。 (方法2)関数とフィルタを使う  B列に、1~500までの数値を入れる。  C列に、=MOD(B1,5) (5で割った余り)を入れて以下のセルにコピー&ペースト  オートフィルタでC列のデータが1のもののみを選択してコピーし、別シートのA列にペースト  同様に、C列が2,3,4,0のものを選択して別シートのB,C,D,E列にペースト

presshow
質問者

お礼

ありがとうござました。

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

VBAでやると簡単だが、関数でも出来る。 簡単な番地の計算問題だろう。 エクセルは、データを持ってくる方のセルで考えるのだ。 第1行の1列目が何処から持ってくるかを考える。 データの何番目を持ってくるのはINDEX関数だ。そういうのは勉強したのか。 (1,1)-1 (1,2)-2 (1,3)-3   略 (1,4)-4 (1,5)-5 (2,1)-6 -->(2-1)*5+1 (2,2)-7 -->(2-1)*5+2 (2,3)-8 -->(2-1)*5+3 ・・ (3,1)-11  -->(3-1)*5+1 こういうルールは中学の数学ででも出てくる常識なんだ。 Sheet2 A列 a1 a2 a3 a4 a5 a6 a7 a8 ・・・・ ---- Sheet3のA1に =INDEX(Sheet2!$A$1:$A$100,(ROW()-1)*5+COLUMN(),) と入れてE1まで式複写。 A1:E1を下方向に式複写。 Sheet3 A-E列 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 ただし、丁寧には、データ数を超えたら空白になるような式をIF関数で加える(略)

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

VBAでやると簡単だが、関数でも出来る。 簡単な番地の計算問題だろう。 エクセルは、データを持ってくる方のセルで考えるのだ。 第1行の1列目が何処から持ってくるかを考える。 データの何番目を持ってくるのはINDEX関数だ。そういうのは勉強したのか。 (1,1)-1 (1,2)-2 (1,3)-3   略 (1,4)-4 (1,5)-5 (2,1)-6 -->(2-1)*5+1 (2,2)-7 -->(2-1)*5+2 (2,3)-8 -->(2-1)*5+3 ・・ (3,1)-11  -->(3-1)*5+1 こういうルールは中学の数学ででも出てくる常識なんだ。 Sheet2 A列 a1 a2 a3 a4 a5 a6 a7 a8 ・・・・ ---- Sheet3のA1に =INDEX(Sheet2!$A$1:$A$100,(ROW()-1)*5+COLUMN(),) と入れてE1まで式複写。 A1:E1を下方向に式複写。 Sheet3 A-E列 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 ただし、丁寧には、データ数を超えたら空白になるような式をIF関数で加える(略)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんばんは! 一例です。 表示したいセルに =INDEX($A:$A,COLUMN(A1)+5*(ROW(A1)-1)) として列方向と行方向にオートフィルでコピーではどうでしょうか?m(_ _)m

関連するQ&A