人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

エクセルで次のようなのマクロ作成をお願いいたします。
Sheet1に次のようなデータが入っています。
1,2,3行目にデータの区切り位置
4行目にデータの名称
5行目以下データ

A列B列C列
1 2 3
3 4 5
5 6 7
a b c
1 1 1
2 2 2
3 3 3
4 4 4
5 5 5
6 6 6
7 7 7
8 8 8

このデータを、Sheet2,Sheet3,Sheet4,Sheet5に次のように整理して欲しいです。
Sheet2
A列 B列 C列
a b c
1 1 1
2 2
3

Sheet3
A列 B列 C列
a b c
2 3 4
3 4 5

Sheet4
A列 B列 C列
a b c
4 5 6
5 6 7

Sheet5
A列 B列 C列
a b c
6 7 8
7 8
8


●質問者: iwayuru_kami
●カテゴリ:コンピュータ 学習・教育
✍キーワード:エクセル データ マクロ 作成 名称
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● SALINGER
●35ポイント
Sub Macro1()
 Dim i As Integer
 Dim j As Integer
 Dim r As Integer
 Dim lastRow As Long
 lastRow = Sheet1.Cells(Rows.Count, 1).End(xlUp).Row
 
 For j = 1 To 3
 Sheet2.Cells(1, j).Value = Sheet1.Cells(4, j).Value
 r = 2
 For i = 5 To Sheet1.Cells(1, j).Value + 4
 Sheet2.Cells(r, j).Value = Sheet1.Cells(i, j).Value
 r = r + 1
 Next i
 Sheet3.Cells(1, j).Value = Sheet1.Cells(4, j).Value
 r = 2
 For i = Sheet1.Cells(1, j).Value + 5 To Sheet1.Cells(2, j).Value + 4
 Sheet3.Cells(r, j).Value = Sheet1.Cells(i, j).Value
 r = r + 1
 Next i
 Sheet4.Cells(1, j).Value = Sheet1.Cells(4, j).Value
 r = 2
 For i = Sheet1.Cells(2, j).Value + 5 To Sheet1.Cells(3, j).Value + 4
 Sheet4.Cells(r, j).Value = Sheet1.Cells(i, j).Value
 r = r + 1
 Next i
 Sheet5.Cells(1, j).Value = Sheet1.Cells(4, j).Value
 r = 2
 For i = Sheet1.Cells(3, j).Value + 5 To lastRow
 Sheet5.Cells(r, j).Value = Sheet1.Cells(i, j).Value
 r = r + 1
 Next i
 Next j
End Sub
◎質問者からの返答

回答有難うございます。

上記マクロを動かしてみたのですが

実行時エラー'424'

オブジェクトが必要です。

と表示され

Sheet2.Cells(1, j).Value = Sheet1.Cells(4, j).Value

の部分で止まってしまいました。

何が原因だか分かりますでしょうか?


2 ● SALINGER
●35ポイント ベストアンサー

なんとなく原因はわかります。

通常シートを増やすとSheet1、Sheet2・・・とシート名がついていき、オブジェクト名もSheet1、Sheet2・・・とついていきます。

ここでシートの名前をSheet1とSheet2と入れ替えても、オブジェクト名は変わりません。

そんな感じで今の場合はシート名がSheet1だけど、オブジェクト名が違うシートとなっているのでしょう。

それで、コード中のシートの取得をシート名に変えました。

これで、シートの名前がSheet1?Sheet5のシートが5つあればうまく動作すると思います。

Sub Macro1()
 Dim i As Integer
 Dim j As Integer
 Dim r As Integer
 Dim lastRow As Long
 
 With Worksheets("Sheet1")
 lastRow = .Cells(Rows.Count, 1).End(xlUp).Row
 
 For j = 1 To 3
 Worksheets("Sheet2").Cells(1, j).Value = .Cells(4, j).Value
 r = 2
 For i = 5 To .Cells(1, j).Value + 4
 Worksheets("Sheet2").Cells(r, j).Value = .Cells(i, j).Value
 r = r + 1
 Next i
 Worksheets("Sheet3").Cells(1, j).Value = .Cells(4, j).Value
 r = 2
 For i = .Cells(1, j).Value + 5 To .Cells(2, j).Value + 4
 Worksheets("Sheet3").Cells(r, j).Value = .Cells(i, j).Value
 r = r + 1
 Next i
 Worksheets("Sheet4").Cells(1, j).Value = .Cells(4, j).Value
 r = 2
 For i = .Cells(2, j).Value + 5 To .Cells(3, j).Value + 4
 Worksheets("Sheet4").Cells(r, j).Value = .Cells(i, j).Value
 r = r + 1
 Next i
 Worksheets("Sheet5").Cells(1, j).Value = .Cells(4, j).Value
 r = 2
 For i = .Cells(3, j).Value + 5 To lastRow
 Worksheets("Sheet5").Cells(r, j).Value = .Cells(i, j).Value
 r = r + 1
 Next i
 Next j
 End With

End Sub
◎質問者からの返答

有難うございました。

上記マクロで無事動きました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