エクセルマクロに関する質問です。A行に10000件のデータがあるとします。

このデータを20件づつ3列に振り分けたいのですが、方法を教えて下さい。

加工前
■A列 B列 C列
 1
 2
 ・
 ・
 10000

加工後
■A列 B列 C列
 1  21 41
 2  ・  ・
 ・  ・  ・
 20 40 60
 61 81 101
 ・  ・   ・
 ・  ・   ・
 ・  ・   ・
 10000

回答の条件
  • 1人2回まで
  • 登録:2007/12/24 18:05:05
  • 終了:2007/12/25 01:04:58

ベストアンサー

id:SALINGER No.1

SALINGER回答回数3454ベストアンサー獲得回数9692007/12/24 18:21:58

ポイント60pt

Sheet1のデータをSheet2に並べ替えるマクロです。

Sub Macro()
    Dim i As Long
    Dim j As Integer
    j = 1
    For i = 0 To 499
        Sheet1.Range("A" & i * 20 + 1 & ":A" & i * 20 + 20).Copy (Sheet2.Cells(Int(i / 3) * 20 + 1, j))
        If j = 3 Then
            j = 1
        Else
            j = j + 1
        End If
    Next i
End Sub
id:WATANABE

ありがとうございます。希望通りです。

2007/12/25 01:04:47

その他の回答(2件)

id:SALINGER No.1

SALINGER回答回数3454ベストアンサー獲得回数9692007/12/24 18:21:58ここでベストアンサー

ポイント60pt

Sheet1のデータをSheet2に並べ替えるマクロです。

Sub Macro()
    Dim i As Long
    Dim j As Integer
    j = 1
    For i = 0 To 499
        Sheet1.Range("A" & i * 20 + 1 & ":A" & i * 20 + 20).Copy (Sheet2.Cells(Int(i / 3) * 20 + 1, j))
        If j = 3 Then
            j = 1
        Else
            j = j + 1
        End If
    Next i
End Sub
id:WATANABE

ありがとうございます。希望通りです。

2007/12/25 01:04:47
id:a2gi No.2

a2gi回答回数81ベストアンサー獲得回数32007/12/24 18:42:44

ポイント10pt

こっちの方が短くできますね。

Sub Macro2()
    For i = 1 To 10000
        data = Cells(i, 1).Value
        Cells((i - 1) Mod 20 + 1 + 20 * Int((i - 1) / 60), Int(((i - 1) Mod 60) / 20) + 1).Value = data
    Next i
End Sub
id:a2gi No.3

a2gi回答回数81ベストアンサー獲得回数32007/12/24 18:25:55

ポイント10pt
Sub Macro1()
    a = 1
    b = 1
    c = 1
    For i = 1 To 10000
        data = Cells(i, 1).Value
        hantei = (i - 1) Mod 60
        If hantei < 20 Then
            Cells(a, 1).Value = data
            a = a + 1
        ElseIf hantei < 40 Then
            Cells(b, 2).Value = data
            b = b + 1
        Else
            Cells(c, 3).Value = data
            c = c + 1
        End If
    Next i
End Sub

この質問への反応(ブックマークコメント)

トラックバック

  • VBAのお勉強 simple blog 2007-12-25 09:42:36
    http://q.hatena.ne.jp/1198487103A列に1~10000までを入れるには、A1に1、A2に2をいれて、両方を選択した状態でドラッグする。Sub test()j = 1k = 1For i = 1 To 10000l = Cells(i, 1).ValueCells(i, 1) = NullCells(k, j).Value =...
「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません