私はマクロ自動登録が出来る程度の初心者です
以前ここに掲載されたマクロを拝借させて頂きました、下記がそうです
R5:R520までの数値をランダムに並べ替えるものですが、
これを、R, S, T, U…100列まで実行したいのですが何度試しても出来ません
どうぞよろしくお願い致します
Sub Sample2()
Dim Dat As Variant, Tmp As Variant
Dim i As Integer, j As Integer
Randomize
Dat = Range("R5:R520").Value
For i = 516 To 2 Step -1
If IsNumeric(Dat(i, 1)) And Dat(i, 1) <> "" Then
Do
j = Int(Rnd * i + 1)
Loop Until IsNumeric(Dat(j, 1)) And Dat(j, 1) <> ""
Tmp = Dat(i, 1): Dat(i, 1) = Dat(j, 1): Dat(j, 1) = Tmp
End If
Next i
Range("R5:R520").Value = Dat
End Sub
No.2ベストアンサー
- 回答日時:
ちょっとだけスマートに。
Sub Sample2()
Dim Dat As Variant, Tmp As Variant
Dim i As Integer, j As Integer, k As Integer
Dim rng As Range
Randomize
For k = 18 To 100 ' R列 から CV列まで
Set rng = Rows("5:520").Columns(k)
Dat = rng.Value
For i = 516 To 2 Step -1
If IsNumeric(Dat(i, 1)) And Dat(i, 1) <> "" Then
Do
j = Int(Rnd * i + 1)
Loop Until IsNumeric(Dat(j, 1)) And Dat(j, 1) <> ""
Tmp = Dat(i, 1): Dat(i, 1) = Dat(j, 1): Dat(j, 1) = Tmp
End If
Next i
rng.Value = Dat
Next
End Sub
確認ですが、列内で並べ替えるのを
R列 から CV列 まで繰り返す、ということでよろしいですね。
R5 から CV520 までをぐちゃぐちゃに、ということではありませんね?
No.1
- 回答日時:
自動でやるんだったら、少し泥臭いけど以下(動作確認済み)
Sub Sample2()
Const 列文字 As String = "R S T U V W X Y Z AA" ←列記号を列挙
Dim 列カウンタ As Integer
Dim 列 As String
Dim Dat As Variant, Tmp As Variant
Dim i As Integer, j As Integer
For 列カウンタ = 1 To 10 ←列の数分回す
列 = Mid(列文字, (列カウンタ - 1) * 2 + 1, 2) ←対象列抽出
列 = Trim(列) ←空白削除
Randomize
Dat = Range(列 & "5:" & 列 & "520") ←列範囲を作成
For i = 516 To 2 Step -1
If IsNumeric(Dat(i, 1)) And Dat(i, 1) <> "" Then
Do
j = Int(Rnd * i + 1)
Loop Until IsNumeric(Dat(j, 1)) And Dat(j, 1) <> ""
Tmp = Dat(i, 1): Dat(i, 1) = Dat(j, 1): Dat(j, 1) = Tmp
End If
Next i
Range(列 & "5:" & 列 & "520") = Dat ←列範囲を指定
Next 列カウンタ
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- その他(プログラミング・Web制作) pandasでまとめてインデックスを削除するにはどうすればいいですか? たとえば、以下のプログラムで 1 2022/07/31 23:09
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Visual Basic(VBA) エクセル マクロ(A1:A10)までの中で一番多く出た数字をB10に表示 6 2023/04/25 17:01
- Visual Basic(VBA) vba 重複データ合算 5 2023/07/05 18:55
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたい 6 2023/01/23 12:00
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで二つの数字の小さい...
-
PowerPointで表の1つの列だけ...
-
VBAで文字列を数値に変換したい
-
エクセル 同じ値を探して隣の...
-
エクセルで最初のスペースまで...
-
エクセル初心者です 関数の入れ...
-
2つのエクセルのデータを同じよ...
-
Excelで半角の文字を含むセルを...
-
LOOKUP関数を使えばいいのでし...
-
エクセル 文字数 多い順 並...
-
Excel、市から登録している住所...
-
A列がない・・・A列が非表示に...
-
エクセルの表から正の数、負の...
-
エクセルで文字が混じった数字...
-
エクセル(勝手に太字になる)
-
エクセルの項目軸を左寄せにしたい
-
重複行を削除して数値を合算し...
-
エクセルの並び変えで、空白セ...
-
EXCELで 一桁の数値を二桁に
-
基準日よりも古い日付の列を削...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで二つの数字の小さい...
-
PowerPointで表の1つの列だけ...
-
エクセルで最初のスペースまで...
-
2つのエクセルのデータを同じよ...
-
エクセル(勝手に太字になる)
-
「B列が日曜の場合」C列に/...
-
エクセル 文字数 多い順 並...
-
EXCELで 一桁の数値を二桁に
-
エクセル 同じ値を探して隣の...
-
VBAで文字列を数値に変換したい
-
エクセルの並び変えで、空白セ...
-
Excelで半角の文字を含むセルを...
-
エクセルで文字が混じった数字...
-
Excel、市から登録している住所...
-
A列がない・・・A列が非表示に...
-
エクセルの表から正の数、負の...
-
[関数得意な方]教えて下さい・...
-
エクセルの項目軸を左寄せにしたい
-
エクセル 時間帯の重複の有無
-
Excelにてある膨大なデータを管...
おすすめ情報
私が未熟なせいか、実行したら1列目(A5)から並べ替えが実行され
マクロ編集画面で確認したら、列挙した列記号が赤色になっていました
大変申し訳ありませんが、助言お願い致します