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