[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『ランダムに入力されているセルを一列に並び替える』(杏)
いつも大変お世話になっています。 今データの並べ替えをしていて、頭を抱えています。
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.