• 締切済み

教えて下さい!フィルタを使わない作業

エクセルの売上実績表が個人別にあるのですが、 毎回個人名毎にフィルタをかけて表示し、コピペする・・・ という作業が大変で。。。 個人名毎のシートに自動で反映されるやり方ってありますか??

みんなの回答

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.1

個人名ごとのシートに自動でデータを表示する方法です。 例えばシート1が元にシートですべての個人についてのデータが入力されているとします。1行目は項目名で2行目から出データが有るとしてE列までが使われているとします。A2セルから下方のセルには個人名が入力されているとします。 そこでF列を作業列としてF2セルには次の式を入力して下方にオートフィルドラッグコピーします。 =IF(A2="","",A2&COUNTIF(A$2:A2,A2)) 個人名のシートはそれらのシート名がシート1のA列に記載されているものと同じになっているとします。 初めにシート見出しで最も左側にある個人名の書かれたシートを選択しエクセル画面をそのシートの画面にします。その後にShiftキーを押しながらシート見出しで最も右側にある個人名のシートをクリックします。それにより一つの作業グループが形成されます。 その後に表示されているシートで例えばA2セルからE2セルにはシート1の同じ順序で項目名を入力します。 A3セルには次の式を入力して右方向にオートフィルドラッグコピーしたのちに下方にもオートフィルドラッグコピーします。 =IF(OR(COLUMN(A1)>5,COUNTIF(Sheet1!$F:$F,TRIM(MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,10))&ROW(A1))=0),"",IF(INDEX(Sheet1!$A:$E,MATCH(TRIM(MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,10))&ROW(A1),Sheet1!$F:$F,0),COLUMN(A1))=0,"",INDEX(Sheet1!$A:$E,MATCH(TRIM(MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,10))&ROW(A1),Sheet1!$F:$F,0),COLUMN(A1)))) 最後にシート見出しでシート1を選択します。それによって作業グループが解除されます。 個人毎のシートにはシート1に書かれたデータのうちで該当者のみのデータが表示されます。 なお、これらの操作で表示がされなかった場合には一旦そのファイルを保存してから再び立ち上げることが必要です。 シート見出しの名前とシート1での個人名が必ずしも一致していない場合には作業グループでの作業において、A1セルにシート1に有る個人名を入力し、A3セルには次の式を入力してオートフィルドラッグコピーを行ってください。 =IF(OR(COLUMN(A1)>5,COUNTIF(Sheet1!$F:$F,$A$1&ROW(A1))=0),"",IF(INDEX(Sheet1!$A:$E,MATCH($A$1&ROW(A1),Sheet1!$F:$F,0),COLUMN(A1))=0,"",INDEX(Sheet1!$A:$E,MATCH($A$1&ROW(A1),Sheet1!$F:$F,0),COLUMN(A1)))) それぞれの個人名のシートではA1セルにはシート1で使われている個人名を入力すればよいでしょう。

関連するQ&A