アプリ版:「スタンプのみでお礼する」機能のリリースについて

MS-excel2003で、A1~W1までデータが横並びに入力されています。

これを10列毎に改行したいのですが、マクロでどのようにやればよいでしょうか?

図解すると、、


A1 B1 C1 D1 F1 G1 H1・・・・

のデータを

A1 B1 C1 D1 F1 G1 H1 I1 J1 K1
L1 M1 N1 O1 P1 Q1 R1 S1 T1 U1
V1 W1・・・・・・



したいのです。

これをマクロで行いたいのですが、ご教授願えませんか。

A 回答 (6件)

No.4です。


補足に
>与えられるファイルによって100列以上のものがあったりします。
とありましたので・・・

データは1行目のみあり、何列あっても対応できるようにしてみました。


Sub test2()
Dim i As Long
Application.ScreenUpdating = False
For i = 11 To Cells(1, Columns.Count).End(xlToLeft).Column Step 10
Range(Cells(1, i), Cells(1, i + 9)).Cut
Cells(Rows.Count, 1).End(xlUp).Offset(1).Select
ActiveSheet.Paste
Next i
Application.ScreenUpdating = True
Cells(Rows.Count, 1).End(xlUp).Offset(1).Select
End Sub

こんなんではどうでしょうか?m(_ _)m
    • good
    • 3
この回答へのお礼

お見事っ!

有難うございました。m(_ _)m

お礼日時:2011/10/17 22:10

VBAでやったほうが、初歩的な考えで済むと思う。


標準モジュールに
Sub test01()
'Cells(i,j) は元データのセル jは23以下、iはデータ行数
'Cells(k,m)は 行き先のセル kは行、lは列
'--行先の始のセル
k = 10 '行
l = 1 '列
'--
d = Range("a9").End(xlUp).Row
MsgBox d
'--
For i = 1 To 3
For j = 1 To 23
Cells(k, l) = Cells(i, j)
'--次にセットするセルの位置の行と列の準備
If l = 10 Then
k = k + 1 '行を1行下へ、(+1)
l = 1 '列はA列へ
Else
l = l + 1 '列を右へ(+1), 行は変えず
End If
Next j
Next i
End Sub
上記の場合データは23X9以下という事でやっている
整理されたデータはA10から作られる。
k = 10 '行の10
d = Range("a9").End(xlUp).Rowの9
を変えればデータ1000行でも出来る。
----
例データ
a1a2a3  以下略 a21a22a23
b1b2b3       b21b22b23
c1c2c3       c21c22c23
半端の終わりであっても良い
結果
a1a2a3a4a5a6a7a8a9a10
a11a12a13a14a15a16a17a18a19a20
a21a22a23b1b2b3b4b5b6b7
b8b9b10b11b12b13b14b15b16b17
b18b19b20b21b22b23c1c2c3c4
c5c6c7c8c9c10c11c12c13c14
c15c16c17c18c19c20c21c22c23
    • good
    • 1
この回答へのお礼

なるほど、非常に丁寧にご回答いただき有難うございました。
感謝いたいます。

お礼日時:2011/10/17 22:11

こんばんは!


データはA1~W1セルまでしかないわけですよね?

一応そういうことだとしての一例です。

Sub test()
Dim i As Long
For i = 11 To 23 Step 10
Range(Cells(1, i), Cells(1, i + 9)).Cut
Cells(Rows.Count, 1).End(xlUp).Offset(1).Select
ActiveSheet.Paste
Next i
Cells(Rows.Count, 1).End(xlUp).Offset(1).Select
End Sub

こんな感じではどうでしょうか?m(_ _)m

この回答への補足

有難うございます。
データソースですが、、今はW列までしかないのですが、与えられるファイルによって100列以上のものがあったりします。

補足日時:2011/10/17 20:35
    • good
    • 0

一例です。


ご例示のE列が抜けているのは誤植としています。

For Each a In Range("A1:W1")
Range("A5").Offset((a.Column - 1) \ 10, (a.Column - 1) Mod 10) = a.Value
Next
    • good
    • 1
この回答へのお礼

ありがとうございました。

お礼日時:2011/10/17 22:12

マクロを使わない別解す。



添付図参照

A3: =IF(ISERROR(INDEX($A$1:$W$1,,(ROW(A1)-1)*10+COLUMN(A1))),"",INDEX($A$1:$W$1,1,(ROW(A1)-1)*10+COLUMN(A1)))
「MS-excel 10列毎に改行したい」の回答画像2
    • good
    • 2
この回答へのお礼

有難うございます。
ただ、マクロでないとダメなので、できればそちらのご教授いただきたく存じます。

お礼日時:2011/10/17 15:52

とりあえず、それは、「改行」じゃない。



確認したいんですが、コピー(カット)&ペースト、もしくはA2に「=K1」と入力する方法を取らない理由は何でしょうか?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!