マイぴょん博士
サポートアンバサダー
カテゴリー
ヘルプ
解決済み
【Excel】VBAを利用した行のシャッフルを教えてください🙏
ExcelのVBAを利用した行のシャッフルを行いたいのですが、ネットなどでも情報がなかったので方法を教えていただきたいです🙇
【プログラム】
自分の想像しているプログラムは以下のような感じです。
ActiveXコントロール コマンドボタンを押す
⇩
A1セルからB列のデータが最後にある行までを選択する
⇩
選択した行をランダムに並び替える
...という流れになりますm(_ _)m
◎分かるようでしたら、そのプログラムの内容がどんなものかも教えていただけると嬉しいです⸜( ˶'ᵕ'˶)⸝
5 件の回答
iPhone XR(mineo(au)) ベストアンサー獲得数 34 件
こんにちは😊
こんなのでどうですか?
私はExcelに慣れていないので、もっと良い方法はあると思います。
CommandButton1 を設置して、クリックしたときの処理です。
Private Sub CommandButton1_Click()
'何行目まであるか取得します
Dim n As Integer
n = Cells(Rows.Count, 1).End(xlUp).Row
'C列に1行追加します
Range("C1").EntireColumn.Insert xlShiftToRight
'C列に乱数を入れます
Dim i As Integer
For i = 2 To n
Range("C" & i) = "=Rand()"
Next i
'C列をキーにして並び替えます。先頭行は見出し扱いにします
Range("A2", "C" & n).EntireColumn.Sort Key1:=Range("C2", "C" & n), Header:=xlYes
'並び替え乱数に使ったC列を削除します
Range("C1").EntireColumn.Delete
End Sub
こんなのでどうですか?
私はExcelに慣れていないので、もっと良い方法はあると思います。
CommandButton1 を設置して、クリックしたときの処理です。
Private Sub CommandButton1_Click()
'何行目まであるか取得します
Dim n As Integer
n = Cells(Rows.Count, 1).End(xlUp).Row
'C列に1行追加します
Range("C1").EntireColumn.Insert xlShiftToRight
'C列に乱数を入れます
Dim i As Integer
For i = 2 To n
Range("C" & i) = "=Rand()"
Next i
'C列をキーにして並び替えます。先頭行は見出し扱いにします
Range("A2", "C" & n).EntireColumn.Sort Key1:=Range("C2", "C" & n), Header:=xlYes
'並び替え乱数に使ったC列を削除します
Range("C1").EntireColumn.Delete
End Sub
- 2
あいだの1件を表示
ベストアンサー
iPhone XR(mineo(au)) ベストアンサー獲得数 34 件
>>4 Yuraneさん
こんにちは😊
With を使うことができます。
これは、Sheet2 にCommandButtun1 を作ってSheet1を操作します。
With ~ End With までの命令で、「.」を最初に付けると、
Sheets("Sheet1").
が最初に付いているものと同じ意味になります。
Private Sub CommandButton1_Click()
With Sheets("Sheet1") 'With入れます
Dim n As Integer
n = .Cells(Rows.Count, 1).End(xlUp).Row '.Cells で使っています
.Range("C1").EntireColumn.Insert xlShiftToRight '.Rangeで使っています
Dim i As Integer
For i = 2 To n
.Range("C" & i) = "=Rand()" ' .Rangeで使っています
Next i
'次の文は、最初の .Range と引数Key1の.Range で使っています
.Range("A2", "C" & n).EntireColumn.Sort Key1:=.Range("C2", "C" & n), Header:=xlYes
.Range("C1").EntireColumn.Delete '.Rangeで使っています
End With 'ここでWith終わりです
End Sub
こんにちは😊
With を使うことができます。
これは、Sheet2 にCommandButtun1 を作ってSheet1を操作します。
With ~ End With までの命令で、「.」を最初に付けると、
Sheets("Sheet1").
が最初に付いているものと同じ意味になります。
Private Sub CommandButton1_Click()
With Sheets("Sheet1") 'With入れます
Dim n As Integer
n = .Cells(Rows.Count, 1).End(xlUp).Row '.Cells で使っています
.Range("C1").EntireColumn.Insert xlShiftToRight '.Rangeで使っています
Dim i As Integer
For i = 2 To n
.Range("C" & i) = "=Rand()" ' .Rangeで使っています
Next i
'次の文は、最初の .Range と引数Key1の.Range で使っています
.Range("A2", "C" & n).EntireColumn.Sort Key1:=.Range("C2", "C" & n), Header:=xlYes
.Range("C1").EntireColumn.Delete '.Rangeで使っています
End With 'ここでWith終わりです
End Sub
この回答はベストアンサーに選ばれました。
- 9