• ベストアンサー

アクセスでデータをまとめる方法

今エクセルで60ファイルある中からある条件を 抽出しなくてはいけないのですが、60ファイル 全部開いてフィルタをかけたりCOUNTIFを するのがあまりに手間でアクセスでできないか 考えています。ちなみにイメージは <イメージ> 番号 名前  日付 1  Aさん 10/1 2  Bさん  4/1 3  Cさん  5/1 4  Dさん  4/20 というエクセルファイルから4月は何件あったか というのを抽出したいと考えています。 こんな感じのエクセルデータをアクセスで1ファイル にしてbetween を使えばできるかとは思っているの ですが、60個のエクセルファイルをアクセスで ひとつにまとめるいい方法がわらず、困ってます。 なにかいい案がありましたら教えて下さい!

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

  • ベストアンサー
  • sydneyh
  • ベストアンサー率34% (664/1947)
回答No.1

全Excelファイルが、同じ見出し、同じ形式だと仮定して以下を参考にして下さい。 まず、全ExcelファイルをAccessでテーブルにインポートします。 そして、まとめたいキーのインポートしたテーブルに、追加クエリで、テーブルを一つにまとめます。 (まとめたあとは、紛らわしいのでいらないテーブルは削除しましょう) あとは、まとめたテーブルを選択クエリで、条件抽出すればいいのでは?

masanogu1020
質問者

お礼

追加クエリでうまくやることにしました! VBAエクセルで多少できる程度でちょっと わかりませんので・・・。わざわざ教えていただいた のにすいません。記録マクロでファイルを開いて 地道にやります! ありがとうございました!

その他の回答 (1)

noname#60992
noname#60992
回答No.2

VBAを使うことになりますが、よろしいでしょうか? とりあえず手順としては 1. インポートしたいエクセルファイルをひとつのフォルダ下におく 2. Dir 関数と Do~Loop を使ってファイル名をひとつずつ取り出す 3. DoCmd.TransferSpreadsheet acImport, ...... などを使ってエクセルファイルを仮テーブルにインポートする 4. 仮テーブルのデータを合計テーブルに追加し仮テーブルを削除 5. 集計クエリを作って結果を表示 仮テーブルを使わなくても直接ひとつのテーブルにデータを読み込んでもかまいません。

