• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel マクロ 抽出 フィルタ 別シート)

Excelマクロでセルを抽出する方法とは?

このQ&Aのポイント
  • Excelマクロを使用して、特定のセルのデータを抽出する方法を詳しく説明します。初心者でも簡単に実行できる手順をご紹介します。
  • 具体的な例として、田中さんのデータのみを別のシートに抽出する方法を解説します。田中さんのデータを検索する方法も説明します。
  • マクロ初心者の方でもわかりやすい説明で、Excelのマクロ機能を活用して効率的にデータを抽出することができます。

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

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

データ行数が多いということらしいが テストデータでテストプログラムで600行ぐらいのデータでやったが、1瞬でした。10000行ぐらいなら辛抱できる処理時間でしょう。やってみて言っていますか。 下記は一番泥臭い総舐め法です。 下記コードで実際やってみてください。 こんな簡単なコードで出来ることです。 Sub test01() k = 1 d = Worksheets("Sheet1").Range("A65536") For i = 1 To d x = Worksheets("Sheet1").Cells(i, "A") If x = "田中" Then Worksheets("Sheet2").Cells(k, "A") = Worksheets("Sheet1").Cells(i, "A") Worksheets("Sheet2").Cells(k, "B") = Worksheets("Sheet1").Cells(i, "B") Worksheets("Sheet2").Cells(k, "C") = Worksheets("Sheet1").Cells(i, "C") k = k + 1 Else End If Next i End Sub ーー If x = "田中" Then の田中は検索条件の値の入っているセル(Sheet1のA1らしい)を指定してください。 実行のキッカケはボタンのクリックイベントなどに登録。 ーーー 処理するロジック・手法 (1)総なめ法(上記) (2)Find,FindNext法 (3)Filter・コピー法 (4)ソートし田中の塊の行を抜き出し (5)データ構造を持ち込む(作りこむ) (6)アクセスなどに持ち込んで(MSクエリなど)SQLで処理 (7)ユーザー関数を作る(第n番目出現のの田中の行番号を返す関数) 私が思いつくものでも色々ある。

その他の回答 (4)

  • higekuman
  • ベストアンサー率19% (195/979)
回答No.5

> 上記で表示している「田中」に該当する者が300種類ぐらいありまして、オートフィルタで300の中から田中を探す時間をかけることができない状況です。行自体は400行近くあります あのぉ・・・オートフィルタが何なのか、解っていらっしゃいますか? 400行くらいの中から、「田中」に該当するものが300くらいあるんですよね? その300くらいある田中を抽出するためにオートフィルタを使います。 その抽出した300くらいの「田中」の中から、さらに田中を探す??? 意味が解らないのですが・・・

  • higekuman
  • ベストアンサー率19% (195/979)
回答No.3

> オートフィルタ+コピペで行うにはデータの量が多すぎたもので… Ctrl+A で全選択したり、Ctrl+Shift+* でデータ領域を選択したり、Ctrl+Shift+矢印で終端までを選択したりできるので、特に問題は無いと思うのですが、データの量が多すぎることで、どんな不都合があるのでしょうか?

gastronome
質問者

お礼

上記で表示している「田中」に該当する者が300種類ぐらいありまして、オートフィルタで300の中から田中を探す時間をかけることができない状況です。行自体は400行近くあります

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.2

マクロの記録でも近い部分までできますね。 マクロの記録開始 Sheet1の範囲を指定、コピィ Sheet2のA2を指定、貼り付け Sheet2の範囲を指定、オートフィル、A列 田中 等しくないでフィルター 適当に行を範囲指定、行の削除 フィルター 解除 マクロの記録終了 少し手を加えましたが Sub Macro1() Range("A2:D10").Select Selection.Copy Sheets("Sheet2").Select Range("A2").Select ActiveSheet.Paste Application.CutCopyMode = False Range("A1:D10").Select Selection.AutoFilter Field:=1, Criteria1:="<>" & Range("A1").Value, Operator:=xlAnd 'この行をRANGEに一部変更 Rows("2:12").Select Selection.Delete Shift:=xlUp Selection.AutoFilter End Sub 参考にしてください。

  • higekuman
  • ベストアンサー率19% (195/979)
回答No.1

A1に名前を入力すると別シートに抽出されるようなマクロに比べるとほんの少しだけ手間はかかりますが、オートフィルタで抽出してコピペすれば、やりたいことはできますよ。 オートフィルタ+コピペでやれることは解っていて、その手間すら省きたいということでしょうか?

gastronome
質問者

補足

ありがとうございます。 オートフィルタ+コピペで行うにはデータの量が多すぎたもので…

関連するQ&A

専門家に質問してみよう