![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
いつもお世話になっております。よろしくお願いします。
Excelでしりとりを作りたいです。
100個ほどの単語があるとします。
最初の文字と最後の文字を抽出することが可能ですよね?
それを踏まえてそれらをつないでしりとりを作る事は可能でしょうか?
結果的に100個の単語が全部繋がらなくてもそれは仕方がないのですが、なるべく長くしりとりでつながると理想的です。
極力同じ言葉は二度と使わないようにしたいですが、使うことでしりとりが長くつながるのであればそれはそれで構わないです。
ちなみに添付画像のA2は「き」で繋げ、A14は「じ」で繋ぐというように、いまは後ろから2つ目の文字で繋げていますが、
仲間内で使うだけなので、そのあたりはあいまいでも差支えないです。
できれば関数などで簡単にできれば良いのですが、何かマクロなどを使わないといけなかったりVBなどを使わないといけないのであればなるべく簡単な方法を教えてください。
![「Excelでしりとりを作る方法」の質問画像](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/3/765806_5d0d96e17f9c2/M.jpg)
No.3
- 回答日時:
No.2です
先ほどお答えした関数少し不備がありますね(-_-;)
E1:=INDEX($B:$B,MATCH($D1,$C:$C,0)+IF(COUNTIF($C:$C,$D1)=0,1,INT(RAND()*COUNTIF($C:$C,$D1)+1))-1)
これを
E1:=INDEX($B:$B,MATCH($D1,$C:$C,0)+IF(COUNTIF($C:$C,$D1)=1,1,INT(RAND()*COUNTIF($C:$C,$D1)+1))-1)
にしてください。
ただし、参照元のデータが変更されていくため今回の関数では100%の回答が得られません。ただこれ以上の方法が思いつかないのも事実ですが・・・・・
ちなみに表を挿入タブのテーブルに変換しておくと追加削除などの作業が楽になりますよ♪
No.2
- 回答日時:
まずは定義を明確にしましょう
No.1の方も仰られているように、半音や濁音等の場合にどう動くかを明確にしなければ関数を組めません。
画像でいただいた情報を元にサンプルで関数を組みましたので参考までにお試しください
前提条件:
①D列の条件として、末尾が『ン』および『-』の場合には後ろから2番目の文字とする
②全ての末尾の文字から始まる語句が必ず存在する
③濁音で終了した場合には濁音で開始するもののみを有効とする
④半音で終わるものには対応していない
B1:=PHONETIC($A1)
C1:=LEFT($B1,1)
D1:=IF(RIGHT($B1,1)="ン",MID($B1,LEN($B1)-1,1),IF(RIGHT($B1,1)="ー",MID($B1,LEN($B1)-1,1),RIGHT($B1,1)))
E1:=INDEX($B:$B,MATCH($D1,$C:$C,0)+IF(COUNTIF($C:$C,$D1)=0,1,INT(RAND()*COUNTIF($C:$C,$D1)+1))-1)
あとはデータ終了までフィルでコピーしてください
E列に次の語句がランダムで表示されますので、順に追いかけていけば良いです。ちなみに次の語句が何行目のデータか知りたければF列等にE列の関数内の後ろの部分にある『MATCH($D1,$C:$C,0)+IF(COUNTIF($C:$C,$D1)=0,1,INT(RAND()*COUNTIF($C:$C,$D1)+1))-1』を記載し、E列にはF列を参照するようにすれば対応出来ます。
尚、ランダム関数を使用していますので、シート内でなんらかの変更があるたびに再計算が行われ表示データが変わりますのでお気を付けください(笑)
No.1
- 回答日時:
RIGHT(,1),LEFT(,1)が判っておられるのですよね。
でしたら自動ではありませんが、その文字がそれぞれに何個あるかを
COUNTIFで数えれば繋げられる可能性について判断できます。
つまり、片方が0の言葉は使えません。
正確には最初と最後なら使えますが。
また開始文字の個数と終了文字の個数の差が大きい場合小さい方の組み合わせしか
使えない事になります。
この数字を見ながら語彙を準備するのが妥当ではないかと。
>そのあたりはあいまいでも差支えないです。
貴方が差し支えないと考えるのは全く無意味、
むしろ曖昧は混乱を招くだけ。
曖昧はコンピューターにとって困難な処理ということは
記憶に留めてほしいです。
長音と「ん」が最後にくる場合は前の文字を用いると
明確にするか、諦めるかの2択です。
あと、拗音(「きゃ」 とか 「くぁ」 とか)を
2文字を一文字扱いで取り扱うか等の定義も必要かと。
そんな言葉は取り上げないというのが最も簡単な解ですけどね。
実際の作業でしりとりにする為の補助的な条件書式を準備すれば
手動でも出来るんじゃないかな、100個でしょ。
使用済みの文字列を白化とか、最後に選んだ文字列列に繋がる文字を
着色するとかすれば、プログラム考えてる時間より早くに終わるかと。
ありがとうございます。
実際に使うときは800個になるんですが(笑)
>貴方が差し支えないと考えるのは全く無意味、
>むしろ曖昧は混乱を招くだけ。
勉強になります<(_ _)>
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- 統計学 統計分析とExcelに詳しい方、何卒よろしくお願いいたします。 6 2022/05/27 10:30
- 哲学 説得力を論理の強さまたは修辞の巧みさの2つに分析するにはどうすると良いでしょうか? 2 2022/06/27 05:51
- Excel(エクセル) 関数EXACT(文字列,文字列)とexcelVBA 3 2022/04/14 15:07
- 大学受験 大学受験英語の勉強法についてです どうしても英語長文の勉強ができません 初めて数分で絶対にやる気がな 2 2023/05/05 00:32
- Excel(エクセル) Excelで校閲をする方法はあるでしょうか(取扱説明書への掲載禁止用語の確認) 3 2022/06/11 22:51
- 留学・ワーキングホリデー リスニング力、はつきますか?6カ月語学学校行き数年間お金を稼いでまた、6カ月間語学留学に行くのは? 1 2023/02/11 15:49
- その他(ビジネス・キャリア) 仕事のレベル感 4 2022/07/23 21:41
- その他(セキュリティ) IDと暗証番号・パスワードの管理の画期的かつ簡単便利な方法を考案した。他人に検証してもらう方法は? 5 2023/02/08 08:49
- 英語 ソシュール言語観による品詞、単語、辞書理解の誤り 4 2022/11/24 12:27
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
テーブル名が可変の場合のクエ...
-
SQLのテーブルにないデータの出力
-
結合したテーブルをSUMしたい
-
2つのテーブルでの合計取得
-
既存データをINSERT文にして出...
-
同一テーブル内での比較(最新...
-
SQLです!!教えてください。あ...
-
【SQL】他テーブルに含まれる値...
-
「都道府県の面積の大きい順に...
-
SQLです!!教えてください。あ...
-
Excelでしりとりを作る方法
-
「総降水量が100mm以上になる...
-
IDとパスワードについて。
-
SELECT INTOで一度に複数の変数...
-
pandasでsqlite3にテーブル作成...
-
mysqlのindexとprimary keyにつ...
-
1週間後の日付を求めたい
-
フラグをたてるってどういうこ...
-
オラクルのUPDATEで複数テーブル
-
参照数とはなんですか?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【SQL】他テーブルに含まれる値...
-
既存データをINSERT文にして出...
-
SQLで、Join句で結合したテ...
-
結合したテーブルをSUMしたい
-
テーブル名が可変の場合のクエ...
-
Accessの構成をコピーしたい
-
ACCESSのVBAにてExcelに行...
-
ExcelのMatch関数のようなもの...
-
ACCESS クエリーでソートの不具合
-
ExcelのVLOOKUP関数の動作をMyS...
-
データ無し時は空白行にしたい...
-
2つのテーブルをLIKE演算子のよ...
-
同一テーブル内での比較(最新...
-
ADO+ODBCでテーブルに接続する...
-
複数のテーブルからデータを取...
-
PRIMARY KEYのコピー
-
SQLです!!教えてください。あ...
-
改行を含んだデータのインポート
-
SQLです!!教えてください。あ...
-
Excelでしりとりを作る方法
おすすめ情報
ありがとうございます。
いま添付のようになりました。
次のワードだけがわかる形なんですね?
例えばH列に並べ替えて全部表示できたりできませんでしょうか。
H1:いす
H2:すとれす
H3:すぴーち
H4:ちきゅう
…といった感じで。
よろしくお願いいたします。
H1:いす
H2:すとれす
H3:すぴーち…
と表示させるには、
H1:=A1
H2:=A18
H3:=A19
と値が入ればいいわけですが、
H2:=A(F1の値)
H3:=A(F18の値)
とするための関数がわかりません。
説明が下手で申し訳ありませんが…
No.8のご回答につきまして。
実行しますと、エラーが出るのですが、
H列にはH2から
がいこく
くりこし
しっぱい
いじ
じゅうみん
みれん
れいぼう
うんめい
いふく
くじょう
うれのこり
りょうほう
うわき
きにいらない
いーめーる
と表示されています。
これは「る」で終わるとそのあとが繋がらなくて終わったのかなと、素人推察しています。
ただ、なぜ始まりが「がいこく」なのでしょうか?
もう一度実行してみたら、
いんすたんと
とう
うたがう
うれのこり
りかい
いーめーる
になりました。
ちなみに現在単語は736個入れています。
いま、3回実行してみました。
(1回目)
(H1:表示なし)
いんすたんと
とう
うたがう
うれのこり
りかい
いーめーる
(H1:表示なし)
(「いーめーる」を消去し2回目)
かいごふくしし
しゃぶしゃぶ
ぶか
かろりー
りすとら
らんぼう
うれのこり
りよう
うんえい
いれちがい
いやりんぐ
ぐたいてき
きほんきゅう
うまれつき
きゅうしょく
くさる
(「くさる」を消去し3回目)
(H1:表示なし)
わりかん
かべ
べてらん
らくご
ごうけい
いらい
いんふるえんざ
ざんぎょう
うりきれ
れいぎ
ぎかい
いきる
------------------------
700ちょっとの単語の中で、「る」で終わる単語が57個もありました。
・したがって「る」で終わるものはその前の文字で続けること
・最初の単語を指定できる
の2点ができると結構違うかもしれません。
①冒頭を下記にしました。
--------------------------------------------------------------------------------
With Sheet1
strB = .Cells(1, 8).Value
.Range("H:H").ClearContents
.Cells(1, 8).Value = strB
Application.ScreenUpdating = False
Randomize
'■初期処理■
--------------------------------------------------------------------------------
同じく②
--------------------------------------------------------------------------------
'■書出処理■
intO = 1
Do
If intO = 1 Then
If .Cells(1, 8).Value = "" Then
'先頭語句をランダム選出
intM = Int(Rnd() * intR)
If intM < 1 Then intM = 2
strB = .Cells(intM, 2).Value
Else
strB = Application.GetPhonetic(.Cells(1, 8).Value)
End If
'管理テーブル検索
--------------------------------------------------------------------------------
同じく③
'管理テーブル検索
For intL = 1 To intS
IfIf Right(strB, 1) = "ル" Or _
Right(strB, 1) = "ン" Or _
Right(strB, 1) = "ー" Then
strL = Left(Right(strB, 2), 1)
Else
strL = Right(strB, 1)
End If
Next intL
'データテーブル検索
--------------------------------------------------------------------------------
実行すると「インデックスが有効範囲にありません」
デバックを押すと
intD = Int(Rnd() * tblS(3, intL) + 1)
が黄色くなります。
そもそもコピーがうまくできているかが自信ないのですが、間違っておりませんでしょうか。
こちら、ソースを全部コピペってできないんですね…
使い方下手ですみません。
すみません、お返事ないな~と思っていましたら、わたしの捕捉が付いていませんでした!!!
大変失礼いたしました。
実行すると「インデックスが有効範囲にありません。」と表示されます。
ただ結果は出てくるのでそういった意味では問題ないです。
問題があるとすれば、同じ語がかなり頻繁に選択されるみたいです。
750語くらい入れているので、ひとつの文字について10個くらいはあるみたいですが、
これは仕方がないでしょうか。
いまは選ばれたものは手動で削除しています。
この点が仕様ということであれば、これで大丈夫です。
かなり満足しています<(_ _)><(_ _)><(_ _)>