• ベストアンサー

エクセルで文字列の乱数を作るには?

例えば、 東京都、千葉県、神奈川県、栃木県、埼玉県、群馬県、茨城県の 7個の文字列があったとしまして、 エクセルでこの7個の文字列のうち5つをランダムで選んで結合し、ひとつの文にする方法はありますでしょうか? できれば、各々の間に『の』『と』『や』『が』『に』等の格助詞を入れて文にしたいと思っております。日本語としての意味は分からなくてもかまいません。 このようなひとつの文を各々の文字列が重複しないように順列で大量に作りたいと思っております。 例 1、千葉県の神奈川県に埼玉県の茨城県と群馬県 2、神奈川県と埼玉県の群馬県が千葉県や東京都 ・・・ セルで重複しないようにランダムに表示できれば、ひとつの文にするのはエディタ等でできますので、セルに表示させる段階まででもかまいません。 どうかよろしくお願いします。

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

  • ベストアンサー
  • gutoku2
  • ベストアンサー率66% (894/1349)
回答No.2

RAND関数とRANK関数を使用します。 RAND関数を7つのセルに使用すれば、同一の値が同時に発生する可能性は 限りなくゼロに近い。 よって、その7つの数字をRANK関数で順位付けすれば重複しない7つの数字 が完成します。 都県の乱数 A1セル~A7セルに  =RAND() を入力し乱数を発生 B1セル =RANK(A1,$A$1:$A$7)  ・・・ B7セル =RANK(A7,$A$1:$A$7)   ※B1~B7セルに1~7の重複しない整数 E1セル 1 E2セル 2 ・・・・ E7セル 7 F1セル 東京都 ・・・・・・  F7セル 茨城県 C1セル =VLOOKUP(B1,$E$1:$F$7,2,FALSE)  ・・・ C7セル =VLOOKUP(B7,$E$1:$F$7,2,FALSE) 同様に 「の」「が」等の乱数 A9セル~A14セルに  =RAND() B9セル =RANK(A9,$A$9:$A$14)  ・・・ B14セル =RANK(A14,$A$9:$A$14)   ※B9~B14セルに1~5の重複しない整数 E9セル 1 E10セル 2 ・・・・ E14セル 5 F9セル の ・・・・・・  F14セル を C9セル =VLOOKUP(B9,$E$9:$F$14,2,FALSE)  ・・・ C14セル =VLOOKUP(B14,$E$9:$F$14,2,FALSE) B17セル(結果ですからどこでも良いですが)に     =C1&C9&C2&C10&C3&C11&C4&C12&C5&C13&C6&C14&C7 と入力すれば、ご希望の結果が表示されます。

yamatoD
質問者

お礼

gutoku2様 長文のご回答ありがとうございました。 助かりました。しっかり文になっていて感動しました。 再度の質問で厚かましいですが、 最後のところで、 > =C1&C9&C2&C10&C3&C11&C4&C12&C5&C13&C6&C14&C7 というところですが、 5つ文を作るとなると、 C1&C9&C2&C10&C3&C11&C4&C12&C5&C13&C6&C14&C7 C2&C10&C3&C11&C4&C12&C5&C13&C6&C14&C7&C1&C9 C3&C11&C4&C12&C5&C13&C6&C14&C7&C1&C9&C2&C10 C4&C12&C5&C13&C6&C14&C7&C1&C9&C2&C10&C3&C11 C5&C13&C6&C14&C7&C1&C9&C2&C10&C3&C11&C4&C12 と1個ずつずれていくことになり、 千葉県の神奈川県に埼玉県の茨城県と群馬県 神奈川県に埼玉県の茨城県と群馬県を栃木県 埼玉県の茨城県と群馬県を栃木県は東京都 茨城県と群馬県を栃木県は東京都に千葉県 群馬県を栃木県は東京都に千葉県と神奈川県 という様にひとつの県が違うだけになります。 例えば、最後の段階で、C列の文字列をランダムにチョイスとかは できないでしょうか? お手数ですが、よろしくお願いいたします。

その他の回答 (2)

  • gutoku2
  • ベストアンサー率66% (894/1349)
回答No.3

