• ベストアンサー

複数のエクセルファイルから特定の語を含む行を抽出したい

エクセルで作成した複数の部品リストがあります。 特定の単語(型番)を含む行を抽出して、その行だけ集めたリストを作成したいのですが、そのような便利なツールはありませんか。 できあがるファイルはエクセルでもテキストでも構いません。 部品リストファイルは膨大な数があるので、ファイル毎そのツールにかけるのではなく、フォルダを指定して一気に処理できるとありがたいです。

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

  • ベストアンサー
  • Masa2072
  • ベストアンサー率51% (94/182)
回答No.1

拙作ですが参考になれば FindPathで指定されたフォルダに保存されたブック(XLSファイル)を検索し、キーワードに一致する行を新規ブックにコピーします。 Sub Sample()   Dim KEYWORD As String   '検索時のキーワード   Dim FindPath As String    '検索対象フォルダのパス   Dim FindFileName As String  '検索対象ブックのファイル名   Dim FindBook As Object    '検索対象ブック   Dim FindSheet As Object   '検索対象のシート   Dim Result As Object     '検索に一致したセル   Dim LastRow As Long     '最後に一致した行番号   Dim FirstAddress As String '最初に一致したセルのアドレス   Dim PasteRow As Long    '貼り付け先行番号   Dim PasteSheet As Object  '貼り付け先シート   Dim i As Long      Application.DisplayAlerts = False  '警告メッセージの抑制   PasteRow = 1  '貼り付け先行番号をリセット   Set PasteSheet = Workbooks.Add.Sheets(1)      '##キーワードの取得   KEYWORD = InputBox("キーワードを入力してください")   If KEYWORD = "" Then     'KEYWORDが空なら処理終了     GoTo 終了処理   End If      FindPath = "C:\"      If Dir(FindPath, vbDirectory) = "" Then     '指定のフォルダーがなければ処理終了     GoTo 終了処理   End If      '##抽出処理   FindFileName = Dir(FindPath & "*.xls")   'フォルダ内XLSファイルを一つずつ開きながら処理   Do Until FindFileName = ""     Set FindBook = Workbooks.Open(FindPath & FindFileName)  '見つかったブック(XLSファイル)を開く     Windows(FindBook.Name).Visible = False     'ブック内のシートを一つずつ処理     For Each FindSheet In FindBook.Worksheets       With FindSheet.Cells  'シート全体を検索対象に         Set Result = .Find(KEYWORD, LookIn:=xlValues)  '条件に一致する最初のセルを検索         If Not Result Is Nothing Then           FirstAddress = Result.Address '最初に一致したセル番地を記憶           LastRow = Result.Row '直前に一致した行を記憶           Do             FindSheet.Rows(Result.Row).Copy  '一致した行をコピー             PasteSheet.Rows(PasteRow).PasteSpecial Paste:=xlPasteValues '指定の場所に貼り付け             PasteRow = PasteRow + 1 '貼り付け先を一つ下に                          '1行で複数一致した場合に無視する             '別の行になるか、最初に一致したセルになるまで検索を繰り返す             Do Until LastRow <> Result.Row Or Result.Address = FirstAddress               Set Result = .FindNext(Result)             Loop             LastRow = Result.Row '直前に一致した行を記憶                      Loop While Not Result Is Nothing And Result.Address <> FirstAddress         End If       End With       i = 0     Next     FindBook.Close  '開いたブックを閉じる     FindFileName = Dir   Loop 終了処理:   Set FindBook = Nothing   Set Result = Nothing   Set FindSheet = Nothing   Set PasteSheet = Nothing   Application.DisplayAlerts = True End Sub

nanashisan_
質問者

お礼

