ここから本文です

ExcelのVBAで、A1~A3に入力された文字をランダムに表示したいです。

アバター

ID非公開さん

2019/9/1815:16:36

ExcelのVBAで、A1~A3に入力された文字をランダムに表示したいです。

A1:イチゴ
A2:みかん
A3:バナナ

と入力されている場合、B1:D3の9つのセルの範囲で、ランダムにイチゴ、みかん、バナナが一箇所ずつ入るようにしたいです。残りのセルは空白のままです。
また、B1:D3のうち、文字があらかじめ入力されていたらそのセルは選ばれないようになっていてほしいです。(その場合、空きのセルが3つ以下になることはありません。)

宜しくお願い致します。

補足エクセルは2013を使用しております。
よろしくお願い致します。

r.Value,D3,B1,A1,A3,セル,1 To rng.Count

閲覧数:
39
回答数:
3
お礼:
500枚

違反報告

ベストアンサーに選ばれた回答

30246kikuさん

2019/9/1910:11:01

雰囲気、以下でどうなりますか


Option Explicit

Public Sub Samp1()
   Dim rng As Range, r As Range
   Dim jP() As Long
   Dim i As Long, k As Long, n As Long

   Randomize

   Set r = Range("A1")
   Set rng = Range("B1:D3")
   n = 0
   For i = 1 To rng.Count
      If (rng(i).Value = "") Then
         n = n + 1
         ReDim Preserve jP(1 To n)
         jP(n) = i
      End If
   Next

   Application.ScreenUpdating = False
   For i = n To 1 Step -1
      If (r.Value = "") Then Exit For
      k = Int(i * Rnd()) + 1
      rng(jP(k)).Value = r.Value
      jP(k) = jP(i)
      Set r = r.Offset(1)
   Next
   Application.ScreenUpdating = True
End Sub

  • アバター

    質問者

    ID非公開さん

    2019/9/1912:41:25

    ありがとうございます。
    教えていただいたコードで無事解決しました!

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

アバター

質問した人からのコメント

2019/9/19 12:41:46

とても助かりました!

ベストアンサー以外の回答

1〜2件/2件中

並び替え:回答日時の
新しい順
|古い順

プロフィール画像

カテゴリマスター

taihenda****さん

2019/9/1820:33:42

Sub test()
Dim r As Range, rng As Range, Frs
Frs = Application.Transpose(Range("A1:A3"))
Set rng = Range("B5:D7")
Randomize
For Each r In rng
r.Value = Rnd
Next
For Each r In rng
r.Offset(-4) = WorksheetFunction.CountIf( _
rng, ">" & r.Value) + 1
Next
For Each r In Range("B1:D3")
If r.Value < 4 Then
r.Value = Frs(r.Value)
Else
r.Value = Empty
End If
Next
rng.ClearContents
End Sub




B5:D7を作業セルとして使用します。

a_h********さん

2019/9/1817:27:39

>また、B1:D3のうち、文字があらかじめ入力されていた
>らそのセルは選ばれないようになっていてほしいです。
関数式で入力していないのなら、既存のデータが変化することはありません。

あわせて知りたい

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる