エクセルにて入力されたデータで下記のような動きをするマクロを教えてください。


例:変換前
      A1 B1 C1
一行目 1
二行目 2
三行目 3 
四行目 1
五行目 2 
六行目 3

変換後:
      A1 B1 C1
一行目 1  2  3
二行目 1  2  3
三行目 1  2  3
四行目 

例では123の繰り返しですが、変換前のデータが1から5までとか1から100までの様に変更できるとさらに嬉しいです。

回答の条件
  • 1人2回まで
  • 登録:2009/03/24 18:58:14
  • 終了:2009/03/24 20:54:00

ベストアンサー

id:SALINGER No.1

SALINGER回答回数3454ベストアンサー獲得回数9692009/03/24 19:15:29

ポイント60pt
Option Explicit

Sub Macro1()
    'ここで繰り返す文字数に変えてください
    Const roopCount As Integer = 5
    Dim lastRow As Long
    Dim i As Long
    Dim j As Long
    Dim k As Long
    lastRow = Cells(Rows.Count, 1).End(xlUp).Row
    j = 1
    k = 1
    For i = 1 To lastRow
        Cells(k, j) = Cells(i, 1).Value
        If j = roopCount Then
            j = 1
            k = k + 1
        Else
            j = j + 1
        End If
    Next i
    For i = k + 1 To lastRow
        Cells(i, 1).Value = ""
    Next i
End Sub
id:WATANABE

希望通りの事ができました、ありがとうございます

2009/03/24 20:53:44
  • id:SALINGER
    ちょっと、不完全でした。
    繰り返す文字数で割り切れる行の場合、セルが1つ残ったのを修正。
    >>
    Sub Macro1()
    'ここで繰り返す文字数に変えてください
    Const roopCount As Integer = 3
    Dim lastRow As Long
    Dim i As Long
    Dim j As Long
    Dim k As Long
    Dim s As String
    lastRow = Cells(Rows.Count, 1).End(xlUp).Row
    j = 1
    k = 1
    For i = 1 To lastRow
    s = Cells(i, 1).Value
    Cells(i, 1).Value = ""
    Cells(k, j) = s
    If j = roopCount Then
    j = 1
    k = k + 1
    Else
    j = j + 1
    End If
    Next i
    End Sub
    <<
  • id:WATANABE
    例えば123ではなく ABCなど文字列でも可能でしょうか?
  • id:SALINGER
    数字も文字列として扱っているので可能です。

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

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

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

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