#2です。 >助かりました。しっかり文になっていて感動しました。 お役に立てまして光栄です。 質問者さんの目的は分かりませんが、私の目的は達成できました。 (目的 : 私の頭の老化防止) >> =C1&C9&C2&C10&C3&C11&C4&C12&C5&C13&C6&C14&C7 >というところですが、 >5つ文を作るとなると、 >例えば、最後の段階で、C列の文字列をランダムにチョイスとかは できないでしょうか? ご質問の趣旨は、同時に5つのランダムチョイスされた文章を作りたい。 これでよろしいのであれば、一番簡単な方法は、 私の記載しました内容を Sheet1に作成します。 シート名の上にカーソルを置き 右クリック   移動またはコピー を選択し クリック  コピーを作成する にチェックをし OK をクリック   (シート名を変更しなければ、Sheet1(2)が出来ます) これを5回繰り返すと、5個のランダム文章発生シートが5つできます。 Sheet1のB18セルに ='Sheet1 (2)'!B17  B19に・・・・で5つの異なるランダム文章ができます。 但し、100とか同時に欲しい場合はマクロを作成します。 マクロの場合は、再度質問を立てられる事をお奨めします。 (この質問は、財務・会計・経理のカテゴリに立てられています。  カテ違いかと思われますので、正しいカテゴリに再質問されますか、  教えてネット等、マイクロソフトの製品に極めて特化したサイトで  の質問がよろしいかと思われます)

yamatoD
質問者

お礼

度々のご回答ありがとうございました。 うまくいきました。 確かに目的としては数千の文字列を作ることですので、 マクロが必要なのかも知れませんね。 どちらにしても親身になってご回答くださいまして、 心から感謝しております。 ありがとうございました。 gutoku2様の頭の回転。 老化どころかお若く。 失礼しました。

  • srafp
  • ベストアンサー率56% (2185/3855)
回答No.1

文章をつなげるための関数は「CONCATENATE」が使えると思います。 RAND関数による引用セル番号指定を考えてみましたが、重複を許さないとなると、この方法はダメですよね。

yamatoD
質問者

お礼

早速のご回答ありがとうございます。 繋げる関数は「CONCATENATE」ですね。ありがとうございます。 そうなんです。RAND関数やCHAR関数、VLOOKUP関数等いろいろ調べて試してはいるんですがダメなんです。。 がんばって調べてみます。

