• ベストアンサー

Excelで指定した範囲内に値を一定数配置したい

皆様、お力を貸して下さい。 Excelにて、指定した範囲内に値を一定数配置したいです。 例えば、A1からC50までの範囲に、"1"という値を、全部で8個セルに入力したいです。 どの場所に入れるかはランダムに指定したいです。 VBAを使用しなくてはいけないんだと思っていますが、 ランダムにセルを指定する部分がよくわかりません。 どなたか教えていただけないでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんにちは! VBAではなく関数でやってみました。 E・F列を作業用の列として使用します。 E1セルに 1 を入力 → E1セルを選択 → フィル(Excel2007以降ですと、画面左上にあるΣのアイコンの下にある、下向き矢印のアイコンをクリック) → 連続データの作成 → 「列」を選択 → 「停止値」に150と入力しOK これでE1~E150セルに1からの連番が表示されます。 次にF1セルに =RAND() という数式を入れ、フィルハンドルでダブルクリック! このE・F列のデータを参照します。 A1セルに =IF(VLOOKUP(3*(ROW(A1)-1)+COLUMN(A1),$E:$F,2,0)<=SMALL($F:$F,8),1,"") という数式を入れC1セルまでフィルハンドルでコピー → そのまま C50セルまでコピー! これでF9キーを押すたびに、A1~C50セルに8個の「1」が表示されます。m(_ _)m

noname#192980
質問者

お礼

ご回答ありがとうございます! また返信が遅れてしまいごめんなさい。 このようなやり方があったのですね! 全然そのような発想に至りませんでした・・・ 最初に回答して頂いたので、ベストアンサーにしたいと思います。

すると、全ての回答が全文表示されます。

その他の回答 (2)

回答No.3

No.1 さんみたいに、作業列と SMALL 関数でできると思います。ベストアンサーは辞退します。 あえて VBA なら、次のような感じで、素直に。セル範囲、セルの個数、記入する値などをユーザーが自由に指定する仕組みについては、いろいろ考えてください。 Sub ArrangeValuesAtRandom()   Dim rng As Range   Set rng = Range("a1:c50")   rng.ClearContents               '既存データを消去   Randomize                   '乱数系列を更新   Do Until WorksheetFunction.Count(rng) = 8     rng(Int(Rnd * rng.Count) + 1).Value = 1  '各ループにおいて記入するセルの番号(位置)をランダムに指定   Loop End Sub

noname#192980
質問者

お礼

ご回答ありがとうございます。 教えて頂いた方法を元に、範囲や記入する値を色々な方法で変えられるように考えてみます!

すると、全ての回答が全文表示されます。
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

>指定した範囲内に値を一定数配置したい ALT+F11を押す 現れた画面で挿入メニューから標準モジュールを挿入する 現れたシートに下記をコピー貼り付ける sub macro1()  dim n as long ’ n = inputbox("count?")  n = 8  if n > selection.count or selection.areas.count > 1 then   msgbox "N/A"   exit sub  end if  selection.clearcontents  do until application.countif(selection, 1) = n   selection(int(rnd * selection.count) + 1) = 1  loop end sub ファイルメニューから終了してエクセルに戻る 1を記入したいセル範囲を選ぶ ALT+F8を押してマクロを実行する。

noname#192980
質問者

お礼

ご回答ありがとうございます。 教えて頂いた方法でできることを確認致しました。 今後同様の内容をVBAで行う際に、参考にさせて頂きます!

すると、全ての回答が全文表示されます。

関連するQ&A