プロが教える店舗&オフィスのセキュリティ対策術

EXCEL2003で作った英単語と意味のデータを番号1~50までと指定した範囲をランダムで20問選んで、印刷したいんですけど、どうやったらいいか教えて下さい。
毎回手作業でやらずに自動化して、Wordの文書に貼り付けしたいんですが、出来ますか?教えて下さい。よろしくお願いします。

A 回答 (6件)

例えばこんな方法はいかがでしょうか


空いた列に
=ROUND(RAND()*100,0)
と入れて、50行目までコピー(0から100までの乱数を発生させています)
これをソートして、上位(下位)20番目までを選択
ただし、「ツール」「オプション」で「計算方法」を「手動」に設定しておいて下さい。(再計算させる時はF9を押します)

この回答への補足

回答ありがとうございます。ROUND関数とVLOOKUP関数を使えば出来ると教えていただいたのですが、それをすべて自動化してWordで作ったテンプレート(単語テスト解答用紙)に貼り付けたいんですが、どのようにしたらいいでしょうか?乱数を発生させた後のソートから上位20位まで抽出と別のシートに抽出結果を貼り付けまで(出来ればWordに貼り付け)を全部自動化したいのですが可能でしょうか?教えてください。よろしくお願いします。

補足日時:2007/02/16 00:42
    • good
    • 0

こんばんは。



私自身、うまくいくとは思わなかったです。
本来は、全部自動化というのは、マクロのことでしょうけれども、全体のお話の状況からすると、とても、掲示板で、個人のために無償で作成という範囲は超えてしまうように思います。(一応、製作依頼というのは、ここでは禁止されております。)

もちろん、ご質問者さんが取り掛かっているという問題で、回答者が、アドバイスをするというのは別ですが。

今回は、設問が前にやったものが出てくるという問題は、抜きにしてあります。

まず、都合、便宜的なタイトル行は、なしにしてありますので、1行目からです。
(私の使っている単語帳の一部から抽出しましたが、これは、Alc のSVL ランク11 と、P-DIC+英辞郎により作られたものです。)

  A      B
abiding    不変の
accomplice  共犯(者),従犯者
acronym    頭字語,頭文字
affable    愛想の良い
aggrieved   法的に侵害を受けた,虐げられた
50行まで

C1: 乱数を発生しています。
=RAND()

これを下にコピー(C50 まで)

※なお、一回きりなら、このRAND()の数式を範囲をコピーして、右クリック-形式を選択して貼り付け-値にすると、後は、動くことはありません。

D1: 順位が重なることは、ほぼ皆無です。
=RANK(C1,$C$1:$C$50)

これを下にコピー(D50 まで)

E1:
=INT(RAND()*10^2)*10^2+D1

これを下にコピー(E20まで)

F1:
=RIGHT(SMALL($E$1:$E$20,ROW(A1)),2)*1

これを下にコピー(F20まで)

----------------------------------------------
この抽出場所は、別の印刷用のシートに移してもよいと思います。
----------------------------------------------

G1:英単語
=INDEX($A$1:$A$50,D1,1)

これを下にコピー(G20まで)

F1:訳語
=INDEX($B$1:$B$50,F1,1)

これを下にコピー(F20まで)

----------------------------------------------

>それをすべて自動化してWordで作ったテンプレート(単語テスト解答用紙)に貼り付けたいんですが、どのようにしたらいいでしょうか?

Word側は、EXCELのオブジェクトを貼り付けるようにすればよいのかと思います。フィールドや差込印刷ですと、きれいにはいくのですが、Word自体を不安定にするのと、作業が複雑になります。オブジェクトの場合は、どの程度、レイアウトに収まるのかは、あまり確約出来ません。

とりあえずは、EXCELまでの完成とします。

この回答への補足

回答ありがとうございます。やはり全自動化は難しいですか。EXCELの部分試させてもらったのですが、思っていたどおりのデータ抽出が出来て満足しています。抽出した英単語と訳語が一致しないのですが、二つを一致することは可能でしょうか?もし可能でしたら一致するようにしていただけたら幸いです。よろしくお願いします。

補足日時:2007/02/16 01:54
    • good
    • 0
この回答へのお礼

教えていただき、ありがとうございます。あと1~50だけでなく、20
~40など任意に設定を変えることは簡単に出来ないでしょうか?
単語テストを作成する際に、単語番号を指定してテストを実施しているので、それが簡単に出来ると有難いです。何度も質問して申し訳ないですが、よろしくおねがいします。

お礼日時:2007/02/16 02:58

>あと1~50だけでなく、20~40など任意に設定を変えることは簡単に出来ないでしょうか?


RANDBETWEEN()関数を使えば指定した数字の範囲内での乱数を得ることができます。
    • good
    • 1

> もし可能でしたら一致するようにしていただけたら幸いです。


これは、「丸投げ依頼」ともとれる文言ですね。
「Vlookupを使えば可能です。」とだけお答えしておきましょう。
    • good
    • 0

こんにちは。

#2のWendy02です。

