- 締切済み
excel表の集約について
2000行あるシートの,A列には100種類のデータがランダムに並んでいます。この中からある3種類のデータだけを残して他の種類のデータ行を削除したいと思います。 さらに同じようなシートが20枚ほどあるので,残した3種類のデータをつなげて集約作業をやりたいと思ってます。 ソート機能を使って並べ直し,必要なデータのみを残し他を削除して,他のシート分とつなげればできるのですが,もっと簡単な方法がありましたら教えてください。よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- chappy007
- ベストアンサー率50% (5/10)
glineareaさん、こんにちは! >残した3種類のデータをつなげて集約作業をやりたいと思ってます。 これってどんな集約作業になりますか?その内容によって、いろいろなやり方が考えられ ると思うのです。 3種類のデータだけ(別シート含め)のある数字の合計を集計するのか? この表が何を目的で作られているのかによってもいろいろ考えられるのではないでしょう か?一枚のシートに、それら取り上げるグループだけを表にしたいのですか? それならフィルタ機能を使うと作業も早いのではないでしょうか? もう少し詳しくお話いただけるともっと具体的にアドバイスが出来るものと思います。 では。。
- imogasi
- ベストアンサー率27% (4737/17069)
エクセル2000,2002までは、ある関数(存在すればDELETEとかの名前になるのでしょうが)をあるセルに入れると、自分自身の行や他の指定行を削除する関数が「存在しない」と思います。同じく行挿入も同じです。 1行または指定範囲を指定し、1つ1つ「操作」(列削除)する原則で作られていると言うことでしょう。 そういう分野はVBAに任せると言うことだと思います。 VBAを今回限り下記の通り真似して、解決するのはどうですか。模擬データでやって見ます。 Sheet1にA1からA10まで下記データを入れる。 山田 大木 栗田 山田 木下 大木 三田 三木 赤石 久本 ALTキーを押しながらF11キーを押す。VBE画面になる。その後、メニューの「挿入」をクリック-「標準モジュール」をクリックする。右上部分に下記を貼りつける。 Sub test01() ' Sheet1のi行、j列は Worksheets("sheet1").Cells(i, j) ' で表せる j = 1 'Sheet2の第1行目を指す。 For i = 1 To 10 '本番は最終行の行数。例1000 a = Worksheets("sheet1").Cells(i, 1) 'A列i行の内容を取る Select Case a 'A列データに注目 Case "山田" '山田ならShee2に書き出し Worksheets("sheet2").Cells(j, 1) = Worksheets("sheet1").Cells(i, 1) ' 直前2行はやむなく改行されています。=の両辺は ' 1行に変えてください。大木のこの部分も同じ。 j = j + 1 'j行に1行書いたから、次行を指す Case "大木" Worksheets("sheet2").Cells(j, 1) = Worksheets("sheet1").Cells(i, 1) j = j + 1 Case Else End Select Next i '次の行の処理(上のFor i=1 以後)を繰り返す。 End Sub これをメニューの「実行」-「Sub/ユーザーフォームの実行」をクリックして、実行するとSheet2には 山田 大木 山田 大木 になります。 --- ●後は人(上例では山田、大木)を増やすこと。 ●Sheet1よりSheet2へ持って行く列を増やすこと。が必要です。C列を持って行くなら(Aは1、Cは3なので) Worksheets("sheet2").Cells(j, 3) = Worksheets("sheet1").Cells(i, 3) を増やすと良い. 最大限余分な知識は省いて初歩的にしています。
- tamazo-
- ベストアンサー率60% (35/58)
「データ(D)」メニューの「統合(N)」を使うと、複数シートの集約は簡単にできると思います。 統合して1つの集約結果にした後で、3種類のデータ以外を削除すればよいでしょう。 Webで、「データの統合機能」とかのキーワードで検索すると、いくつか実例がでてくると思います。