Excel VBAでリスト範囲の回数分を移動したいと思います。(リスト行数が変わる)
A   B  C  D   E
1A 1B 1C 1D 1E
2A 2B 2C 2C 2E
3A 3B 3C 3C 3E

このような表があった時、横一列に移動したいと思います。
次のシートに以下のような表ができればいいのですが。

A   B  C  D   E  F  G  H   I  J  K  L   M  N   O
1A 1B 1C 1D 1E 2A 2B 2C 2C 2E 3A 3B 3C 3C 3E

よろしくお願いいたします。

質問者からの補足コメント

  • >1)入力データがSheet1にあり、並べ替えた結果をSheet2へ出力する前提で良いです。
    >2)リスト中に空白のセルはないという前提でよいですか。
    上記の前提でお願いします。

      補足日時:2017/11/15 16:28

A 回答 (3件)

以下のマクロを標準モジュールへ登録してください。


Sheet1の1行目からデータになっている前提です。(1行目は見出しではありません)
------------------------------------------------------
Option Explicit
Public Sub 並べ替え()
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Dim maxrow As Long
Dim maxcol As Long
Dim row1 As Long
Dim row2 As Long
Dim col1 As Long
Dim col2 As Long
Set sh1 = Worksheets("Sheet1")
Set sh2 = Worksheets("Sheet2")
maxrow = sh1.Cells(Rows.Count, 1).End(xlUp).Row '1列目の最終行を求める
maxcol = sh1.Cells(1, Columns.Count).End(xlToLeft).Column '1行目の最終列を求める
col2 = 1
For row1 = 1 To maxrow
For col1 = 1 To maxcol
sh2.Cells(1, col2).Value = sh1.Cells(row1, col1).Value
col2 = col2 + 1
Next
Next
MsgBox ("完了")
End Sub
    • good
    • 0
この回答へのお礼

行数が変化しますので、この方法が助かります。
有難うございました。

お礼日時:2017/11/15 16:44

こんにちは



シート名などが不明なので、個別に指定するようにしてあります。
対象とするシート名、行数、列数などを適宜にセットの上テストしてみてください。

Sub Sample()
 Dim rg1 As Range, rg2 As Range
 Dim rw As Long, col As Long, r As Long

 Const s1 = "Sheet1" '←データのあるシート名
 Const s2 = "Sheet2" '←次の(?)シート名
 rw = 3 '←対象範囲の行数
 col = 5 '←対象範囲の列数

 Set rg1 = Worksheets(s1).Range("A1").Resize(rw, col)
 Set rg2 = Worksheets(s2).Range("A1").Resize(1, col)

 For r = 1 To rg1.Rows.Count
  rg2.Value = rg1.Rows(r).Value
  Set rg2 = rg2.Offset(0, col)
 Next r
End Sub
    • good
    • 0
この回答へのお礼

素早い御回答有難うございました。

お礼日時:2017/11/15 16:58

1)入力データがSheet1にあり、並べ替えた結果をSheet2へ出力する前提で良いです。


2)リスト中に空白のセルはないという前提でよいですか。
    • good
    • 0

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


人気Q&Aランキング

おすすめ情報