質問: エクセル2007:シート内のデータの自動転記 excle2007を使用しています。 シート1のデータをシート2に自動で転記したいと思っています。 シート1 作業件名ごとにその内容、作業者名が書いてある表。 1行ににつき作業1件 a列:日付 b列:作業件名 c列:内容 d列:作業者名 シート2 作業者ごとに従事した作業をまとめた一覧表で、ひとりにつき1ページ。 表の形式(見た目)はシート1とはまったく別のもの。 作業者ごとに空欄の表が既に作られており、 1ページ目:aさん 2ページ目:bさん という風に、1シートに改ページしながら全ての作業者について1ページずつ一覧表になっている。 1ページは25行を使用しており、 aさん(1ページ目)は1~25行(bさん(2ページ目)は26~50行)となる。 1ページ目の表のうち、シート1のデータを入れられる行は11~21行。 3件あれば3行使って残り8行は空欄ということになります 日付欄はシート2のa11~a21 件名欄はシート2のb11~b21 内容欄はシート2のd11~d21 シート2には、作業者の住所や生年月日など、シート1にない項目があらかじめ入力されている。 いつもはシート1を入力後に作業者基準で並べ替えをして印刷し、 シート2の該当する作業者のページに手打ちでデータ入力しています。 シート1のデータをシート2の該当箇所に転記するだけなので、シート1が完成した段階で シート2を自動で作れたら作業時間の短縮になると思い、考え始めました。 が、vbaに詳しくないため、どこからどう手をつけたらいいものかわかりません。 お詳しい方、お知恵をいただけましたらと思います。 不足情報等ございましたらご指摘いただけましたら補足をさせていただきますので どうぞよろしくお願いいたします。
回答: マクロを使わない方法です。 シート1ではa1セルに日付、b1セルに作業件名、c1セルに内容、d1セルに作業者名とそれぞれの項目名が入力されており、それぞれのデータは下行に入力されているとします。 作業列をe列に設けることにしますが、その前にシート2では作業者ごとにページを変えていくわけですがその作業者について順序を付けてシート2を作成するとしたら例えばシート1のg1セルから下行に1,2,3・・と番号を入力してh1セルから下行には対応する作業者の名前を入力します。 その上でe2セルには次の式を入力して下行にオートフィルドラッグします。 =if(d2="","",index(g:h,match(d2,h:h,0),1)+0.0001*countif(d$2:d2,d2)) 次にシート2ですが25行ごとに作業者が変わるようにとのことですので、a11セルには次の式を入力してd11セルまでオートフィルドラッグしたのちに21行目まで下方にオートフィルドラッグします。 =if(or(column(a1)=3,column(a1)>4),"",if(countif(sheet1!$e:$e,roundup(row()/25,0)+0.0001*(mod(row(),25)-10))=0,"",if(and(mod(row(),25)>10,mod(row(),25)<=21),index(sheet1!$a:$c,match(roundup(row()/25,0)+0.0001*(mod(row(),25)-10),sheet1!$e:$e,0),if(column(a1)=1,1,if(column(a1)=2,2,if(column(a1)=4,3,0)))),""))) これで作業者1番のデータが表示されます。 次に上の式をコピーしてa36セルに貼り付けし、d36セルまでオートフィルドラッグしたのちに46行目まで下行にオートフィルドラッグします。 次にa61に貼り付けし、同様の操作を行います。 このように入力する位置が変わっても式そのものは変わりませんので、何人の作業者でも同様に対応することができます。最初はセル位置を決めて式を入力しオートフィルドラッグを繰り返しますので面倒ですが、一度作成してしまえば後は変更することもないわけですから有効に使うことができるでしょう。