- ベストアンサー
excel内のデータの検索
メーカーに勤務しています。商品の検査データをexcelで入力して保存しており、そのファイル数が数千個になります。今回そのファイル内のある部分のデータ(すべて同じセルに入力してある4桁の数値データ)がある値以下になっているものを抽出しなければなりません。明日の夕方までにやり遂げる必要があるため、1つ1つファイルを開いて確認すると間に合いません。そのため、ファイルを開くことなく自動で検索する方法があればと考えています。非常に困っており、方法を是非とも教えて頂ける様お願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
以下のVBAで試してみてください。 検索対象のフォルダ、ブックの検索対象のセル、抽出条件値などを設定してください。 Public Sub ファイル抽出() Dim wBkName As String 'ブック名 Dim wDir As String 'ドライブフォルダ Dim wRow As Long '行カウンタ Dim ChkNum As Integer '抽出条件数値 Dim ChkCell As String '検索するセル Dim ExitFlg As Boolean ' On Error Resume Next wDir = "C:\****\" '←ドライブとフォルダは指定 ChkCell = "B10" '←検索するセルを指定 ChkNum = 1234 '←抽出する条件数値 ' wRow = 0 With ActiveSheet wBkName = Dir(wDir & "*.xls") If wBkName <> "" Then Do While ExitFlg = False If StrConv(Right(wBkName, 4), vbUpperCase) = ".XLS" Then 'ActiveSheetのA列に書き出し .Range("C1").ClearContents .Range("C1") = "='" & wDir & "[" & wBkName & "]'!" & ChkCell If .Range("C1") <= ChkNum Then '抽出条件の数値以下の時、ファイル名を書き出し wRow = wRow + 1 .Cells(wRow, 1) = wBkName End If wBkName = Dir '次のファイルを検索 If wBkName = "" Then ExitFlg = True End If End If Loop End If .Range("C1").ClearContents End With End Sub 'マクロ貼付 ※ 新しいExcelを起動する (1) Alt+F11 (ツール → マクロ → Visual Basic Editor) →「挿入」→「標準モジュール」で表示される画面に貼り付け (2) 実行は、(F5を押す)又は、シート画面に戻って Alt+F8を押してマクロ一覧からマクロ名を選択して実行
その他の回答 (2)
過去に良く似た質問を見つけました。 http://okwave.jp/qa211677.html 何かヒントになるかもしれません。 必要な補足があれば書いてもらえると、 賢い人がいいように手直ししてくれるかもです。 私はエクセルを持っていないのでどんな処理になるか 確認してないです。
お礼
ありがとうございました。
複数のエクセルブックのシートを1つのブックに統合 などを使って、ブック数を減らしてみてはどうですか? 参考に http://search.vector.co.jp/search?query=%83G%83N%83Z%83%8B%81@%93%9D%8D%87
お礼
ありがとうございました。
お礼
ありがとうございました。参考になりました。