[[20050511193412]] 『ランダムに入力されているセルを一列に並び替える』(杏) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『ランダムに入力されているセルを一列に並び替える』(杏)

 いつも大変お世話になっています。
 今データの並べ替えをしていて、頭を抱えています。

      A    B    C    D
 1    a         d
 2    b    c
 3    d    e    f    g    
 4    h    j
 5    k

 このように、ランダムにセルに入力されているデータを
 A列に一列に纏めてしまうようなマクロはありますでしょうか。
 後でソートはかけられるので、順不同で問題ありません。
 今はフィルタをかけて空白を抜いて切り張りしているのですが…。
 使用しているのはWin2000×Exel2002です。
 よろしくお願い致します。

 ざっとこんな感じでどうでしょうか??
範囲を選択してから実行です。Sheet2に書き出します。
Option Explicit
Sub てすと()
Dim MyAry() As Variant
Dim MyRng As Range, C As Range
Dim k As Long
Set MyRng = Selection
ReDim MyAry(1 To MyRng.Count, 1 To 1)
For Each C In MyRng
    If C.Value <> "" Then
        k = k + 1
        MyAry(k, 1) = C.Value
    End If
Next
With Sheets("Sheet2")
    .Range("A:A").ClearContents
    .Range("A1").Resize(UBound(MyAry, 1), UBound(MyAry, 2)).Value = MyAry
End With
Erase MyAry
Set MyRng = Nothing
End Sub
(SoulMan)


 ありがとうございました! 無事作業が終了いたしました。
 シート名を変えるだけで使える、見やすいマクロで、
 本当に助かりました!

 一つご質問させていただきたいのですが、このマクロを
 ボタンに登録しようとする場合、

 Private Sub CommandButton1_Click()

 End Sub

 の間のどういう風に挿入すれば、動かすことが出来るのでしょうか?
 (杏)

 多分、Sheetモジュールにあるんだろうし、
選択してからコマンドを押すことにはかわりないから。。
これでいいと思うけど・・・?
どうでしょうか??
Option Explicit
Private Sub CommandButton1_Click()
Dim MyAry() As Variant
Dim MyRng As Range, C As Range
Dim k As Long
Set MyRng = Selection
ReDim MyAry(1 To MyRng.Count, 1 To 1)
For Each C In MyRng
    If C.Value <> "" Then
        k = k + 1
        MyAry(k, 1) = C.Value
    End If
Next
With Sheets("Sheet2")
    .Range("A:A").ClearContents
    .Range("A1").Resize(UBound(MyAry, 1), UBound(MyAry, 2)).Value = MyAry
End With
Erase MyAry
Set MyRng = Nothing
End Sub
(SoulMan)


 Private Sub CommandButton1_Click()とSub てすと()
 を切り替えるんですね。
 全く読み方が分かっていないもので、失礼致しましたm(__)m
 (杏)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.