- ベストアンサー
エクセルで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 と したいのです。 何かよい方法ありましたらお教え願います。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
'直接シートをいじるのでコピーをしてから試してみてください。 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)
- haichicchi
- ベストアンサー率30% (66/214)
以下のどちらかでできると思います。 (方法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列にペースト
- imogasi
- ベストアンサー率27% (4737/17069)
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)
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)
こんばんは! 一例です。 表示したいセルに =INDEX($A:$A,COLUMN(A1)+5*(ROW(A1)-1)) として列方向と行方向にオートフィルでコピーではどうでしょうか?m(_ _)m
お礼
ありがとうござました。