- ベストアンサー
EXCEL データの各シートへの振り分け
エクセルの1枚目のシートをデータシートとして、各行に入力していきます。 各行の第1列の数字や言葉に基づいて、2枚目以降のシートに順にコピーさせる方法があるでしょうか 具体的には1枚目のシートはデータシートとして 部門 氏名 住所 人事 田村 東京 総務 太田 京都 人事 山田 大阪 2枚目のシートの名前は「人事」3枚目は「総務」で各シートに行ごとコピーさせたいのです マクロはよくわからないのと最初に開くときに面倒なので、なるべく関数で処理する方法を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
質問者さんの意図とは少し違いますが、次のような簡単な方法があります。適当な回答がなければ、ご検討ください。 (1)2枚目以降のシートで =sheet1!A1 などとして、1枚目のシートの該当するセル範囲(これから入力される可能性のある部分を含む)のデータをすべて取り込む (2)オートフィルタで望みの行だけ表示する (3)1枚目のデータが増えたり変更されたりしたら、フィルタの「再適用」(2007ではボタンあり)をして最新の結果を得る (2007とその97-2003互換モードで確認しました。)
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17069)
この質問の内容は、VBA向きです。 >マクロはよくわからないのと エクセルで、操作で出来そうに無いことで、何かやりたいことを実現するには、VBAを勉強してください。勉強しないで、楽したいこと、難しいことをやりたいといっても、無理です。 >最初に開くときに面倒なので 何のことだかわかりません。 ーーーー 入力の都度でなく、一応入力が終わってからなら、 フィルターを行い、コピー貼り付けを繰り返す フィルタオプションの設定を繰り返す ソートして区分ごとにコピー貼り付けを繰り返す 部門ごとの連番を振って関数で処理する(下記。自称 imogasi方式) ーーーーー 例データ A列 B列 C列 D列 コード 内容 計数 連番 人事 x 12 1 営業 y 21 101 総務 z 31 201 人事 u 41 2 人事 v 42 3 営業 s 43 102 総務 t 12 202 総務 v 12 203 人事 w 12 4 ーー どの列でもよいが(各部100人以内と仮定する) H列 I列 人事 0 営業 100 総務 200 ーーーーーーー D列の式は =VLOOKUP(A2,$H$1:$I$3,2,FALSE)*1+COUNTIF($A$2:A2,A2) 下方向に式を複写。 各部別に、出現別に、連番を振っている。 ーー Sheet2で A2に =INDEX(Sheet1!$A$1:$C$100,MATCH(ROW()-1,Sheet1!$D$1:$D$100,0),COLUMN()) C2まで式を複写。 A2:C2を下方向に式を複写 結果 人事 x 12 人事 u 41 人事 v 42 人事 w 12 #N/A #N/A #N/A ーー Sheet3のA2で =INDEX(Sheet1!$A$1:$C$100,MATCH(ROW()-1+100,Sheet1!$D$1:$D$100,0),COLUMN()) MATCH(ROW()-1+100とここで100足していることに注意。 以下人事の場合と同じ。 総務の場合は200を足す。 結果 営業 y 21 営業 s 43 #N/A #N/A #N/A #N/Aを出さない方法の点は省略。imogasi方式でGoogle照会すれば、何処かに書いている。
お礼
ありがとうございます 参考にさせていただきます VBAを一応勉強し、ボタンを作ったり、若干編集もできるようにはなりましたが、能力不足やあまり使わないこともあって、なかなか使いこなせません。 それとそのブックを開くときにマクロを有効にするかどうか毎回聞かれるのがうっとうしいのです。作ったマクロが気に入ってすべてのブックに適応させたりすると、必要でないブックであっても開くときにいちいち聞いてきていらいらします。聞かれないよう設定できるのかもしれませんが、今のところその方法は不明です。 とにかく私の希望はマクロを使わないで済ませたいのです imogasiさんのVBAを使わないで済ませる方法を参考にしながら、なんとか作っていきたいと思います。 ありがとうございました
お礼
ありがとうございました なるほどと思います。参考にさせていただきます。