関連するQ&A

  • アクセスのクエリ 抽出について

    アクセスでクエリを組み、あるデーターベースから会員番号・名前を抽出しようとしています。 数万件ある会員番号から指定された500件を一度に抽出したいのですが、どのようにすればよろしいでしょうか。 この500件の会員番号はランダムで特にクエリを組める条件等もなく、抽出したい会員番号が記載されたエクセル一覧からコピーして、クエリの抽出条件に貼り付けたりしたのですが、うまくいきません。 会員番号を1件づつ、抽出条件に入れていくのも大変なので、いい方法があればと思っております。 基礎的なことかもしれませんが、どなたかご教示いただければ幸いです。 よろしくお願いいたします。

  • アクセスでのデータの引き抜き(抽出)方法について

    アクセスのデータ抽出についてご質問が ございます。 100件あるデータの中から 抽出条件が異なるデータを レコードごとに3件抽出したいのですが 困ってます。 例えば、100件のデータの 1フィールド目の数値が 1234567890 7891234567 5678901234 となる値を 抽出条件に割り当て 100件中3件ほど、レコードごとに 抽出出来る 方法はないでしょうか? お手数ですがアドバイスお待ちして おります。

  • AccessのデータをExcelに貼り付け

    AccessのデータをフィルターしてExcelに貼り付けるには、AccessとExcelのどちらのVBAを使えば良いでしょうか。 前提:Accessに10フィールド100行くらいのデータがあり、Excelに氏名と日付を入力する欄がある。 処理:AccessのデータをExcelに入力した氏名と日付でフィルター(AND検索)→フィルターしたままExcelに貼り付け→そのデータをExcelの関数とVBAで処理(複雑な関数なのでAccessで処理できない)

  • ACCESS 抽出条件教えてください。

    accessで商品の売り上げ管理をしようとしています。 例えば、日足テーブルがあって、日付と売数フィールドがあるとします。 ----------------------------- 日付      売数 … 2005/11/01  12 2005/11/02  10 2005/11/03  13 … … 2005/12/01  21 2005/12/02  22 2005/12/03  25 … ----------------------------- とあったとします。 このとき、月別に最大売数を出したい時、抽出条件はどのようにすればよいのでしょうか? 売数フィールドの抽出条件を DMax("売数","日足")とし、 日付フィールドの抽出条件(11月の最大売数を出したい)を Between #2005/11/01# And #2005/11/30# としても上手く行きません。 最終的に、 日付   売数 … 2005/01 20 2005/02 10 2005/03 15 2005/04 25 … といったように、月ごとに売数を抽出したい場合どのような抽出条件を使えばよろしいでしょうか? どうぞご教授願います。

  • Accessのフィルタについて

    Access2000を使っています。 フォームに配置した「TextBox1」と「TextBox2」(両者とも日付/時刻型)を引数として指定範囲の抽出をすべく Me.Filter="検索結果 Between #"& TextBox1 &"# And #"& TextBox2 &"#" Me.FilterOn=True (「検索結果」はテーブルに配置したフィールドに連結) のコードをボタンのクリックイベントに設定しました。 ところが、例えば「TextBox1」に「01/02/03」、また、「TextBox2」に「01/05/04」を入力して、ボタンをクリックしても抽出されません。 フォームに戻って、フォームのプロパティで確認するとフィルタの欄に 「検索結果 Between #01/02/03# And #01/05/04#」と表示されておりコードに間違いはないと思われますが、フォームフィルタをかけてみると、検索結果のテキストボックスに「Between #03/01/02# And #04/01/05#」という具合に日付が「日/年/月」に置き変わって表示されています。これがコードを実行しても抽出されない原因だと思われるのですか、何故、このように日付が変わってしまうのでしょうか。また、どうすれば変わらないようにできるのでしょうか。 よろしくお願いします。

  • Access 抽出クエリーについての条件

    先の投稿に重複しますが、 それぞれ異なるテーブルについて、 クエリーで、、 Between #5:00# And #19:00# Between 500 And 1900 上記の方法等で同じ数値ではなく、 期間に幅をもたせて一致としそれぞれの 一致データを抽出するクエリーは つくれますか? もちろん抽出対象のテーブル、列はそれぞれ同じ書式です。 > between関数を使って、 フィールドのデータ型が日付/時刻型の場合 抽出条件欄に、 > 5:00から19:00を抽出したい、 Between #5:00# And #19:00# > 5:00から25:00を抽出したい、 Between #5:00# And #23:59# OR Between #0:00# And #1:00# Access の日付/時刻型では、25:00 というような表現はできないので、上記のように分割することになります。 > また上記がテキストだった場合も、 > 500から1900を抽出したい フィールドがテキスト型の場合、テキスト比較になり数値比較とは異なる抽出結果になるので、 フィールドに Val([テキスト型フィールド]) と式を設定して数値型に変換します。このの抽出条件に、 Between 500 And 1900 と設定します。 通報する

  • accessで重複データの削除について

    accessというよりSQLについてなのかと思いますが、教えていただけないでしょうか。 重複するIDがあり、1件を除いて他のデータを削除してデータを抽出したいです。 抽出条件としては、[年月日]カラムがあるため、日付が一番直近のものを残したいです。  ※こちらも重複しております。 また、[フィルタ]カラムが「2」のレコードのみを対象としたいと思っています。 accessの場合、重複クエリを用いるのかと思い、クエリウィザードから作成しましたが 一意とはなりませんでした。 SELECT テーブル1.[共通ID], テーブル1.[連番], テーブル1.[郵便番号], テーブル1.[住所], テーブル1.[担当者名], テーブル1.[年月日], テーブル1.[フィルタ] FROM テーブル1 WHERE (((テーブル1.[共通ID]) In (SELECT [共通ID] FROM [テーブル1] As Tmp GROUP BY [共通ID] HAVING Count(*)>1 )) AND ((テーブル1.[フィルタ])=2)) ORDER BY テーブル1.[共通ID], テーブル1.[年月日] DESC; distinctも使ってみましたがうまくできませんでした。 何が原因でしょうか。 申し訳ありませんがご教示いただきたくお願いいたします。

  • エクセル 同じデータなのに違うという判定

    2つのエクセルファイル(電話番号リスト)を比較し、一致するものだけを抽出するという操作をしています。 フィルタオプションを使い、一致するものを抽出しているのですが、まったく同じ電話番号なのに、フィルタオプションで抽出されないものがあり、困っています。 たとえば、0120-234567という電話番号がファイル1にあったとして、まったく同じ番号がファイル2にもあるのですが、この2つが違うデータとして扱われてしまうのです。 試しに2つのファイルから、セルをそのままコピーし、別のエクセルファイルに並べ、if(A1=A2,"一致","一致しない")という関数をしてみると、なんと「一致しない」でした。 見た目的には全く同じなのに、何故なのでしょうか。 ちなみにそれぞれの電話番号セルをダブルクリックし、文字列のみコピーして同じことをすると、「一致する」になりました。 セルに見えないデータでもあるのかと、cleanをしてみましたが、セルをそのままコピーする方法だと、cleanをしても「一致しない」です。 一つ一つのセルをダブルクリック→文字列コピーをすればよいのですが、件数が多く手間です。 この2つのデータが見た目通り同じものだとされるためには、どのような方法があるでしょうか。

  • Accessで簡単にフィルターをかけるには?

    Accessでクエリーのbetween関数でフィルターをかけていますが、日にちの範囲を任意に指定して抽出できるフォームは出来るのでしょうか?

  • アクセスで差分を出す方法を教えてください

    Aというエクセルファイルには、データが100件 Bというエクセルファイルには、データが80件として、 AとB両方に入ってるデータ。 AにあってBに無いデータ。 BにあってAにないデータを抽出したいのですが 方法を教えてください。 なにやらアクセスでできるとの事なのですが・・・ よろしくお願いいたします。

専門家に質問してみよう