• ベストアンサー

マクロで範囲を可変でループするには?

エクセルマクロで次のようなことをしたいのですが、どなたか教えてください。 A列の空白行までを1グループにして行列を入れ替えCからコピー をA列のデータがなくなるまで繰り返す。 よろしくお願いします。 例: セルA : B : C : D : E :   1あ      あ  い  う  2い      え  お  3う       か  き  4  5え  6お  7  8か  9き

質問者が選んだベストアンサー

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんにちは! 一例です。 Sub Sample1() Dim i As Long, j As Long, k As Long For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row If Cells(i, 1) <> "" Then k = i Do While Cells(k, 1) <> "" k = k + 1 Loop Range(Cells(i, 1), Cells(k, 1)).Copy Cells(Rows.Count, 3).End(xlUp).Offset(1).PasteSpecial Paste:=xlValues, Transpose:=True i = k End If Next i j = ActiveSheet.UsedRange.Columns.Count Range(Cells(1, 3), Cells(1, j)).Delete shift:=xlUp End Sub こんな感じではどうでしょうか?m(_ _)m

devid
質問者

お礼

有難う御座います。出来ました。

その他の回答 (2)

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.3

一例です。 Sub sample() Dim rng, r, i As Long With Application .ScreenUpdating = False If .CountA(Columns(1)) = 0 Then End Range(Columns(3), Columns(Columns.Count)).ClearContents Set rng = Range("a1", Cells(Rows.Count, 1).End(xlUp)). _ SpecialCells(xlCellTypeConstants).Areas For Each r In rng i = i + 1 Cells(i, 3).Resize(, r.Count) = .Transpose(r) Next .ScreenUpdating = True End With End Sub

devid
質問者

お礼

有難う御座います。こちらでもできました!。

  • kybo
  • ベストアンサー率53% (349/647)
回答No.1

こんな感じかなと思います。 Sub macro() Dim C As Range, D As Range, I As Integer Set C = Range("A1") Do Set D = C.End(xlDown) I = I + 1 Range(C, D).Copy Range("C" & I).PasteSpecial Transpose:=True Set C = D.End(xlDown) Loop Until C.Address = Range("A" & Rows.Count).Address End Sub

devid
質問者

補足

有難う御座います。 A列に一行のみがあったばあい、うまくいかないような?

関連するQ&A