>抽出した英単語と訳語が一致しないのですが、二つを一致することは可能でしょうか?

テスト問題だから、英単語と訳が別々になるのではなかったのでしょうか?
わざと、バラバラになるようにしたのです。それで、線を引いて、一致させるという方法で、これは良い!と思ったのですが……。残念です。(というか、もし、訳語が並べ替えせずに済むなら、すでに、そういうソフトウェアがあると思います。最初、私は、VBAで作っていたのですが、良いものがあるので、開発はやめてしまいました。"P-Study" というソフトです。個人でお使いになる分には、フリーソフトウェアです。)

今度は、VLOOKUPを使います。

A列は、1~50 まで番号が振ってあります。
B列は、英単語が、B1~B50があり、
C列は、訳が、C1~C50まであります。

D列は、同じく
D1からD50まで
=RAND()

E列は、
E1から、E50 まで、
=IF(AND(RANK(D1,$D$1:$D$50)>=$F$1,RANK(D1,$D$1:$D$50)<=$F$2),RANK(D1,$D$1:$D$50),0)

F列に、[単語番号の範囲]を入れます。
仮に、ここでは、
F1 20
F2 40

G列は、
G1から、G50まで、
=IF((ROWS($E$1:$E$50)-COUNTIF($E$1:$E$50,0))>=ROW(A1),INDEX($E$1:$E$50,SMALL(INDEX(($E$1:$E$50<>0)*ROW($E$1:$E$50),,),COUNTIF($E$1:$E$50,0)+ROW(A1)),1),"")

-------------------------------------------------------
出力部分

H列
H1:~
=IF(ISNUMBER(G1),VLOOKUP(G1,$A$1:$C$50,2),"")

I列
I1:~
=IF(ISNUMBER(G1),VLOOKUP(G1,$A$1:$C$50,3),"")

----------------------------------------------------------
完成図(Alc-SVL 11+英辞郎+P-DICによる)

 G  H        I
10  alumnus  【名】男子の卒業生,同窓生
30  bastion  【名】(城の)稜堡
27  backlash  【名】反発,反動
19  archipelago 【名】群島,列島
21  aspen    【名】<植>アスペン
23  aura    【名】オーラ,独特の雰囲気


なお、入力の式が入れ終わってから、挿入やレイアウトを整えるとよいです。そのほうが分かりやすいかと思います。
もし、別のシートに[出力部分]を移動する場合は、
範囲を選択して、Alt キーを押しながら、ドラッグすると、シートタブが選択できますので、それで、別のシートに数式を壊さずに移動が可能です。計算部分は、どれほど汚くても、出力部分さえ、きれいで出せればよいので、上手に作れば、Wordでなくてもよいかもしれません。

なお、これは、私が、数年してきたことの延長上にありますので、お答えさせていただきました。

この回答への補足

この方法を書いていただいた式通りに試して、入力したんですが、訳語と単語が出てきません。Eの列が全て0になっており、G列H列I列は関数を入れても何も表示されません。解決方法を教えてクダサイ。よろしくお願いします。当方で何度か試行錯誤したんですが、関数が全然分からないため、解決できませんでsぢた。よろしくお願いします。

補足日時:2007/02/16 17:16
    • good
    • 1
この回答へのお礼

詳しい回答ありがとうございます。単語テストを作成すると同時に解答も作りたかったので、大変満足しています。前に回答していただいたものは、線を引いて、一致させる問題が出来るんですね。そのような使い方を想定していなかったんですが、便利なので、つかわさせていもらいます。

現在大学生で、個別指導の学習塾にて、バイトで教えているんですが、これはかなり活用できそうです。回答していただきありがとうございました。

お礼日時:2007/02/16 13:35

こんにちは。

Wendy02です。

最初に、

お礼側と補足側の書き込む順序は、逆にしてくださいね。
補足側では、こちらに連絡が来ないので、見過ごしてしまうことがあります。お礼側に入れると、こちらも安心してしまうし、だいたい、ここのカテゴリの2割ぐらいの質問者さんは、そのままになってしまいますので、私などでも、ある程度は、見切ってしまいます。

ただし、私の場合は、一応、気になるもので、閉められていないものは、期間を3ヶ月に区切って、こちらではすべてチェックしています。

今回は、大丈夫ですが、あまり間を明けるような場合は、お礼側に入れれば、相手は、それなりの反応を示します。

>Eの列が全て0になっており、
まず、一番、可能性があるのは、F列で、範囲を指定していないことですね。
全体数以内なら、範囲を決めて入力してください。
例:F1: 10, F2: 40
何も入れていないと、E列は、すべて0になり、後G列以降の項目は表示しません。
    • good
    • 1
この回答へのお礼

すいません。お礼と補足の違いをあまり分かりませんでした。たしかに範囲指定してなかったです。範囲指定すると無事出来ました。今回は何度も申し訳ありませんでした。Wendy02さんのおかげで、単語テストを作るのが、かなり短縮されたので、とても感謝しています。ありがとうございました。

お礼日時:2007/02/17 22:49

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