• ベストアンサー

excel内のデータの検索

メーカーに勤務しています。商品の検査データをexcelで入力して保存しており、そのファイル数が数千個になります。今回そのファイル内のある部分のデータ(すべて同じセルに入力してある4桁の数値データ)がある値以下になっているものを抽出しなければなりません。明日の夕方までにやり遂げる必要があるため、1つ1つファイルを開いて確認すると間に合いません。そのため、ファイルを開くことなく自動で検索する方法があればと考えています。非常に困っており、方法を是非とも教えて頂ける様お願いします。

noname#91504
noname#91504

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

  • ベストアンサー
  • pkh4989
  • ベストアンサー率62% (162/260)
回答No.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を押してマクロ一覧からマクロ名を選択して実行

noname#91504
質問者

お礼

ありがとうございました。参考になりました。

その他の回答 (2)

noname#97729
noname#97729
回答No.2

過去に良く似た質問を見つけました。 http://okwave.jp/qa211677.html 何かヒントになるかもしれません。 必要な補足があれば書いてもらえると、 賢い人がいいように手直ししてくれるかもです。 私はエクセルを持っていないのでどんな処理になるか 確認してないです。

noname#91504
質問者

お礼

ありがとうございました。

noname#97729
noname#97729
回答No.1

複数のエクセルブックのシートを1つのブックに統合 などを使って、ブック数を減らしてみてはどうですか? 参考に http://search.vector.co.jp/search?query=%83G%83N%83Z%83%8B%81@%93%9D%8D%87

noname#91504
質問者

お礼

ありがとうございました。

