- ベストアンサー
Excelで200社のデータを分類する方法
- ExcelのA列に200社の会社名が入力され、それを会社名ごとにシート名に分類する方法を教えてください。
- 200社の会社名がランダムにA列に入力されており、同じ会社名のデータをそれぞれの会社名と同じシート名に分類したいです。
- ExcelのA列に200社の会社名が入力されています。これを会社名ごとに分けたシートを作成する方法を教えてください。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
元リストのシートを開く ALT+F11を押す 現れた画面で挿入メニューから標準モジュールを挿入する 現れたシートに下記をコピー貼り付ける sub macro1() dim h as range on error goto errhandle for each h in range("A1:A" & range("a65536").end(xlup).row) h.entirerow.copy destination:=worksheets(h.value).range("A65536").end(xlup).offset(1) next exit sub errhandle: worksheets.add after:=worksheets(worksheets.count) worksheets(worksheets.count).name = h activesheet.range("A1:C1") = array("社名", "データ1", "データ2") resume end sub F5キーを押す 今登録したmacro1を選んで実行する ファイルメニューから終了してエクセルに戻ると既に完成しています。
その他の回答 (4)
- chonami
- ベストアンサー率43% (448/1036)
一般機能で一度にシートをたくさん作るにはピボットテーブルが便利です。 A列に会社名、B列に項目1、C列に項目2と項目名をつけておいて、 表内にカーソルを置き、データ→ピボットテーブルとピボットグラフレポート→次へ→次へ→作成先を適当に決め完了 ページのフィールドに会社名(ここが重要)、データのフィールドに項目名(一つでいいです)をドラッグ ピボットテーブルツールバーの左端にある「ピボットテーブル」をクリック→ページの表示→OK で会社名ごとのシートができます。 その後最初のシートを選択し、Shiftを押しながら最後のシートを選択してから、どこか未入力のセルをコピーしピボットテーブル全体に貼り付け これでシート名だけ入ったシートが完成します。 以上は2003までの操作です。 中のデータに関しては他の方の回答を参考にして下さい。
- kagakusuki
- ベストアンサー率51% (2610/5101)
今仮に、元データーが入力されているシートのシート名がSheet1であるものとします。 又、Sheet2のA列を作業列として使用するものとします。 まず、Sheet2のA1セルに次の数式を入力して下さい。 =INDEX(Sheet1!$A:$A,ROW())&COUNTIF(Sheet1!$A:$A,INDEX(Sheet1!$A:$A,ROW())) 次に、Sheet2のA1セルをコピーして、、Sheet2のA2以下に(Sheet1のリストの行数を上回るのに充分な行数となるまで)貼り付けて下さい。 次に、例えば A社 という名前のシートを作成し、そのA2セルに、次の数式を入力して下さい。 =MID(CELL("filename",A2),FIND("]",CELL("filename",A2))+1,999) 次に、A社シートのA3セルに、次の数式を入力して下さい。 =IF(ROWS($2:3)>COUNTIF(Sheet1!$A:$A,A$2),"",A$2) 次に、A社シートのB2セルに、次の数式を入力して下さい。 =IF(ROWS($2:2)>COUNTIF(Sheet1!$A:$A,$A$2),"",INDEX(Sheet1!B:B,MATCH($A$2&ROWS($2:2),Sheet2!$A:$A,0))) 次に、A社シートのB2セルをコピーして、A社シートのB2~C3の範囲に貼り付けて下さい。 次に、A社シートのA3~C3の範囲をコピーして、同じ列の4行目以下に貼り付けて下さい。 以上でA社シートは完成で、後はA社シートをコピーしたシートを作成して、そのコピーシートのシート名を、別の会社名に変更する事で、別の会社用のシートを作成して下さい。(シート名と、Sheet1のA列に記載されている会社名が一致していれば、全て自動的に表示されます)
- mu2011
- ベストアンサー率38% (1910/4994)
方法は、関数、VBA(マクロ)、エクセルのフィルタ機能などがありますが、関数やVBAは簡単ではありませんので、エクセルのフィルタ機能を使う方法を紹介します。 (1)先ず元データシート(仮にSheet1)に見出し行を挿入します。 (2)Sheet1のA列を選択⇒データ→フィルタ→フィルタオプションの設定→重複するレコードは無視するを選択→OK 会社名一覧を別シートにコピペし、再度(2)の操作で重複するレコードは無視するは選択なし→OK (3)Sheet2のA1にSheet1のA1をコピペ、A2に=MID(CELL("filename",$A$1),FIND("]",CELL("filename",$A$1))+1,31)を入力、シート名を手動にて変更(先ほどの会社名一覧) (4)Sheet2のA3を選択→データ→フィルタ→フィルタオプションの設定→指定した範囲を選択、リスト範囲欄にSheet1A:C、検索条件範囲欄にA1:A2、抽出範囲欄にA3→OK 尚、(3)で会社名一覧分を事前に作成しておけば、(4)の操作をマクロ記録で後はシートを選択してマクロ実行(ショートカットキー押下)するだけで抽出できますが如何でしょうか。
- imogasi
- ベストアンサー率27% (4737/17069)
関数で出来るのでは、と質問しているのではないですか。しかしエクセルは条件(例A社)を付けた抜き出しは苦手です。 一発でA者の行を抜き出すのも複雑な式です。しかもその会社名の重複の無いリストと連動しないと、A社、B社、・・と 手作業で打ち込まないとならない。 ですからVBAを勉強しないとスムーズに行かないでしょう。仕事などにエクセルを使うならVBAが直ぐ必要になる1例です。 フィルタの操作とコピー貼り付けのマクロの記録を採って考えるのが、その入り口です。 こういう表の組み換えになると、エクセル関数は非力です。 ーー 係数のカウントや、計算なら1シートに各社を混在しておいても、可能な場合があるかもしれない。 またフィルタで洋画たる場合もあるかもしれない。だから 各社にシートで分けて、その後どうするの、も質問に書いておくべきなんです。