プロが教えるわが家の防犯対策術!

A1からA10にかけて、「あ,い,う,え,お,か,き,く,け,こ」と入力してあります。
それを、B1からB5にかけて「あ,い,う,え,お」、C1からC5にかけて「か,き,く,け,こ」と
入力する為のコードを下記のように作りました。
しかし、A列に入力されているデータが多くあり、5行目で折り返した場合に使用する列数が
不明な場合、k=4、k=5のように指定しないで、A列のデータ数に応じて折り返す列数を
増やす方法はありますか。
よろしくお願いします。
Sub test()
Dim i, j, k
i = 1
j = 1
k = 2
Do While Cells(i, 1) <> ""
Cells(j, k) = Cells(i, 1)
i = i + 1
j = j + 1
If i = 6 Then
j = 1
k = 3
End If
Loop
End Sub

A 回答 (2件)

マクロ作成上のヒントになれば仕合せ…


式 =OFFSET($A$1,ROW(A1)-1+(COLUMN(A1)-1)*5,) を入力したセル B1 を右隣にオートフィルして、範囲 B1:C1 を4行下までオートフィル
    • good
    • 0
この回答へのお礼

ありがとうございます。この関数をB1からC5までにコピーすると、A列の文字が折り返して表示されました。また、A列にもっと多くのデータを入力しても、オートフィルする範囲を広げることで、折り返して表示されるようになりました。

お礼日時:2017/07/08 21:27

こんばんは!



色々やり方はあると思いますが、一例です。

Sub Sample1()
Dim i As Long, cnt As Long
cnt = 1
For i = 1 To Cells(Rows.Count, "A").End(xlUp).Row Step 5
cnt = cnt + 1
Cells(i, "A").Resize(5).Copy
Cells(1, cnt).PasteSpecial Paste:=xlPasteValues
Next i
Application.CutCopyMode = False
End Sub

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

ありがとうございます。A列の最下行を取得し、step 5(データ数/5)とすることで、For文で繰り返す数を指定しているのですね。また、cntに1ずつ加算する事で、データ数に応じて列数を増やしているのですね。

お礼日時:2017/07/08 21:50

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