
No.6ベストアンサー
- 回答日時:
>1から9までの数を順不同に毎回取り出せる関数はどうしたらいいのでしょう
◆補助列を使いますが
.....................A.....................B
1..........0.443929945..........7
2..........0.673226283..........4
3..........0.606785989..........5
4..........0.684520785..........3
5..........0.282434013..........9
6..........0.892145097..........1
7..........0.844990705..........2
8..........0.443858791..........8
9..........0.471973758..........6
A1=RAND()
★A9まで下にコピー
B1=RANK(A1,$A$1:$A$9)
★B9まで下にコピー
★F9を押すと数字が変更します
No.7
- 回答日時:
文字列のまま入れ替えをすると遅いので、数値配列の入れ替えに変更してみた。
Function rand123() As String
Dim ans As String
Dim sa(9), st, i, e, a, b As Integer
For i = 0 To 8
sa(i) = i + 1
Next
e = Int(Rnd() * 50) + 50
For i = 1 To e
a = Int(Rnd() * 9)
b = Int(Rnd() * 9)
st = sa(a)
sa(a) = sa(b)
sa(b) = st
Next
ans = ""
For i = 0 To 8
ans = ans & Mid("123456789", sa(i), 1)
Next
rand123 = ans
End Function
No.5
- 回答日時:
次のいずれかの方法でできます。
その1
まず、Aの列に乱数を9こ並べます。
つまり、A1からA9のセル全部に =rand() を入れることになります。
次に、B1のセルに =RANK(A1,$A$1:$A$10) と入れて、これを
オートフィルで9個並べます。
この結果、B1には =RANK(A1,$A$1:$A$10) 、B2には =RANK(A2,$A$1:$A$10)
・・・B9には =RANK(A9,$A$1:$A$10) となります。
こうすれば、1~9の数字が重複しないランダム順で取り出せます
その2
まず、A1からA9まで =rand() を入れるのは同じです。
次に、B1からB9のセルに、1~9までの数字を入れます。
最後に、A1からB9までを選択して、ツールバーから「データ」->「並び替え」を選び、
「最優先されるキー」でA列を選んでOKすれば1~9がランダム順で並べ変わります
工夫次第で色々できますので、これでは思っていたものと違うという場合には
またご質問ください
No.4
- 回答日時:
標準モジュールに以下の関数を作る。
Function rand123() As String
Dim str As String
Dim i, e, s, l As Integer
e = Int(Rnd() * 50) + 50
str = "123456789"
For i = 1 To e
s = Int(Rnd() * 8) + 1
l = Int(Rnd() * (8 - s)) + 1
str = Mid(str, s, l) & Left(str, s - 1) & Mid(str, s + l, 9)
str = Mid(str, s + l, 9) & Mid(str, s, l) & Left(str, s - 1)
str = Mid(str, s, l) & Mid(str, s + l, 9) & Left(str, s - 1)
Next
rand123 = str
End Function
セルに
=rand123()
と書けばOK。
そのまま単純に考えると「1~9を1桁づつ重複しないように乱数で出せばよい」と思うが、重複チェックは遅いし難しい。
しかし「1~9が重複しないように並んでいる時に、乱数で順番を入れ替える」のは簡単。
元が「重複してない」なら、どう並び替えた所で「重複してない」のは変わらない。
発想の転換が重要。
他の回答者さんも質問文を良く読んで。質問者さんは、単に「1~9の乱数が欲しい」と言っている訳じゃない。
No.1
- 回答日時:
RNAD関数を使います。
以下RAND関数のHelpです。0 以上で 1 より小さい乱数を発生させます。ワークシートが再計算されるたびに、新しい乱数が返されます。
書式
RAND()
解説
a と b の範囲で乱数を発生させるには、次の数式を使います。
RAND()*(b-a)+a
RAND 関数で乱数を発生させた後、ワークシートが再計算されるたびに乱数の値が変更されないようにするには、数式バーに「=RAND()」という数式を入力して F9 キーを押し、数式を計算結果の乱数に置き換えます。
1から9の乱数であれば
RAND()*(9-1)+1 でよろしいかと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
表計算ソフトでの様式の呼称
-
vba テキストボックスとリフト...
-
エクセルのVBAで集計をしたい
-
【マクロ】数式を入力したい。...
-
【マクロ】実行時エラー '424':...
-
【マクロ】元データと同じお客...
-
【マクロ】左のブックと右のブ...
-
他のシートの検索
-
【画像あり】オートフィルター...
-
【マクロ】【配列】3つのシー...
-
Office2021のエクセルで米国株...
-
【マクロ】【相談】Excelブック...
-
エクセルでフィルターした値を...
-
【画像あり】【関数】指定した...
-
エクセルのリストについて
-
エクセルに写真が貼れない(フ...
-
エクセルのライセンスが分かり...
-
エクセルの複雑なシフト表から...
-
【関数】=EXACT(a1,b1) a1とb1...
-
エクセルシートの見出しの文字...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【マクロ】元データと同じお客...
-
エクセルの関数について
-
【画像あり】オートフィルター...
-
エクセルのVBAで集計をしたい
-
エクセルのリストについて
-
【マクロ】数式を入力したい。...
-
【マクロ】【相談】Excelブック...
-
Office2021のエクセルで米国株...
-
【マクロ】実行時エラー '424':...
-
他のシートの検索
-
エクセルの複雑なシフト表から...
-
【マクロ】【配列】3つのシー...
-
vba テキストボックスとリフト...
-
【マクロ】左のブックと右のブ...
-
【マクロ】変数に入れるコード...
-
エクセルシートの見出しの文字...
-
【マクロ】別ファイルへマクロ...
-
【関数】同じ関数なのに、エラ...
-
Amazonでマイクロソフトオフィ...
-
ページが変なふうに切れる
おすすめ情報