• ベストアンサー

エクセルについて教えてください

エクセルのデータをある項目毎にシート分けたいのですが、 何かいい方法ありませんか? エクセルデータを取引先毎にシートを分けていたのですが、 数百件の取引先をシート別に分けるのが相当な負担なのです。 (取引先約700件、全件数13万件) 例 取引先  取引先名 菓子名 金額 1234567  明治  チョコ  132 1234567  明治  チョコ  148 1234567  明治  クッキー 132 7656211  ロッテ チョコ  148 7656211  ロッテ ガム   105 7656211  ロッテ ガム   105 ※エクセルは2007です。   よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • rivoisu
  • ベストアンサー率36% (97/264)
回答No.5

方法はあります、簡単です。 でも700ものシートを作ってそのあとどうしたいの? 印刷するだけなら 取引先別の様式のシートをひとつ作ってすべての取引先を1取引先別に転記して印刷すればいい。 >取引先約700件、全件数13万件 Excel2007になってこの条件が可能だからと700ものシートに13万件ものデータを分配するのは「非効率」「稚拙」と感じます。 >エクセルデータを取引先毎にシートを分けていたのですが、 そのあとどう使うの? 例えばある取引先が見たければ700のシートタブの中から選ぶわけでしょう? それならば取引先一覧シートの目的の取引先を選ぶと(取引先コードを入力する、一覧でダブルクリックするなど)したら、そのデータが見れるようにしたらいいのではないでしょうか。 必要な時に必要な取引先のデータが取り出せるようにするべきではないでしょうか。 そのあとある取引先についての分析なりが必要なら、そのデータをブックに保存すればいい。 マクロが難しければオートフィルターでも同じようなことができます。 オートフィルターをマクロで制御することもできます。 同じデータを2重に作るのではなく。同じデータの見せ方が違う。という風に考えるべきです。(元データに変更があったらもう一度分配マクロを起動して待たなきゃならない、今必要でもない取引先のために) Excelにもデータベース的な機能があります。 データベースというものが必要になったのは「データの一元化」が大きな目的です。 同じデータを幾種類ももつと大変です。極力同じデータを持たずに多様な見せ方を実現するためのデータベースなのです。 自分のしたいことをもう一度深く考えてください。Excelは「結構使えます」深い要求にも答えられると思います(それなりの”やる気”と"時間”は必要かもしれませんが)

その他の回答 (5)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.6

データ数の多いものを省力化したい時は、プログラム(この件ではエクセルVBA)しかないでしょう。 しかしこんな(会社別にしても)多量のデータをシート別に分けてどうするのかな。エクセルでやる課題を超えているのでは。分けることで不便にもなる面が出る。合計や件数や加工・集約データがほしいなら別の方法があるのでは。意図とか目的は語らず、自分の発想の路線で質問しているような質問が多いが、その路線そのものを熟練者に相談すると目からウロコということもありえる。 ーーーー VBAでやるなら (1)会社コード列でソートし、会社コードの切れ目を捉え、直前の切れ目行から今回の切れ目までをコピーして、新たなシートを挿入して張り付ける。会社数だけプログラムで繰り返し。 (2)会社コード列の切れ目のコードでフィルタを掛けて、出てきた結果を新シートに貼り付ける。会社数だけ繰り返し。 こんなところかな。 VBAの作成経験はありますか。業務にエクセルを使う(本当はエクセルハそういうものに向いてないと思うが)なら、VBAが使えることは必須だと思う。 勉強してください。 上記のような、こういう方法論はエクセルなど知らなくてもおもいつくはず。そういう点は考えてみたのかな。丸投げでは。

  • 135ok
  • ベストアンサー率34% (26/75)
回答No.4

No.3です。 シート1のデータを名前ボックスで名前をつけておくと、簡単に作業が行えます。 たとえば、次の通り名前をつけたとして A~D列のデータを表1 F列のデータを表2 リスト範囲  表1 検索条件範囲 表2 抽出範囲   sheet2!$A$1

  • 135ok
  • ベストアンサー率34% (26/75)
回答No.3

「フィルタオプションの設定」でやってみては。 添付資料を参照ください。 データがシート1にあるとして、シート2に取引先の1つを抽出する。 まず初めに、シート1で取引先名の項目を1つ追加する。(F列) 次に、シート2のA1セルをクリックし、データ→フィルタ→フィルタオプションの設定をクリック。 抽出先 指定した範囲をチェック 抽出範囲をクリックし、シート2のA1セルをクリック。  *初めにこの作業を行わないとシート2に抽出することができません。 次に、リスト範囲をクリックしシート1のA~D列を選択。 次に、検索条件範囲をクリックし、シート1のF1:F2を選択。 後は、OKをクリック。

  • Trick--o--
  • ベストアンサー率20% (413/2034)
回答No.2

VBAで 連想配列(Dictionaryオブジェクト)で 「ある項目」名をキー(添え字)にして一旦格納し キーと同名の(もしくは、キーに関連付けられた名前の)シートに書き出す Dictionaryを使わないのなら 「ある項目」名と同名(もしくは以下略)のシートを探し シートが存在すれば書き出し 存在しなければシートを作ってデータを書き出す 後者のほうが直感的にできるかな。

  • korapisi
  • ベストアンサー率45% (16/35)
回答No.1

人力でやるなら取引先をキーにしてソートし、切り出していく方法でしょうか。 分割してしまうと逆にやりにくい場合もあるので、(単価の一括変更とか)オートフィルタで見たい部分だけ見るという手もあると思います。

関連するQ&A