回答ありがとうございます。 確認するのに時間がかかりそうなのと、他に回答が付きそうがないので一旦締め切ります。 確認した上で疑問点など出てきたら、改めて質問しますので、その際はよろしくお願いします。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセル VBA でVLOOKUPにて不特定数の行の抽出を繰り返す。

    エクセルVBAについて教えてください。 工場の品種ごとの使用材料の計算を作っているのですが、 各品番のリストがあり5桁の品番コードをキーにしてそれに使用されている材料を別リスト(別なシートにある)から抽出しリストを作成したいです。使用されている材料は5~10種と抽出する、列が不特定数あるのので、関数だとかっこ悪くなってしまいそうなのでVBAにチャレンジしたいのですが。可能でしょうか。 品番コード 83764→    83764に使用されている行を5行抽出 82727→    82727に使用されている行を8行抽出 25124→    25124に使用されている行を11行抽出。 必ず同じ行数あるわけではないので83764に使用されている材料を5行抽出した後に空欄まで下に移動して次の82727に使用されている行を8行抽出というようにしたいのですが。 不備後不明な点あればお願いします。

  • VBAでテキストファイルからの特定行抽出

    エクセルのVBAで、テキストファイルから、特定の文字を含まない行だけを、別のテキストファイルに取り出す方法を教えてください。 具体的には、元のテキストファイルの中から、「.png」と、「.jpg」を含まない行を取り出して、別のテキストファイルに書き出したい。 元のテキストファイルは、エクセルでそのまま読み込むにはデータが大きすぎてエラーになってしまうので、、VBAで不要なデータを取り除いて、ファイルを小さくしていって、エクセルで扱える大きさにしていこうと思っています。 どなたかおわかりになる方がいらっしゃいましたら、どうぞよろしくお願いいたします。

  • Excel 複数行の抽出について

    Excel 複数行の抽出について Sheet1に商品リストがあります。 Sheet2に商談IDがあります。 Sheet3にSheet2の商談IDがある商品だけ、抽出したいです。 Excelの関数もしくはマクロで解決できますでしょうか。 ご回答お願いいたします。

  • 特定フォルダからのファイル抽出

    特定のフォルダから、複数のファイルを抽出できる(カット)ようなツールを探しています。 例えば、CSVのファイルリストにあるファイル名のものをある特定のフォルダから切り取って他のフォルダに入れるなんてことができるツールがベストです。 知っている方いらっしゃったら情報ください。 よろしくお願いします。

  • エクセルで特定のデータのある行jを抽出するには。

    エクセルで作成された、教員50人分の時間割表があります。 そこから特定の10人の時間割の行(1週間分が書かれている)を抽出するには、どのようにすればよいのでしょうか。

  • エクセルで特定単語の行削除

    現在あるソフトを使い所持ファイルの一覧をExcel で抽出したのですが。 削除単語リスト(無視リスト?)を作成して ・例 削除単語「カレンダ」 壁カレ 3.89 こんなの欲しかった! 縦型・メモカレンダー 1.0 プチカレンダ 2.01 透明なカレンダーWtCal [*] ↓↓↓↓↓↓↓↓ 壁カレ 3.89 ・例 削除単語「こんなの カレンダ」 壁カレ 3.89 こんなの欲しかった! 縦型・メモカレンダー 1.0 プチカレンダ 2.01 透明なカレンダーWtCal [*] ↓↓↓↓↓↓↓↓ 壁カレ 3.89 プチカレンダ 2.01 透明なカレンダーWtCal [*] とかできませんでしょうか? 単語のみじゃなく 行ごと消せる方法を探してます。 Excelじゃなくても こういった作業ができる方法があればご教授お願いします。

  • EXCELで複数のファイルから抽出

    Excelのことで困っています。 何かいい方法があれば教えてください。 同じフォームのエクセルファイルが約1000ファイルあり、それぞれのファイルの例えば3~5行目だけを抽出し、別のの新しいファイルにどんどん貼り付けて3~5行目だけを集めたファイルを作りたいのですが、ファイルの数が多いので、全ファイルを開いてコピペする以外にマクロか何かを使って自動で抽出できるような方法がないかと考えております。 1000個のファイル名は今はばらばらですが、必要であれば0001.xls~1000.xlsなどに変更してもよいです。 どうぞよろしくお願いします。

  • Excelの特定のセル内で“X”文字目が“Y”を検索→行の抽出

    Excelである特定のセルのX文字目が“Y”の行だけを抽出したいのですが 便利な関数はありませんでしょうか? Excel初心者です。宜しくお願いします。

  • perlを使用しての特定行抽出について

    何万行も書いてあるテキストファイルがあります。抽出したい文字列の一覧がテキストファイルにまとめられています(文字列は約1000個)。抽出したい文字列は一行にひとつづつ書かれています。何万行も書いてあるテキストファイルから抽出したい文字列と二つ合致したらその行を抽出したいです。ここで、注意していただきたいのが、抽出したい文字列一覧から二つの文字列にヒットした行を抽出したいです。宜しくお願い致します。 何万行も書いてあるテキストファイル aaaaa abc edi bb aert kkkkkkkkkk lllllll ddddd aaaaa anhi kkk    ・・・・・・・・ ・・・・・・・・ 抽出したい文字列一覧のテキストファイル aaaaa bbbbb ddddd iiiiiiiii eeeee ・・・・・ ・・・・・

    • ベストアンサー
    • Perl
  • TXTファイルからExcelへ指定行を抽出

    OffceXPを使用しております。 表題の通りなのですが、テキストファイル内のデータから指定した行をExcelのファイルへ抽出する方法を教えて下さい。 (ファイルは「.TXT」形式と「.CSV」形式の2種類が用意できます。) 当初はファイル名の一覧行を作り 「='ドライブ名:\フォルダ名\[ファイル名.csv]シート名'!$A$1」 の式を用いて表を作成しようとしたのですが、この方法ではファイルを全部開き値を更新しないとエラーが出てしまいました。 ファイルは200以上有り、1つ1つを開いてデータを引っ張るには無理があります。 フリーソフトを探してみましたが、指定文字を含む行を抽出するソフトは数多くあったのですが、 「指定行」というのが見つからず、お手上げです。 関数や数式・VBAもしくはフリーソフト等、簡易にデータ抽出が出来れば何でも結構です。 但し、VBAに関しては殆ど知識が無いので、解り易く書いて頂けると幸いです。 欲を言えば、ファイル名も同時に抽出出来ればあり難いですが、こちらはさほどこだわりません。 良い方法をご存知な方がいらっしゃればどうかご教示下さいませ。 宜しくお願い致します。

専門家に質問してみよう