電子書籍の厳選無料作品が豊富!

高校生です。今エクセルで個人での学習用に英単語帳を作成しています。そんな中

 ADG
 BEH
 CFI
 ・・・
 ・・・
 ・・・
(A列がA,B,C・・・で単語 B列がD,E,F・・・で単語の種類(動詞、名詞など) C列がG,H,I・・が意味です)
A、B、CがA1,A2,A3でD,GがB1,C1です。
同じシート内で英単語(A列)がランダムで1つでるようにして、その下にその単語の意味(先ほどランダムで出てきたA列の単語と同じ行にあるC列)が出るようにしたいと思います。
なおすでにA列がランダムに表示されるようにすることはINDIRECT()をできています。どうすればその2つとなりのものを表示できるのでしょうか?
(Bがランダムででたら、Hが下に表示させるようになる感じです)

A 回答 (4件)

こんにちは



>すでにA列がランダムに表示されるようにすることはINDIRECT()をできています。
INDIRECT関数を使う方法が思いつかないので、とのようにしているのかがわかりませんが・・・

大雑把に2通りの方法がありそうです。(同じと言えば同じですが)
1)行数を示すための、作業用セルを使う方法
作業用セルに
 =INT(全単語の行数*RAND()+1)
の式をいれる。(仮に値をRとします)
この行のA、B、C列の値を表示すればよいので、表示するセルに
 =INDEX(単語群の範囲,R,列数)
の式を作成し、列数をそれぞれ1、2、3にしておく。

2)作業用セルを用いず、直接単語を表示し、その単語で単語の表全体から検索する方法
単語を表示するセルに
 =INDEX(単語群の範囲,INT(全単語の行数*RAND()+1),1)
の関数式をいれると、ランダムで単語が表示されます。(このセルを仮にWとします)
B列、C列を参照するセルに
 =VLOOKUP(W,単語群の範囲,列数,0)
の式を設定。(列数はそれぞれ2と3になります。)


ご質問文ではセル位置が不明なので、上記のような表現になりましたが、具体的な例として
まず、A~C列の単語群がある範囲に「単語帳」と名前を付けておきます。
(「数式」タブの「名前の定義」で設定可能です)
ランダムで表示するセルは仮に、E2、E3、E4とします。

1)の方法
作業用セルとしてE1に
 =INT(ROWS(単語帳)*RAND()+1)
を設定し、E2セルに
 =INDEX(単語帳,E$1,ROW(A1))
を入力して、E4セルまでフィルコピー

2)の方法
E2セルに
 =INDEX(単語帳,INT(ROWS(単語帳)*RAND()+1),1)
の関数式を設定。E3セルには
 =VLOOKUP(E$2,単語帳,ROW(A2),0)
を入力して、E4セルにもコピー

といった感じです。
2)の方法であれば、E2セルの式は現在利用なさっている式(INDIRECTを使う式)でもかまいません。

※ このままだと、次の単語を表示させる(=再計算させる)仕組みがないので、一旦表示されたら、次を表示させるのに再入力(=そのままリターンとか)しないとならないと思いますが、どのような利用方法なのかわからないので、ひとまず表示方法のみの回答です。
    • good
    • 0
この回答へのお礼

わかりやすく説明していただきありがとうございました。

お礼日時:2018/07/04 17:19

[No.2]の誤謬訂正、


余談めきますが、添付図のセル A2 は applause であるべきところをタイプミスしました(苦笑)
    • good
    • 0

添付図参照

「エクセルで単語帳を作っています。その中で」の回答画像2
    • good
    • 0
この回答へのお礼

ベストアンサーには選びませんでしたが非常にわかりやすい写真をありがとうございました。

お礼日時:2018/07/04 17:24

ランダムで出てきたA列の単語を検索値として、VLOOKUPでB、C列を取得してみて下さい。

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!