• 締切済み

縦列 横列 をマクロで入れ替えろ行いたいのですが

エクセルで下記のような並び替えろ瞬時に行える方法はないでしょうか?できればマクロを組みたいのですが…マクロ初心者なのでいい方法を簡単に教えてください。 番号 日時(1) 日時(2) 日時(3) 日時(4) A   N台    N台   N台   N台 B   N台    N台   N台   N台 C   N台    N台   N台   N台 このようなデータを A 日時(1) 台数 A 日時(2) 台数 A 日時(3) 台数 A 日時(4) 台数 B 日時(1) 台数 B 日時(2) 台数 B 日時(3) 台数 B 日時(4) 台数 縦列300~500データ 横列データの数は100~200データあり そのときによってさまざまです。 このように瞬時に並び替えろ行いたいです。 簡単にわかりやすく教えてください。 よろしくお願いいたします。

みんなの回答

  • ka_na_de
  • ベストアンサー率56% (162/286)
回答No.2

一例です。 元のデータが Sheet1 にある前提で、 Sheet2 に結果を出力します。 データバックアップ後に、 標準モジュールに貼り付けて実行してください。 Sub test()   Dim Ws1 As Worksheet   Dim Ws2 As Worksheet   Dim myLastRow As Long   Dim myCol As Long   Dim i As Long   Dim j As Long      Set Ws1 = Worksheets("Sheet1") '元シート   Set Ws2 = Worksheets("Sheet2") '並び替え後      Application.ScreenUpdating = False   Ws2.Cells.Clear   j = 1   With Ws1     myLastRow = .Cells(.Rows.Count, "A").End(xlUp).Row     For i = 2 To myLastRow       myCol = .Cells(i, .Columns.Count).End(xlToLeft).Column - 1       Ws2.Cells(j, "A").Resize(myCol) = .Cells(i, "A").Value       .Cells(1, "B").Resize(, myCol).Copy       Ws2.Cells(j, "B").PasteSpecial Transpose:=True       .Cells(i, "B").Resize(, myCol).Copy       Ws2.Cells(j, "C").PasteSpecial Transpose:=True       j = j + myCol     Next i   End With   Application.CutCopyMode = False   Application.ScreenUpdating = True      Set Ws1 = Nothing   Set Ws2 = Nothing End Sub

takey0914
質問者

お礼

詳しい回答ありがとうございました。じっくり格闘してみます。

  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.1

行列入れ替えはPasteSpecialでできます。 http://www.moug.net/tech/exvba/0050104.htm 行数・列数はEndとRow,Columnの組み合わせでいいでしょう。 http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_030_100.html あとは繰り返し処理で終わり。 簡単とは言いませんが、それほど難しいことをする必要もないですからあとはご自身でどうぞ。

関連するQ&A