関連するQ&A

  • エクセル関数の演算後のデータ

    エクセルのVLOOKUP等関数でデータを引っ張ってきたとします。例えば社員番号番を基に名前や住所などを。その場合データが表示されているセルには既にVLOOK等の関数が入力されていますので、セルに入っているのは当然抽出したデータのみではありません。データが うまく抽出された後、そのセルに結果として得られたデータのみを、例えば数値データなら数値データ、文字データなら文字データとしてセルに格納することは出来るのでしょうか?つまりセルの中の関数式を取り去り、結果として出たデータのみを残しておきたいのですが・・・何か特殊な式が必要でしょうか?セルの設定のみで結果データのみを残す方法はありますか?結果をコピーして値のみを貼り付けとする以外にないでしょうか。

  • EXCEL セル内の数値から、5桁目だけを抽出する方法について

    EXCELシートのセル内に、以下のような30桁からなる数値が入力されている 列が複数あります。 この列内の数値の右端から「5桁目」だけ、または左端から「10桁目」だけを 抽出したいと思っているのですが、EXCELの仕様で数値の先頭にある「0」は 表示されないため、各セルごとに表示されている数値の桁数はバラバラです。 数値の先頭に「0」が付いているセルが多数あり桁数が不揃いなことと、 数値が30桁もあるため、セルの数値表示が「1E+29」のように「E+29」で表示 されてしまっており、うまく数値を抽出することが出来ません。 ◆元データ   「列1」     (1) 1234567890  →(本当は30桁:000000000000000000001234567890)    (2) 111111111100000000001111111111   (3) 1      →(本当は30桁:000000000000000000000000000001)  (4) 123456789012345678909999999999  ◆右端から5桁目だけを抽出する   「列1」      (1)  6      (2)  1      (3)  0      (4)  9   お手数お掛けいたしますが、ご指導下さいますよう宜しくお願い致します。

  • excelのデータ抽出

    縦軸の条件と横軸の条件からデータを抽出する方法を教えてください。 以下のような表があります。    A  B   C   D   E  ・・・・ 1    0.5  2.5  3.1  5.5 2 40   2  5   10  3 3 55 4 35 1行およびA列の値を別セルに入力して、クロスするデータを出したいのですが、例えば別セル(1)に40と入力し別セル(2)に5.5と入力すれば、別セル(3)に3と抽出したいです。 また、出来れば別セル(2)に入力する値が表にない場合、入力した値より大きな値で一番近い値を読み取れればベストなんですか。 例えば別セル(2)に5.4と入力した場合には5.5の列を抽出 なにか良い方法はありますか? よろしくお願い致します。

  • エクセル データ抽出

    よろしくお願いします。 セルA3:E13にこのようなデータが入っています。 G4:H4にデータを入力すると、G8:K12に自動的にデータを抽出したいのですがよい方法はありませんでしょうか。 セルG4:H4のデータを入力しなおすたびに、条件に合うデータをG8:K12に抽出したいです。 実際にはもっと膨大なデータが入り、増え続けます。 エクセルに弱いのでどなたかお力添えください。 よろしくお願いいたします。

  • エクセルで数値データの早い入力は?

    エクセル2000で膨大なデータを入力しています。 2桁の数値が延々続くものなのですが、今はテンキーで 「6」「4」「Enter」 「5」「8」「Enter」…のように入力しています。 これを「Enter」を押さなくても入力できるように、つまりデータの数字2つを押しただけで下のセルへ移動していくようにしたいのですが、どうすればいいのでしょうか? いろいろ探して試したのですがいい方法がなく、入力規則→文字列(長さ指定)を試してもうまくいきません。 どうかよろしくお願いします。

  • エクセル 検索値と一致する行の検索

    Sheet1に以下のようなデータ(3,000件程度)があり、Sheet2を「検索用シート」として、検査値と一致する(Sheet1の)検査範囲の行データ(各対応範囲)を検索・抽出したいと考えています。 なお、検査値及び検査範囲は20桁の数字であるため、文字列で表示しています。 LOOKUP関数を使用して試みたのですが、検査値を入力したところ、異なる対応範囲のデータが抽出されてしまうケースが発生しました。 原因が分かりません。検査値及び検査範囲に問題があるのでしょうか? 参考になるか分かりませんが、この検査値及び検査範囲の上2桁は「11...」、「12...」、「13...」と1から始る数字となっております。 LOOKUP関数では不可能なのでしょうか? 可能であれば、関数を使用して正しいデータを検索・抽出できる方法を教えてください。 Sheet1    A(日付)  B(氏名)   D(20桁の数字)        1  2/1      ○●    11223344556677889911        2  2/3       △▲    12341234123412341234       3  2/5       □■    11112222333344445555         ↑       ↑        ↑      対応範囲1  対応範囲2   検査範囲 Sheet2(例)     A(検査値)          B(対応範囲1)       C(対応範囲2)      1  12341234123412341234      2/3             △▲                               ↑              ↑       A(検査値)に入力した値と、これに一致するSheet1の各対応範囲を検索・抽出したい。  

  • excelのデータを反映させる方法

    excelでの質問です。 (1)日ごとに入力するファイル (2)月ごとに入力するファイル の2つの別ファイルがあったとします。 (1)のファイルは毎日作成します。 そこで、(1)のファイルのセルA1に「10」とセルA2に「20」と異なる数値を入力したときに (2)のファイルのセルB1とセルB2にも自動的にその数値が反映され、 (1)のファイルを一か月分作れば自動的に (2)のファイルにも一か月分入力されているようにするにはどうすればよいのでしょうか。 ご教授お願いいたします。

  • エクセル関数の書き方、入力方法

    エクセル関数の初心者です。関数の書き方で下記の内容について教えて下さい。 例えば、1行のセルA1~P16の表に入力された数値(1~3桁)で、少ない数値を5個を自動的に抽出し、その平均値を出す関数の書き方が分かりません。 但し、表中に同じ少ない数値が複数有る場合、その複数を含め5個抽出する式としたいのですが、どのような関数とすればよいでしょうか。

  • エクセルで異なったシートからデータを抽出する方法

    エクセル2002を使用しています。 日報○○○○○.xls(○○○○○は年月日が入ります。) というエクセルのファイルが約1年分あります。 このエクセルの中の一部分のセル、たとえばd:18とf:23のデータを抽出して、一つのファイルを作成しなければいけなくなりました。 新しく作るエクセルには○○○○○、△△、▲▲(△△はd:18の値、▲▲はf:23の値)のように元になるエクセルの年月日とそのファイル内のデータの値が順に入れば良いです。 エクセルを一つづつ開いて調べていけば良いのですが、膨大な時間がかかってしまうので、何か良い方法があれば教えてください。 よろしくお願いします。

  • エクセル:同じデータがあれば、同じデータの隣のデータを抽出する。

    エクセル:同じデータがあれば、同じデータの隣のデータを抽出する。 以下のようなエクセルデータがあります。A1からA3の中にC1があれば、 あったセルの隣のセルの値をD1に抽出したいです。 何か方法がありますでしょうか? お願いいたします。  EX: A B  C D 1 2  3 2 5  2 3 9  1 結果: A B  C D 1 2  3 9 2 5  2 5 3 9  1 2

専門家に質問してみよう