![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
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を探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・「I love you」 をかっこよく翻訳してみてください
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・昔のあなたへのアドバイス
- ・かっこよく答えてください!!
- ・あなたが好きな本屋さんを教えてください
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・【大喜利】【投稿~8/27】 こんなガソリンスタンド二度と来るか!なぜそう思った?
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・【お題】動物のキャッチフレーズ
- ・【お題】甲子園での思い出の残し方
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・自分用のお土産
- ・人生で一番お金がなかったとき
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・ちょっと先の未来クイズ第1問
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
この様式の雛形を作るとしたら...
-
Microsoft Officeを2台目のPCに...
-
Windows 11で、IME言語バー(IM...
-
one drive使えるpcを買う
-
エクセルでXLOOKUP関数...
-
Excel テーブル内の空白行の削除
-
Outlook 電源OFFの受診の仕方
-
大学のレポート A4で1枚レポー...
-
Excel SUMIF別ブックのシート名...
-
outlookのメールが固まってしま...
-
office365って抵抗感ないですか?
-
Office 2021 Professional Plus...
-
【Excel】セル内の文字が正しい...
-
SUMIFS関数について
-
excel2010の更新プログラムにつ...
-
マイクロソフト 一時使用コード...
-
漫画喫茶のローカルフォルダに...
-
Officeを開くたびの「再起動メ...
-
teams設定教えて下さい。 ①ビデ...
-
Outlookで、任意のメールアドレ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
(UWSC)エクセルのセルの値を読...
-
【Excel2002VBA】Destinationを...
-
VBAでオートフィルができません
-
EXCEL VBA 別シートの文字を...
-
DHCPサーバで複数のレンジを指...
-
VBA-指定した範囲で重複しない...
-
VBA Excel
-
MATLABによる整定時間の求め方
-
IPアドレスを検査する関数
-
エクセルVBAでsheet1!B2:B10ま...
-
B列の最終行までA列をオート...
-
VBAマクロ実行時エラーの修正に...
-
VBA シートをコピーする際に Co...
-
Worksheets メソッドは失敗しま...
-
あああ..ああい..ああう とい...
-
マクロの「SaveAs」でエラーが...
-
エクセルVBAが途中で止まります
-
エクセルで特定の文字列が入っ...
-
「段」と「行」の違いがよくわ...
-
Excelで、あるセルの値に応じて...
おすすめ情報