関連するQ&A

  • エクセルで、キーワード郡に含まれる文字列が含まれていたら、キーワードの

    エクセルで、キーワード郡に含まれる文字列が含まれていたら、キーワードのID番号を返す、という関数式を知りたいです。 A列     東京都春日部区    神奈川県松戸町 千葉県霞ヶ関 埼玉県錦糸町 東京都千代田区 千葉県小松菜 キーワード郡 東京 1 千葉 2 埼玉 3 神奈川 4 ↓↓↓結果↓↓↓ A列     東京都春日部区     1   神奈川県松戸町     4 千葉県霞ヶ関      2 埼玉県錦糸町      3 東京都千代田区     1 千葉県小松菜      2 といった具合です。 お分かりになる方いらっしゃいますでしょうか?

  • エクセル 重複する文字列からピックアップしたい

    A列に県名が並んでいます。 B列にA列の中で重複している物に上から番号を振りました。  B1=IF(A1="","",A1&COUNTIF($A$1:A1,A1)) C列に末尾に1とあるものだけをピックアップしました。  C1=IF(COUNTIF(B1,"*1"),(LEFT(B1,LEN(B1)-1)),"") ですが、21、31もピックアップされてしまいます。当然ですが・・・。 県名を一種類ずつピックアップするにはどのようにしたら良いですか?    A B C _______________________________________________ 1 | 東京    東京1   東京 2 | 神奈川  神奈川1  神奈川 3 | 千葉    千葉1   千葉 4 | 神奈川  神奈川2 5 | 埼玉    埼玉1   埼玉 6 | 東京    東京2 7 | 群馬    群馬1   群馬   21| 東京    東京21 東京2 22| 神奈川  神奈川31  神奈川3 23| 東京    東京22 24| 東京    東京23

  • エクセルの重複データを削除したい

    エクセルの重複データを削除したいです。重複項目を一つにまとめるのではなく、重複があれば、その項目を全て削除したいです。 シート処理前 ------------ 東京都 神奈川県 千葉県 埼玉県 群馬県 東京都 神奈川県 ------------ これを重複処理します。東京都と神奈川県が重複しているので削除します。 シート処理後 ------------ 千葉県 埼玉県 群馬県 ------------ このような処理をどうしても行いたいです。 実際のデータは1万件以上あり、手動では不可能でした。 どうかお知恵をお貸し頂けませんでしょうか?

  • 秀丸で置換かマクロで括弧をとりたい

    下記のような文字列の並びで、括弧と中の数字を 削除したいのですが、置換かマクロなどはあるでしょうか? 東京都(154) 千葉県(132) 茨城県(763) 埼玉県(3040) 群馬県(1178) 東京都 千葉県 茨城県 埼玉県 群馬県 (.*)で置換してみたんですが、すべて文字が なくなってしまいました(汗) 秀丸のバージョンは7.11です。

  • 関数に関しての質問です

    関数に関しての質問です 現在F列26とG列26のセルを合体させたF26という統合セルがあります。 =SUMPRODUCT((Sheet!$I$1:$I$5000={"茨城県","栃木県","群馬県","埼玉県","千葉県","東京都","神奈川県"})*ISNUMBER(FIND($AH3,Sheet!$M$1:$M$5000))) 上記のセルを横に引き伸ばした際に、 =SUMPRODUCT((Sheet!$I$1:$I$5000={"茨城県","栃木県","群馬県","埼玉県","千葉県","東京都","神奈川県"})*ISNUMBER(FIND($AH4,Sheet!$M$1:$M$5000))) 上記のような形で伸びていってほしいのですが、どうすればいいでしょうか。 尚、横に伸ばす先のセルも2つに統合されたものです。

  • Excel 連結

    表に 東京 神奈川 千葉 埼玉 茨城 栃木 群馬 1     1     1                1          1            1 1                   1 とはいって 1行目 東京,神奈川,千葉 2行目 神奈川,埼玉,群馬 3行目 東京,茨城 と1が立っているとこを間にカンマを入れて連結したいです。 Excelの関数かマクロでお願いします。

  • エクセルで特定の文字があると

    エクセルで特定の文字があると、となりのセルに自動で『不要』と表示させたいのですが、どういう方法があるのでしょうか? 例えば、A列に『都』又は『府』が含まれていればBセルに『不要』と表示させる。    A      B 1 東京都    不要 2 神奈川県   空白 3 埼玉県    空白 4 大阪府    不要 ご教授下さい。

  • 占い肯定派の皆様、関東地方に大きな地震は西暦何年何月何日に起こりますか?

    大きな地震 = マグニチュード7以上 関東地方 = 茨城県、栃木県、群馬県、埼玉県、千葉県、東京都、神奈川県 としています。地震が急に来たら怖いので、いつ来るのか教えてください。

  • 茨城県は人口が少なすぎると思う。

    東京都周辺の人口を見る限り、茨城県の人口ってなんで低いんですかね? 東京都と接している神奈川県、埼玉県、千葉県は人口が多いですが茨城県は少なすぎる気がします。 茨城県内はJR通ってますから、都心へのアクセスも出来るのに なんでなんだろうと不思議に思います。 それと、千葉県も埼玉県や神奈川県に比べると若干人口が少ないですが 東京都の東側はなぜ人口が少ない傾向なんでしょうか?

  • 住所を参照して関東なら関東と別セルに表示したいです

    D列に住所を入力したセルがあります。 B列にD列の同じ行にある住所を参照して、関東の住所なら「関東」と表示して それ以外なら、地方と表示させたいと思っています。 C2に =IF(MID($D2,4,1)="県",LEFT($D2,4),LEFT($D2,3)) と入力して都道府県名を表示させて B2に =IF(D2="","",IF(OR(東京都,神奈川県,埼玉県,千葉県,茨城県,栃木県,群馬県),"関東","地方")) と入力しました。 IFの使い方が、まだよく理解できていないため上に書いたような状態に出来なくて 前に進まなくなり頭を悩ませております。 また、C列に都道府県名を出すようにしたのは都道府県名を出したほうが やりやすくなるかなぁと思いやったことですので、C列の処理はいらない 方法などもあれば、無駄に1列増やさなくていいのでご教示頂けると 大変助かります。 ■まとめ  ・住所はD列に入力されている  ・B列(D列以外のどこかの列でもOK)に    住所が関東なら「関東」    住所がそれ以外なら「地方」  と表示したい  ・関東とは、以下の1都6県    東京都、神奈川県、埼玉県、千葉県、茨城県、栃木県、群馬県 よろしくお願い致します。

専門家に質問してみよう