Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


8080 / 13644 ツリー ←次へ | 前へ→

【35201】横から縦に並び替える方法 aki 06/2/23(木) 17:15 質問[未読]
【35206】Re:横から縦に並び替える方法 ichinose 06/2/23(木) 18:47 発言[未読]
【35240】Re:横から縦に並び替える方法 aki 06/2/24(金) 9:06 お礼[未読]
【35212】Re:横から縦に並び替える方法 Kein 06/2/23(木) 20:44 回答[未読]
【35244】Re:横から縦に並び替える方法 aki 06/2/24(金) 10:30 質問[未読]
【35251】Re:横から縦に並び替える方法 Kein 06/2/24(金) 13:35 回答[未読]
【35253】Re:横から縦に並び替える方法 aki 06/2/24(金) 13:53 お礼[未読]

【35201】横から縦に並び替える方法
質問  aki  - 06/2/23(木) 17:15 -

引用なし
パスワード
   横8列、縦400行の数値を縦1列に並び替えたいです。

例えば、
 01、02、03、04、05、06、07、08
 09、10,11,12,13,14,15,16
           ↓
 01
 02
 03
  ・
  ・
 08
 09
  ・
  ・

という感じに変換する方法を教えて下さい。
宜しくお願いします。

【35206】Re:横から縦に並び替える方法
発言  ichinose  - 06/2/23(木) 18:47 -

引用なし
パスワード
   ▼aki さん:
こんばんは。
400行ぐらいなら、

'=====================================================
Sub main()
  Const 列数 As Long = 8
  dim myarray as variant
  Dim rng As Range
  Set rng = Range("a1") '400行8列の開始セル
  myarray = rng.Resize(400, 列数).Value
  rng.Resize(400, 列数).Value = ""
  For idx = 1 To 400 * 列数
    Cells(idx, "a").Value = myarray((idx - 1) \ 列数 + 1, (idx - 1) Mod 列数 + 1)
    Next

End Sub

これでも一瞬でしたよ!!

【35212】Re:横から縦に並び替える方法
回答  Kein  - 06/2/23(木) 20:44 -

引用なし
パスワード
   Sub MyArray()
  Dim MyAry As Variant, NewAry() As Variant
  Dim i As Long, j As Long, x As Long
 
  MyAry = Range("A1").CurrentRegion.Value: x = 0
  For i = LBound(MyAry, 1) To UBound(MyAry, 1)
   For j = LBound(MyAry, 2) To UBound(MyAry, 2)
     ReDim Preserve NewAry(x)
     NewAry(x) = MyAry(i, j): x = x + 1
   Next j
  Next i
  With Range("A1")
   .CurrentRegion.ClearContents
   .Resize(UBound(NewAry) + 1).Value = _
   WorksheetFunction.Transpose(NewAry)
  End With
  Erase MyAry, NewAry
End Sub

で、どうでしょーか ?

【35240】Re:横から縦に並び替える方法
お礼  aki  - 06/2/24(金) 9:06 -

引用なし
パスワード
   ▼ichinose さん:
▼Kein さん:

うまく並び替えることが出来ました。

ありがとうございます。

【35244】Re:横から縦に並び替える方法
質問  aki  - 06/2/24(金) 10:30 -

引用なし
パスワード
   すいません
使っていると欲が出てきました。
元のデータをセルのB4〜I404に残したまま、並び替えたデータをL列の4行目から表示させたいです。
宜しくお願いします。

【35251】Re:横から縦に並び替える方法
回答  Kein  - 06/2/24(金) 13:35 -

引用なし
パスワード
   そのように、処理対象のセル範囲を特定するなら・・

Sub MyArray2()
  Dim NewAry() As Variant
  Dim C As Range
  Dim x As Long
 
  For Each C In Range("B4:I404")
   ReDim Preserve NewAry(x)
   NewAry(x) = C.Value: x = x + 1
  Next
  Range("L4").Resize(UBound(NewAry) + 1).Value = _
  WorksheetFunction.Transpose(NewAry)
  Erase NewAry
End Sub

【35253】Re:横から縦に並び替える方法
お礼  aki  - 06/2/24(金) 13:53 -

引用なし
パスワード
   ▼Kein さん:

ありがとうございます!
助かりました

8080 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free