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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 3つの条件を指定してVBAで行を削除したい 条件1:分類1が重複 条件2:分類2が重複 条件3:個数 6 2022/06/24 11:07
- Excel(エクセル) エクセルVBA 複数行にまたがっている選択を判定するには 2 2023/05/21 21:54
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Visual Basic(VBA) 複数シートの複数列に入力されているデータを重複なしで抽出するVBAを作りたいです。 9 2022/06/17 10:33
- Access(アクセス) AccessVBAで降順にするテーブル作成クエリを使用して作成したテーブルを削除し同一のテーブル作成 1 2023/01/06 11:17
- Visual Basic(VBA) PowerPoint VBA で画像の鮮明度を変更する方法がわかりません 2 2023/03/24 13:34
- その他(プログラミング・Web制作) python OpenPyXLを使って出力結果をエクセルに書き込み 2 2022/06/04 19:46
- Java Javaの問題なのですが、 永久ループを使って以下に従って数値を出力するプログラムを作成する。 ・1 3 2023/06/06 18:43
- Excel(エクセル) 表に書いてある単語を1つの行に重複させないで書き出したい。 複数の列行にそれぞれ職種が入力されている 6 2022/05/25 04:49
- Visual Basic(VBA) ChatGPTに作らせたい Excel VBA 1 2023/04/05 19:56
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
(UWSC)エクセルのセルの値を読...
-
MATLABによる整定時間の求め方
-
VBA-指定した範囲で重複しない...
-
VBAでオートフィルができません
-
EXCEL VBA 別シートの文字を...
-
エクセルVBAでsheet1!B2:B10ま...
-
Worksheets メソッドは失敗しま...
-
VBAマクロ実行時エラーの修正に...
-
VBA シートをコピーする際に Co...
-
マクロの「SaveAs」でエラーが...
-
【Excel関数】UNIQUE関数で"0"...
-
エクセルで特定の文字列が入っ...
-
vba 2つの条件が一致したら...
-
LEFT関数とIF関数の組み合わせ...
-
Excel VBAでのWorksheet_Change...
-
Cellsのかっこの中はどっちが行...
-
エクセルで離れた列を選択して...
-
Excelで空白セル直前のセルデー...
-
エクセルVBA 配列からセルに「...
-
別ブックをダイアログボックス...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
(UWSC)エクセルのセルの値を読...
-
VBA-指定した範囲で重複しない...
-
EXCEL VBA 別シートの文字を...
-
【Excel2002VBA】Destinationを...
-
DHCPサーバで複数のレンジを指...
-
ExcelのVBAで教えてください。 ...
-
IPアドレスを検査する関数
-
VBAでオートフィルができません
-
MATLABによる整定時間の求め方
-
エクセルで特定の文字列が入っ...
-
VBAマクロ実行時エラーの修正に...
-
マクロの「SaveAs」でエラーが...
-
VBA シートをコピーする際に Co...
-
エクセル マクロ オートフィ...
-
【Excel関数】UNIQUE関数で"0"...
-
エクセルで離れた列を選択して...
-
Worksheets メソッドは失敗しま...
-
VLOOKUPの列番号の最大は?
-
Excelで、あるセルの値に応じて...
-
B列の最終行までA列をオート...
おすすめ情報