- ベストアンサー
エクセルの一覧データを別の書式であらわしたい
こんにちは。 エクセルでのデータ処理の質問です。 例えば、一枚目のシートで横一列に必要なデータを入力して、一覧にし、基礎データを作るとします。 これを2枚目のシートで、横一列のデータを別の書式にして作成したいと思います。 一枚目のシートの基礎データが、増えていくとすると、 増えたデータを、自動的にシート2の書式に作っていく方法はありますか? 今のところ、ワードの差込印刷しか思いつかないんですが、できれば、エクセルで自動に書式2がつくられるようにしたいのでが…。 分かりにくい質問ですみません。 よろしくお願いします。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
JANPANAさん、なさりたいことが大体理解できました。 1枚目のシート(以下、データシート)には1行/件のデータ格納用シートで、2枚目のシート(以下、印刷フォーム)は1件ごとの印刷用フォームなんですね。それでしたら、印刷時にデータシートの中から目的のデータを選択して、その内容を印刷フォームに反映させ、プリントアウトするという流れになるかと思います。 さて、前回マクロをお勧めしたのですが、ずっと簡単に実現できる方法を思いつきました。それはワークシート関数の"VLOOKUP"を利用する方法です。 この関数のことはご存知かも知れませんが、一応順を追って説明いたします。 (1)データシートの一番左の列に番号列を設け、この列にデータの先頭行から末行にかけて1から順に番号を振ってください。但し、このような列が既に存在していれば、改めて用意する必要はありません。 (2)データシートの表の上方に1行以上挿入してください。挿入した行のひとつ(以下、関数行)に関数を入力していきます。関数はデータ表の列数分だけ入力します。 尚、ここから先は話を分かりやすくするために、データの格納されている表の範囲を[B4:E10](番号列はB列です)、関数行を2行目として説明いたします。 (3)いよいよ関数の入力です。C2、D2、E2のセルに次の""内を入力します。 C2: "=VLOOKUP($B$2,$B$4:$E$10,2,TRUE)" D2: "=VLOOKUP($B$2,$B$4:$E$10,3,TRUE)" E2: "=VLOOKUP($B$2,$B$4:$E$10,4,TRUE)" "$B$2"は、表からデータを検索するときに用いられるキーワードを入れるセルのアドレスです。 "$B$4:$E$10"は、表全体の領域です。 "2(3、4も同様)"は、表の一番左の列を1列目としたときの列番号です。何列目のデータを表示させたいかにより決定されます。 (4)B2のセルにデータの入っている行の行番号(B列の値)を入力してください。すると、C2からE2のセルにB2のセルに入力した行に対応するデータが表示されます。 これで、関数行に任意に選択した行のデータが表示されるようになりました。 (5)印刷フォームのセルにデータシートの関数行の各セルへのリンクを作成すれば完成です。データシートのB2のセルに行番号を入力すれば、印刷フォームに目的のデータ内容が反映されます。 以上です。 長くなりましたが、よろしければお試しください。
その他の回答 (5)
- pascal3141
- ベストアンサー率36% (99/269)
関数だけで処理するには次のようにしてみたらいいかと思います。 (1)sheet1が元のデータのある場所で3行目から、No、相談日、活動分野、相談内容とタイトルを入れておきます。データは、4行目からA4にNo、B4に相談日、C4に活動分野、D4に相談内容が入っているとします。5行め以下も同様に入力されているとします。 また、B1のセルにプリントしたいNoを入れておくことにします。 (2)次にsheet2が打ち出し用のシートとします。 B2:相談日 B3:活動分野 B4:相談内容 とタイトルを入れておいて、データはC2からC4に打ち出すとします。 C2に =INDIRECT(ADDRESS(Sheet1!B1+3,2,,,"sheet1") ) C3に =INDIRECT(ADDRESS(Sheet1!B1+3,3,,,"sheet1")) C4に =INDIRECT(ADDRESS(Sheet1!B1+3,4,,,"sheet1")) として、関数を入れておけば、sheet1のB1のNoの数値を変えるだけでsheet2のデータが自動的に変わります。 ちなみに、Sheet1!B1+3はsheet1のB1の値(Noの数字)より3行下を表しています。(No=1なら4行目)次の2,3,4の数字は、元のデータの列番号です。 質問の意図はこんなことだろうと思いますので、試して見てください。ただ、全部自動でしたいのなら、VBAは勉強した方がいいと思います。
お礼
pascal3141さん ご丁寧な回答ありがとうございます。 この方法も試してみようと思います。 マクロは、以前から勉強しようと思ってテキストも買ってあるんですけど、なかなか取り組むチャンスがありませんでした。これを機にがんばってみようかなと思ってます。 アドバイスどうもありがとうございました。
- Wendy02
- ベストアンサー率57% (3570/6232)
>この説明でわかるでしょうか? おぼろげながら、分かりました。 >これに対して、2枚目(以降)のシートは、一件ごとのデータを相談票という書式におとし、一件一件の相談内容がわかるような書類をつくりたいのです。 >相談票一枚ごとにシートが増えるということでもかまいません。 「書式」という意味が、どうやらExcelの「セルの書式(Format)」という意味ではなさそうだなって思いました。それは、データベースのようですね。たぶん、Excelでは、すこぶる不向きな内容かなって思いました。外部データとリンクさせればよいかもしれませんが、かなり高度な内容になってしまいます。 つまり、雛型に、個々のデータを埋めて、それを1つのデータとするということだと思います。 >これを自動で2行目を打ち込んだら、書式にも入るという設定にしたいのです。このとき、相談票一枚ごとにシートが増えるということでもかまいません。 #2さんが書かれていたものとは違いますが、このようなことは、イベント・ドリブン型というマクロにすれば可能ですが、さて、どうしたものかなって思います。
お礼
Wendy02さん 回答ありがとうございました。質問の仕方ってむずかしいですね。これから気をつけますね。
- Wendy02
- ベストアンサー率57% (3570/6232)
ご質問には、具体性がないので、私には、お話が良くわかりません。 #1 のsa-ponさんのおっしゃるとおりでよいのでは? つまり、 データが写される側(Sheet2)に、 =Sheet1!A1 =Sheet1!A2 とでもして、書式を、予め設定しておいたら、後は、式のコピーをフィル・コピーでもすれば、いっしょに書式もコピーされるから、書式を気にしなくてもよいと思うのです。 「0」 を出すのが嫌でしたら、「条件付書式」で、「=0」の時は、パターンで白で塗りつぶしとか 、=IF(Sheet1!A1="","",Sheet1!A1) とでもすればよいと思います。 もう少し、詳しくお話していただかないと、適切な回答は出来ないように思います。 Wordライクだと考えれば、たぶん、 例えば、「Sheet1!A1」&"様" などとなるということだと、想像しますが。
補足
説明が悪くてもうしわけありません。 具体的に言いますと、私は、あるNPOのスタッフで、他のNPOからのマネジメントなどの相談を受けるという事業を行おうとしています。 一枚目のシートは、一行に相談を受けた日、受けたNPOの活動分野、相談内容など、基礎データを入力して、相談事業一件につき、一行を入力していきます。つまり相談事業をこなすごとにデータは増え、行が増えていきます。このデータは、相談事業が年度で終了したときに、集計用に使います。これに対して、2枚目(以降)のシートは、一件ごとのデータを相談票という書式におとし、一件一件の相談内容がわかるような書類をつくりたいのです。 =Sheet1!A1 =Sheet1!A2 というやり方だと、次の一行のデータを書式に落とすときにもう一度式を設定しなおさないといけないですよね。 これを自動で2行目を打ち込んだら、書式にも入るという設定にしたいのです。このとき、相談票一枚ごとにシートが増えるということでもかまいません。 この説明でわかるでしょうか?
- LucyDiamond
- ベストアンサー率48% (21/43)
マクロのExcel/VBAを使うことはできますか? 使えるのでしたら、以下のような方法をお勧めいたします。 (1)予め2枚目のシートの書式を整えておきます。 (2)1枚目のシートから2枚目のシートにデータをコピーするマクロを作成します。 (3)1枚目のシート上にボタンを配置し、これに(2)のマクロを登録します。 (4)1枚目のシートにデータを入力した時点で(3)のボタンをクリックすると、そのデータが2枚目のシートに設定した書式に従って入力されます。 もし、マクロを使われたことがなく、上記の方法を採用されるのであれば、より具体的にアドバイスを差し上げられるのですが。
補足
こんにちは。 大変参考になるアドバイスありがとうございます。 多分この方法だと思うのですが、私はマクロを使ったことがありません。 恐縮ですが、さらに具体的なアドバイスいただけますか? よろしくお願いいたします。
- sa-pon
- ベストアンサー率15% (5/32)
はじめまして。 2枚目のシートに【=(シート1の対象セル)】としておけばいいと思いますが... 最初に設定しておけば、自動的にデータリンクしますよ。 違う話だったらごめんなさいね。
お礼
早速のご回答、ありがとうございました。
お礼
LucyDiamondさん わかりにくい質問にご丁寧に回答いただき、ありがとうございました。教えていただいた方法、是非試してみます。