重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

5×10のマス計算問題を作りたいのですが、たての5マスには0から9の範囲でダブりのない5つの整数を入れ、よこの10マスには10から19の範囲でだぶりのない10の整数を入れたいとおもいます。
どのようなマクロになりますか?

A 回答 (6件)

夜遅くに何度もごめんなさい。


No.2・3です。

縦の数値0~9までの訂正です。

No.2の表で
A3セルに =RAND() として、A12までオートフィルでコピーしてください。
次にB3セル=RANK(A3,$A$3:$A$12)-1 として、B7セルまでオートフィル
これで何とか0~9までの数字がランダムに表示されると思います。

尚、作業列のA列と1行目はドラッグして見えなくした方がいいかもしれません。

どうも何度も何度も失礼しました。m(__)m
    • good
    • 0
この回答へのお礼

素人にも分かりやすく、バッチリ働きます。感謝申し上げます。

お礼日時:2009/05/03 23:41

(画面幅を広くして読んでください)


0.9794  0  何処かの空いた範囲に左に示す表を作成して、左上隅のセルに
0.7414  1  (例えば)origin という名前を付けておきます。なお、当該
0.8854  2  セルには式 =RAND() を入力して、此れを下方にズズーッとドラッ
0.1497  3  グ&ペーストします。
0.6622  4
0.1535  5  任意のセルに式1を入力して、此れを下方の4セルにドラッグ&
0.9752  6  ペーストすれば、「たての5マスには0から9の範囲でダブりの
0.7109  7  ない5つの整数」が表示されます。
0.2802  8
0.8413  9  任意のセルに式2を入力して、此れを右方の9セルにドラッグ&
0.5487 10  ペーストすれば、「よこの10マスには10から19の範囲でだ
0.4236 11  ぶりのない10の整数」が表示されます。
0.6299 12
0.3820 13  「どのようなマクロになりますか?」と仰る貴方なら、此れをマク
0.6589 14  ロ化するのは“お茶の子”かと。
0.5494 15
0.6504 16
0.8930 17
0.6976 18
0.1771 19

式1: =VLOOKUP(SMALL(OFFSET(origin,,,10),ROW(A1)),OFFSET(origin,,,10,2),2,FALSE)
式2: =VLOOKUP(SMALL(OFFSET(origin,10,,10),COLUMN(A1)),OFFSET(origin,10,,10,2),2,FALSE)
    • good
    • 0
この回答へのお礼

うまくいきました。たいへんありがとうございます。

お礼日時:2009/05/03 23:40

出力先が分らんので、適当に



Sub test()
Dim h As Variant, h_t As Variant
Dim v As Variant, v_t As Variant
Dim i As Integer
Dim iNum As Integer
i = 0
Do Until i = 5
iNum = Int((9 + 1) * Rnd)
If InStr(h_t, iNum) = 0 Then
i = i + 1
If h_t = "" Then
h_t = iNum
Else
h_t = h_t & " " & iNum
End If
End If
Loop
i = 0
Do Until i = 10
iNum = Int((9 + 1) * Rnd + 10)
If InStr(v_t, iNum) = 0 Then
i = i + 1
If v_t = "" Then
v_t = iNum
Else
v_t = v_t & " " & iNum
End If
End If
Loop
h = Split(h_t)
v = Split(v_t)
Range("b1:k1") = v
Range("a2:a6") = WorksheetFunction.Transpose(h)
End Sub
    • good
    • 0
この回答へのお礼

どういう意味なのかは分かりませんが、バッチリでした。感謝申し上げます。

お礼日時:2009/05/03 23:43

No.2です!


先ほどの回答では縦が1~5までしか表示されないので
参考にならないと思います。
読み流してください。
どうもごめんなさい!m(__)m
    • good
    • 0

こんばんは!


参考になるかどうか判りませんが・・・

↓の画像のような感じでいいかと思い、回答します。

A3セルに=RAND() と入力してA7までオートフィルでコピー
(この場合小数点表示桁上げで小数点以下を4~5桁くらいにしておいた方がいいかもしれません)
同様にC1セルも=RAND() としてL1までオートフィル
次にB3セル=RANK(A3,$A$3:$A$7) として同じB7までオートフィルでコピー
(この場合も小数点以下4~5桁を表示させておきます)

C2セルに=RANK(C1,$C$1:$L$1)+9 でL2までオートフィル
(多分####となるかと思いますので、小数点表示桁下げで整数の表示にすればOKかと)

確認の意味でF9キーを何度か押してみてください。
多分重複はしないと思いますが・・・

以上、無理矢理って感じの回答ですが、参考になれば幸いです。
尚、的外れの回答なら読み流してください。m(__)m
「指定した範囲の乱数を指定した数だけ発生さ」の回答画像2
    • good
    • 0

http://okwave.jp/qa4926287.html
ここの
'Dictionaryの登録数が100になるまでループ 以下で
0~9のうちだぶらない5個と、10~19のうちだぶらない10個を
導くようにすればいいのではないかと?
・・・違うかな。
    • good
    • 0
この回答へのお礼

どうもありがとうございました。

お礼日時:2009/05/03 23:37

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