色の知識で人生の可能性が広がる!みんなに役立つ色彩検定 >>

エクセルで、各桁の数を足すと32になる7桁の数字を発生させる方法を教えて下さい。

教えて!goo グレード

A 回答 (4件)

No.3の回答のように、乱数を使って、7桁の数字で各位の数の合計値が32になるのを発生させるのが、処理が速いです。


No.1やNo.2の方法だと、PCにもよるでしょうが、時間が懸かりすぎて実用性がないです。
No.3の方法と基本同じですが、ループ回数を少なくした方がちょっとは処理が速くなります。


Function U7_32() As Double
Dim PRM As Integer
Dim Pr1, Pr2, Pr3, Pr4, Pr5, Pr6, Pr7 As Integer

Randomize
PRM = 33
Do While (PRM > 32 Or PRM < 5)
Pr1 = WorksheetFunction.RandBetween(1, 9)
Pr2 = WorksheetFunction.RandBetween(0, 9)
Pr3 = WorksheetFunction.RandBetween(0, 9)
Pr4 = WorksheetFunction.RandBetween(0, 9)
PRM = Pr1 + Pr2 + Pr3 + Pr4
Loop
Do While (PRM > 32 Or PRM < 23)
Pr5 = WorksheetFunction.RandBetween(0, 9)
Pr6 = WorksheetFunction.RandBetween(0, 9)
PRM = Pr1 + Pr2 + Pr3 + Pr4 + Pr5 + Pr6
Loop
Pr7 = 32 - PRM
U7_32 = Pr1 * 1000000 + Pr2 * 100000 + Pr3 * 10000 + Pr4 * 1000 + Pr5 * 100 + Pr6 * 10 + Pr7

End Function
「各桁の数を足すと32になる7桁の数字を発」の回答画像4
    • good
    • 1

VBAアリ、なら関数作ればできます。



1.[Alt]+[F11]
  挿入 → 標準モジュール
  左側の Module1 をダブルクリック
  右側のエディタエリアに以下コードを貼り付け
Function make32()
Dim sn As Integer
Dim snt As Integer
Dim sns As String
Dim i As Integer
Do Until snt = 32
sn = Int(Rnd() * 9 + 1)
sns = CStr(sn)
snt = sn
For i = 1 To 6
sn = Int(Rnd() * 10)
sns = sns & CStr(sn)
snt = snt + sn
Next
Loop
make32 = Val(sns)
End Function

2.シートに戻って、発生させたいセルに =make32()
    • good
    • 2

先ずは、0,000,000から9,999,999の中で当該数を抽出し、


それを一覧表にして追番を付けます。
次に、追番の範囲で乱数を発生させ、一覧表から選択すればよいです。
    • good
    • 1

ランダムに発生させるということなのであれば、1004999から9995000までの数字のループを作って、桁の合計が32になるものだけを配列に格納して行って、ランダムに抽出するとか。

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

教えて!goo グレード

このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング