• ベストアンサー

文字列のランダム表示のVBA(エクセル)

A1をダブルクリックすると、A1に7つの文字列がランダムに表示される。 追加条件として、先頭の文字は"a""c""f""h""k""9"に限定される。 2文字目から最後の文字までは、"0""1""2""5""6""7""8""x"に限定される。 例として、 f010156 a666082 k702x15 9xx7587 上記のVBAを教えていただきたいのですが。 よろしくお願いいたします。

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

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.2

一例です。 ANo1さんとの違いは、 ダブルクリックでセルが編集状態になるのをとめたことと、 毎回違った乱数系列を発生させるために、Rnd関数を呼ぶ前に Randomize ステートメントを使用したことです。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim myAr1, myAr2 '変数宣言 Dim myRnd As String If Target.Address <> "$A$1" Then Exit Sub 'A1以外停止 Randomize '乱数初期化 myAr1 = Split("a,c,f,h,k,9", ",") '先頭文字候補配列 myAr2 = Split("0,1,2,5,6,7,8,x", ",") '後続文字候補配列 myRnd = myAr1(Int(Rnd * 6)) '1文字目 For i = 1 To 6 '2文字目以降 myRnd = myRnd & myAr2(Int(Rnd * 8)) '2~7文字目 Next i '繰り返し Target.Value = myRnd '値入力 Cancel = True '編集状態停止 End Sub

rjdtng
質問者

お礼

大変参考になりました。 ありがとうございました。

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

その他の回答 (1)

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.1

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) MJ1 = "acfhk9" '1文字目の文字列 MJ2 = "0125678x" '2文字目以降の文字列 If Target.Address = "$A$1" Then 'A1限定 MJ3 = Mid(MJ1, Rnd * 5 + 1, 1) '1文字目確定 For i = 2 To 7 '2文字目以降の繰り返し MJ3 = MJ3 & Mid(MJ2, Rnd * 7 + 1, 1) '2-7文字目の確定 Next i Target.Value = MJ3 'セルに値セット End If End Sub

rjdtng
質問者

お礼

希望どおりのことができました。 ありがとうございました。

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

関連するQ&A

  • [C#]2つのランダム文字列を作りたい

    いつもありがとうございます。 2種類のランダム文字列を作りたいのですが、 なぜか同じ文字列が作成されるという現象が起こります。 以下の関数を用意して public static string ランダム(int 桁数) { string[] codelist = new string[] { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z" }; Random Random = new System.Random(); for (int i = 0; i < 桁数; i++) { randomcode += codelist[Random.Next(0, 36)]; } return randomcode; } textBox1.Text = ランダム(10); textBox2.Text = ランダム(10); とやっても、同じランダムの文字列が入ってしまいます。 間に、 Thread.Sleep(100); とか入れると変わるのですが・・・ 理由がわかりません。 初心者的質問ですみませんがよろしくお願いします。

  • Excel2007VBAで列ごとにランダム並べ替え

    Excel(エクセル)2007VBAを使った、 コマンドボタンを押すたびに「ある一列のデータをランダムに並べ替える」VBAソースが知りたいです。 (Google検索をかなりしたのですが、この条件を満たすVBAソースが見つかりませんでした。) ----------------------------------- たとえば、 【A列】に A1:えんぴつ A2:消しゴム A3:定規 A4:コンパス A5:赤ペン A6:下敷き A7:ノート A8:クリアファイル A9:クリップ A10:色鉛筆 と入力したとします。 そして、コマンドボタンを一回押します。   ↓↓↓ 【A列】が A1:下敷き A2:ノート A3:クリップ A4:コンパス A5:定規 A6:色鉛筆 A7:えんぴつ A8:赤ペン A9:消しゴム A10:クリアファイル ↑のように、 【A列】にある「えんぴつ」「消しゴム」「定規」「コンパス」「赤ペン」「下敷き」「ノート」「クリアファイル」「クリップ」「色鉛筆」の文字が、【ランダムで並べ替え】されるようにしたいです。 【補足】 ※1回限定のランダム並べ替えではなく、コマンドボタンを押すたびに【何度でも】ランダム並べ替えできるようにしたいです(回数無制限のランダム並べ替えがしたいです)。 ※上記の【A列】に並べた文字はあくまで例です。実際は、【A列】に自由に文字を入力できる応用の利く仕様にしたいです(Excelの【A列】に、どんな言葉や数字を直接入力してもランダム並べ替えできる、という意味です)。 ※上記の【A列】が10行というのもあくまで例です。実際は、【A列】が何行にでも対応できる仕様にしたいです(具体的には【A列】が、時間がかかってでも5000行くらいまで対応できるのが理想です)。 実際はVBAを使わなくてもランダム並べ替えはできるのですが、その方法は効率が悪いと分かったので効率のため、コマンドボタンひと押しでランダムに並べ替えられる【VBAソース】が知りたいです。 上記の条件を満たすVBAソースがわかる方がいましたら、どうかご教授ください。 よろしくおねがいします。

  • Excelで文字列のランダム表示

    当方、Excelは簡単な関数を使うレベルです。 マクロはほとんど使用した事が無く、 VBAは使用したことがありません。 最終的な目標は 同一の問題に対して、回答はランダムな答えを選択を用意するという物です。 例えば A1に問題 A5-E5に  L1ーL40の一覧に用意した文字列をそれぞれランダムに入れるという形にしたいと思っています。 現状では答えがかぶってしまっても良いです。 最終的にはボタンで更新となれば理想です。 関数、マクロの使用、VBAの使用でも良いのですが、 できるだけ簡単な方法を探しています。 RAND関数・乱数生成など考えましたが、 考え方が間違っているのか、今の所上手く出来ません。 大変恐縮ですが、何を使用して行うのか、 また、手順を教えていただけると嬉しいです。

  • エクセルでランダム表示

    今は『=INDEX( : ,COUNTA( : )*RAND()+1)』で、F9を押す毎に指定した列からランダムで値を持ってきてるんですけど 上記のを使ってE列の中からA列にランダムで表示して それと同時にA列に表示されたE列の値があるのと同じ行にあるF列の値をB列に表示させたいんですけど どのようにすれば良いんでしょうか? 例えば、F9で更新した後にランダムで、    A列     B列 [E列2行目][F列2行目] [E列8行目][F列8行目] [E列5行目][F列5行目] みたいな結果を出したいんです

  • Excel VBA BeforeDoubleclickについて

    VBA初心者です。 拙いスキルではどうにもならなくて困っております。 お分かりになられる方おられましたら ご教授ください。 _|___A___|___B___|___C___|_ 1| aaa | bbb | ccc 2| ddd | eee | fff 3| 4| --- | +++ | *** 5| ### | $$$ | &&& 6| %%% | ???? | \\\ 7| >>> | <<< | /// 8| 以上のような表がありまして、 セルをダブルクリックした場合、たとえば A4,A5をダブルクリックするたび⇒A1文字列にA4/A5文字列を追加 A6,A7をダブルクリックするたび⇒A2文字列にA6/A7文字列を追加 4~7行目以外をダブルクリック⇒何もしない という動作を各行ごとに実行(A列はA1/A2,B列はB1/B2へと追加) していくことができますでしょうか? サンプルコードなどご教授いただけますと幸いです。 何卒よろしくお願いいたします。

  • vba 文字列の並び替え

    こんにちは! VBAにて以下の処理をしたいのですがどうやっても上手くいかず悩んでます。 A列には文字列B列には数字が入っています。 B列を昇順で並び替えし且つA列に指定した文字列がある場合先頭にデータを昇順で持ってくる。 ※B列で並び替えたあとにif構文で切り取り→挿入を試みたのですがどうしても昇順にならず 泣 どうかご教授下さい(ToT) 宜しくお願い致します。 A B EEEE 1 EEEE 2 RRRR 3 RRRR 4 FFFF 5 DDDD 6 上記の状態からRRRRを先頭に持っていき昇順で並び替えする。

  • Excelで、文字列を含むセルの検索をしたい

    Excelで、文字列を含むセルの検索をしたいと思います。 列Aには、探したい文字列(市町村名)が800行入っています。 (1行目)○○市 (2行目)△△町 (3行目)□□□村 ・・・以下続く・・・ 列Bには、検索対象となる文字列(住所)が7000行入っています。 (1行目)XX県XX市XX-XX-XX (2行目)XX県○○市XXXXXX-XXX-X (3行目)XX府XXX郡□□□村XXX ・・・以下続く・・・ このとき、 「列Aにある文字列(市町村名)を含む列B(住所)のセル」を検索したいのです。 (上記の例の場合は2行目・3行目がヒット。) シートや列は追加してかまいません。 件数が多いため、どのように探すと効率的か見当がつきません。どなたかよい知恵をお貸しください。よろしくお願いします!

  • ランダム文字列

    srand; @array = a .. z; @new; while ( @array ) { push( @new, splice(@array , rand @array , 1) ); } print @new, "\n\n"; print "<br>"; print @new, "\n\n"; print "<br>"; print @new, "\n\n"; ↑のような感じでランダム文字列の作成を考えています。 上記スクリプトですと、 aewpodigtusnkjycfxvmzqrlhb aewpodigtusnkjycfxvmzqrlhb aewpodigtusnkjycfxvmzqrlhb ↑のようにどの行も同一文字列になってしまいます。これを、行毎に異なった8文字のランダム文字列にしたいのですが、方法がわかりません。 いっぺんに100行のランダム文字列を生成する必要があります。どうぞよろしくお願いいたします。

    • ベストアンサー
    • Perl
  • エクセル VBA

    エクセルVBAで以下のようなデータがあります。 D列の文字列と右隣のE列の文字列の2つが入っているものをA列から探し、見つかったセルの上にセルを追加し、E列の右隣のF列に入っている文字列を代入したいです。 どのようなプログラムになりますか?

  • エクセルにて 文字を検索して、その文字を返す方法

    教えてください。 仮に番号1~3の列があったとします。そこに文字があります。番号4に、『XX5F』から始まる文字を返したいのですが、どうしてもうまくいきません。(この場合一行目は番号1のXX5F/25H01、二行目は番号2のXX5F/43H06というようにです) XX5Fのあとがそれぞれ違いますが、これは関数を使い一発で出来ますでしょうか。どうしても出来なくて困っています。よろしくお願いいたします。 番号1    番号2        番号3      番号4 XX5F/25H01 5F/25-01    5F/03-06 5F/43-06    XX5F/43H06 5F/45-01 5F/41-01    5F/41-02    XX5F/41H04

専門家に質問してみよう