ショボ短歌会

x + y + z + w =25 | 0 ≦ x, y, z, w ≦25 変数は整数

上記の条件を満たす変数の組み合わせを列挙するマクロの組み方を教えて下さい。

質問者からの補足コメント

  • 自然数、VBAでお願いします。

    No.1の回答に寄せられた補足コメントです。 補足日時:2021/01/08 13:23
  • 一応変数の範囲指定はしたつもりなのですが見辛い表記してたようでしたら申し訳ないです。

    No.2の回答に寄せられた補足コメントです。 補足日時:2021/01/08 13:26

A 回答 (5件)

以下のマクロを標準モジュールに登録してください。


Public Sub 合計が25()
Dim x As Long
Dim y As Long
Dim z As Long
Dim w As Long
Dim wrow As Long
Range("A1:D1").value = Array("x", "y", "z", "w")
wrow = 2
For x = 0 To 25
For y = 0 To 25
For z = 0 To 25
For w = 0 To 25
If (x + y + z + w) = 25 Then
Cells(wrow, 1).value = x
Cells(wrow, 2).value = y
Cells(wrow, 3).value = z
Cells(wrow, 4).value = w
wrow = wrow + 1
End If
Next
Next
Next
Next
MsgBox ("完了")
End Sub

添付図のような結果が、アクティブシートに作成されます。
「Excel、変数4つの和が25になる組み」の回答画像5
    • good
    • 0
この回答へのお礼

簡単に出来ました、有難うございます。

お礼日時:2021/01/08 13:53

あ、debug.printの行の次に


end ifを忘れています。
    • good
    • 0

0≼ってありましたね、すみません。


総当たりでよいなら、

for x = 0 to 25
for y= 0 to 25
for z = 0 to 25
for w = 0 to 25
if x+y+z+w=25 then
debug.print "(x,y,z,w)=(" & x & "," & y & "," & z & "," & w & ")"
next w
next z
next y
next x

回数を減らしたいなら、
角ループで、25を超えた場合に exit forをすればよいと思いますが、
件数などをチェックしながら作っていかないと、間違えちゃうかもしれませんので、、、
    • good
    • 0
この回答へのお礼

迅速な回答有難うございます、大変助かりました!

お礼日時:2021/01/08 13:55

「整数」には、負数も在る事は“承知之助”ですかァ~

この回答への補足あり
    • good
    • 0

>整数


自然数のことかな?
VBAでいいのかな?
この回答への補足あり
    • good
    • 0

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