
No.8ベストアンサー
- 回答日時:
お望みの特定範囲内の「重複しない」乱数を生成するコードを書きます。
Dim A,B,AA,BB
A:発生させた特定範囲内の乱数
B:目的成果品の数
AA:発生させた特定範囲内の乱数の全て
BB:発生させた特定範囲内の乱数の内、重複していないものの集合(成果品)
AA=""
BB=""
B=0
Do
A=Int(101*Rnd+100)
AA=AA & "\" & A & "/"
IF Instr(AA,"\" & A & "/")=0 Then
BB=BB & "\" & A & "/"
B=B+1
Endif
Loop Until B=10
BBから成果品を取り出す方法又は、成果品の表示方法等はご自身でお考え下さい。
"\""/"はどんな文字列でもOK
No.6
- 回答日時:
回答1の方法がいちばん確実に素早くコタエを引き出せます
簡単な応用:
sub macro1()
worksheets.add
range("B1:B101").formula = "=RAND()"
with range("A1:A10")
.formula = "=RANK(B1,B:B)+99"
.value = .value
end with
range("B:B").clearcontents
end sub
バリエーション:
sub macro2()
worksheets.add
with range("A1:A101")
.formula = "=ROW(A100)"
.value = .value
end with
range("B1:B101").formula = "=RAND()"
range("A:B").sort key1:=range("B1"), header:=xlno
range("A11:A101,B1:B101").clearcontents
end sub
参考:こういうのは条件を厳しくしていくとどんどん脱出できなくなる
sub macro3()
range("A1:A10").formula = "=RANDBETWEEN(100,200)"
range("B1").formula = "=COUNT(1/FREQUENCY(A:A,A:A))"
do until range("B1") = 10
activesheet.calculate
loop
range("A1:A10").value = range("A1:A10").value
end sub
No.5
- 回答日時:
Do
intNum <- ランダムに生成した整数値
If strNum に inuNum が含まれない then
strNum <- sytNum & "," & intNum & ","
N <- N + 1
If N > 9 Then
Exit Do
End If
End If
Loop Until (0)
私ならば、",1,9,8,"と生成した整数を文字列として記憶します。
比較では replace を使い、取り出しにはCutStr関数の類を利用します。
? CutStr(",1,9,8,", ",", 2)
1
? CutStr(",1,9,8,", ",", 3)
9
? CutStr(",1,9,8,", ",", 4)
8
Private Function CutStr(ByVal Text As String, _
ByVal Separator As String, _
ByVal N As Integer) As String
Dim strDatas() As String
strDatas = Split("" & Separator & Text, Separator, , 0)
CutStr = strDatas(N * Abs(N <= UBound(strDatas))))
End Function
No.4
- 回答日時:
No.3
- 回答日時:
No.2は重複しないって条件が抜けてますね。
まあ、重複したら再度でいいと思うのですけどそんなにめんどくさいですかね。
Forじゃなくてwhileでやればあまり悩まないと思いますけど。
どうしてもというなら乱数の範囲を100から99と毎回減らして、既に出た乱数を元にマッピングすればいいと思いますけど、多重ループになってかえってめんどくさいですね。
この回答への補足
乱数の範囲を減らすのではなく、指定範囲の整数でデータベースを作成し、一つとって消す、という方が簡単かもしれませんね(範囲が少なければ、ですが)。
whileとuntilではほぼ同じことができますが、どちらの方が安定性がいいでしょうか。
No.1
- 回答日時:
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの式がわかる方がおら...
-
Microsoft Officeを2台目のPCに...
-
Excelで〇のついたものを抽出し...
-
大学のレポート A4で1枚レポー...
-
Microsoft Formsの「個人情報や...
-
office2019 のoutlookは2025年1...
-
マイクロソフト オフィスのサポ...
-
Office2024インストール後の疑問点
-
パソコンを買い替える際、前の...
-
Excel 日付を比較したら、同じ...
-
outlookのメールが固まってしま...
-
Office 2021 Professional Plus...
-
別シートの年間行事表をカレン...
-
エクセルで質問です。 ハイパー...
-
以下マクロの処理を最終行まで...
-
エクセル 日付順に並べてかえた...
-
VBAファイルの保存先について
-
会社のOutlookにてメールを予約...
-
MicrosoftOfficeの1ユーザー2...
-
Office2021を別のPCにインスト...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
(UWSC)エクセルのセルの値を読...
-
VBA-指定した範囲で重複しない...
-
MATLABによる整定時間の求め方
-
DHCPサーバで複数のレンジを指...
-
IPアドレスを検査する関数
-
【Excel2002VBA】Destinationを...
-
【マクロ】実行時エラー '424':...
-
「段」と「行」の違いがよくわ...
-
【Excel関数】UNIQUE関数で"0"...
-
エクセルで離れた列を選択して...
-
Excel UserForm の表示位置
-
マクロの「SaveAs」でエラーが...
-
特定の文字がある行以外を削除...
-
Cellsのかっこの中はどっちが行...
-
Worksheets メソッドは失敗しま...
-
別ブックをダイアログボックス...
-
VBAマクロ実行時エラーの修正に...
-
vba 2つの条件が一致したら...
-
Excel グラフのプロットからデ...
-
Excelで、あるセルの値に応じて...
おすすめ情報