- ベストアンサー
エクセル関数で文字を一つ飛ばしにリンクさせたいのですが。。。
エクセルで子供に英単語の暗記カードを作ってあげたいのです。 シート1に英単語のデータ(単語、意味、発音記号)があり、それをシート2に印刷用としてリンクさせたいのですが、 1単語のカードが(単語、意味、発音記号)の3行で出来ているため普通にリンクを貼って3行をセットに下へドラッグしても、 単語のデータが2行とばしでしかリンクされなくて困っています。 印刷用シートは横2行になっているので、データを1行目→2行目1行目→2行目…と交互に入るように設定したいのですが。。。 -データ-(シート1) -印刷用-(シート2) television テレビ 記号 television telephone telephone 電話 記号 → テレビ 電話 floor 床 記号 記号 記号 calculator 電卓 記号 floor calculator 床 電卓 記号 記号 1行目には奇数の単語、2行目には偶数の単語がリンクされる様にすれば良いのではないか?と考えたのですが、どの様な関数を使えば 良いか分かりません。 あと関数とは別なのですが、それぞれのカードの裏に単語の意味の イラストをつけて印刷したいのですが、エクセルにイラストを沢山 つけて保存することは可能でしょうか? よろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
リンクという言葉を使う人(質問が)がありますが、色々の意味で使われるので、関数関係なら、参照や代入が良いのでは無いでしょうか。 Sheet2で(持ってくる方を中心に関数は考えます)ので 行と列の番号を並べると C列 G列と仮定 (1,1) (2,1) (1,2) (2,2) (1,3) (2,3) (3,1) (4,1) (3,2) (4,2) (3,3) (4,3) ・・ 関数は式の複写の仕組みを使えてこそ便利なのでそれに便利なように 列の式を構成します C1は3単位でカウントアップし、行が1つづつ増えてもすぐには アップしない。 それは、定石があって,iを行番号として =(i-1)/3+1 =(INT((ROW()-1)/3)+1) とすれば 1 1 1 2 2 2 3 のようになります。しかし印刷のことを考えると空白行をはさむ必要もあるでしょう 1 1 1 -- -- 2 2 2 -- になってほしいでしょう。 すると3->5にして =IF(MOD(ROW()-1,5)>2,"",(INT((ROW()-1)/5)+1)) とすると 1 1 1 - - 2 2 2 - - 3 3 のようになります。 これで行の決定は終ります。 ーーー 列ですが これも行と関連付けて =IF(MOD((ROW()-1),5)>2,"",MOD((ROW()-1),5)+1) とします。下方向に式を引っ張ると 1 2 3 - - 1 2 3 - のようになります。 (1,1) (1,2) などでなく実際のセルの値を採ってくるのは INDEX関数でぎょう、列を指定してデータを採ってくる関数なので =INDEX(範囲、行、列) で範囲はSheet1のA,B,C列です。 行は(1,1)の初めの数字に当たる数。 列は(1,1)の後めの数字に当たる数です。 Sheet2の塊として2列目は 行は1列目の塊の対応行の数に+1 列は1列目の塊の対応行の数と同じ ーー これだけで考えは終わり。 ーーー 具体的には 質問どおりのSheet1のデータを使う・ Sheet2の C1に =INDEX(Sheet1!$A$1:$E$101,IF(MOD(ROW()-1,5)>2,101,(INT((ROW()-1)/5)+1)),IF(MOD((ROW()-1),5)>2,5,MOD((ROW()-1),5)+1)) と入れて、下方向に式を複写する。 television テレビ X ー ー telephone 電話 Y ー ー floor 床 Z ー (注)余白に当たるセルに、空白を出すためE101を使いそのセルを 1スペース入れてます。 ーー 間額なるのでSheet2の第2の塊列の説明は略。 ====== こんなに面倒くさくなるのも関数に固執するため。 VBAでやらないと普通はダメな問題でしょう。 印刷の自動化、1枚の紙に何セット1語のデータの塊を印刷するか などの課題からも。
その他の回答 (2)
エクセルを使うより、以下のソフトをつかうほうが楽なのでは? http://www.labelyasan.com/index.html 元データとしてエクセルファイルが使えます。
お礼
こんな便利なものがあるのですね!今後も何かと使えそう! 一度手作りで気の済むまでやってみてから検討したいと思います! ありがとうございました~。
- maron--5
- ベストアンサー率36% (321/877)
◆Sheet1 A B C 1 television テレビ ○ 2 telephone 電話 ▲ 3 floor 床 ■ 4 calculator 電卓 ★ ◆Sheet2 A B 1 television telephone 2 テレビ 電話 3 ○ ▲ 4 floor calculator 5 床 電卓 6 ■ ★ A1=INDEX(Sheet1!$A:$C,INT((ROW(A1)-1)/3)*2+COLUMN(A1),MOD(ROW(3:3),3)+1) ★右と下にコピー
お礼
出来ましたー!!スゴイ!嬉しい~ ヽ(感'∀'激)ノ 3日間 悩み続けていたことがこんなに早く解決できちゃうなんて、 もっと早く皆さんにお伺いすれば良かった! (数式を見て、私が考えても全くムダであったことを知りました。。。) ありがとうございました~!
お礼
こちらもスゴイ!出来ました~!! いろいろ丁寧にご説明下さってありがとうございます。 やはりVBAでするのが良いのですよね。ですが私のレベルではサッパリで。。。 空白を入れずに作っていたので少し戸惑いましたが、今後使うことがありそうなので 参考にさせて頂きます! ありがとうございました~!!