• ベストアンサー

大量のデータ(csv.)をEXCELライクに処理したい

お世話になります。 今手元にACCESSで開くと100万レコードある料金データがcsvファイルであります。 これを普段EXCELで使っているような関数を当てはめて、 コストシミュレーションを行いたいと考えています。そこでご質問です。 (1)EXCELでは「A・B列にある各セルの値の平均をC列に表示する」 もしくは「A列にある各セルの値の総和を末尾に出力する」 といった関数が使えますが、ACCESSでは同様の操作ができますか?  仮にできるとすればどのような操作が必要なのでしょうか? (2)EXCELではA列以前のデータをそれ以降のデータを別ファイルとすることができますが ACCESSでもこのような操作はできるのでしょうか? お手数をおかけしますがご回答よろしくお願いします。

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

  • ベストアンサー
  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.2

(1)データのインポートでテーブルができているなら 「A・B列にある各セルの値の平均をC列に表示する」 クエリなら フィールド欄にて 平均:([フィールド1]+[フィールド2])/2 の様にすればできます。 フォーム・レポートなら詳細にテキストボックスを挿入して コントロールソースに =([フィールド1]+[フィールド2])/2 になります。 「A列にある各セルの値の総和を末尾に出力する」 クエリの場合は「表示」「集計」にして集計欄を「合計」にすれば できますが、これは合計の行しか出せません。 フォーム・レポートならレポートフッタにテキストボックスを挿入して コントロールソースに =SUM([フィールド1]) になります。 (2)の方はクエリでフィールド欄にA列の項目だけのものと B列以降の項目のものを作ればいいと思います。

19inch_rack
質問者

お礼

回答ありがとうございます。 返事が遅れて失礼しました。 クエリのみでなんとか頑張って資料になりました。

その他の回答 (2)

  • Gin_F
  • ベストアンサー率63% (286/453)
回答No.3

(1) 横列の計算には、クエリを使います。  Sum 関数などは使えないので、各フィールドを四則演算の式を記述します。  レコードの最後に、総和を出す場合は、クエリでしたいのならユニオンクエリが  必要です。  レポート等でよければ、レポートフッターなどに、Sum 関数を使えば大丈夫です。   (2) 質問の意味があんまり理解できないのですが、テーブルを分割することは  できます。  ただ、1:1の関係になるようなデータなら、普通はしないですね。

19inch_rack
質問者

お礼

回答ありがとうございました。 返事が遅れて失礼しました。 Excelの発想でレコードの最後に。。。とお伝えしましたが 特にユニオンクエリまでを使っての作業にはなりませんでした。

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

>表題について 「EXCELライク」にとエクセルの名が出ているのは不利です。良く読めばアクセスの質問であることは判りますが お忙しい中、スキップする人が出れば残念です。 >エクセルに、かこつけなくても、判るパターンの質問です。 アクセスの質問とされた方が直截的です。 CSVファイルをテーブルにインポートします。 そして加工・検索は「クエリ」の役割です。 >アクセスはSQLという仕組みが使えるように成ってます。レコード(各行)の平均は代表的なものです。 XX(属性)だけの平均なども得意です。 >EXCELではA列以前のデータをそれ以降のデータを別ファイルとすることができますが 「A列」はいわば「指定した列より右側列」のことだと 思いますが、アクセスの「クエリ」できます。 >結局 アクセスの本を読むとか講習会に出るとか、知っている人に聞くとかしてください。 >普段EXCELで使っているような関数を当てはめて、 コストシミュレーションを行いたいと考えています これをやるには、(1)・(2)の質問以外のことで 解決すべきことが、多々ありそうです。 アクセス関数の種類は圧倒的に少ないですが。 その都度個別にOKWEBなどに質問を出されてはどうでしょう。 100万以上あるデータは、身近なソフトではACCESS以外では扱えないでしょうから。 CSVファイル」のまま読んで処理するのも、旧Basicが判れば相当範囲できそうです。 でも100万件の処理時間は心配ですが。 エクセルに関連付けして考えるのも良し悪しありますよ。 むしろパソコン(表計算ソフト出現)以前の流れはACCESS的な考えだったと思います。

19inch_rack
質問者

お礼

回答ありがとうございました。 返事が遅れて失礼しました。 ACCESSとEXCELを使い分けて、いい資料ができました。

関連するQ&A

  • XLS→CSVでセルの末尾のスペースが?に

    いつもお世話になります。エクセルのA列に、末尾に1つor2つのスペースをもつデータが入っています。このエクセルファイルをCSV形式で保存すると各セルの末尾にスペースの個数分だけ?がついた結果となりました。 例 xls:○○○_(末尾にスペース1つ) ↓ csv:○○○? この末尾のスペースを消そうと、xlsシートでTRIM(A1)のデータを試みましたがスペースは消えていません。CSVでTRIM関数を使うとセルデータがすべて消えます。このxlsでのスペース(csvの?)は消せないのですか?あるいはこれはスペースでないのでしょうか?ご教授いただければ幸いです。

  • VBでCSVファイルを取り込み、Accessに格納する方法

    VBから、csvファイルを取り込んで、Accessのテーブルに格納したいので すが、Input# でうまくいきません。 csvファイルは、基本的に,区切りですが 1)値の両端を"でくくる。 2)値として"がある場合は、""に変換する。 という仕様です。(ExcelでCSVファイルを作るときと同じ) 3)先頭13列が、上記のような仕様   さらに14列目から290列目までは数値データで、値を""でくくらない。 データ例として、 "aaa","""値""",""",,","""値2,,""","bbb",・・・"ccc",0,1,2,・・・,276 === ====== ==== ========== === === = = = ===  1 2 3 4 5 13 141516 290 1の値:aaa 2の値:"値"," 3の値:",, 4の値:"値2,," 5の値:bbb としてテーブルに取り込みたいです。 Access2000では、255列以上は取り込めないため、 14列目以降の値を9個ずつ別レコードに分けています。 つまり、22列のテーブルにレコード化しています。 レコード1:列1~13の値+列14~22の値 レコード2:列1~13の値+列23~31の値 ・・・ 255列の制限は仕方ないとしても、上記のようなCSVファイルを VBでAccessテーブルに取り込む良い方法を教えてください。

  • CSVファイルをExcelで開くとき

    CSVファイルをExcelで開くと、 12桁以上の数字が値として入っていた場合、 自動で対数表示されてしまいます。 現在、16桁の数字を扱っているのですが、 16桁を対数表示してしまうと、 1の位の数字が必ず0になってしまい、 元データの値を失ってしまいます。 CSVを開くときに、全セル文字列で開くことは出来ませんか?

  • CSVファイルインポート時の制限について

    AccessVBAでcsvファイルをインポートするマクロを作っています。 現在、インポート定義を利用して、データ型を指定したインポートができているのですが、1点だけ問題があり、質問します。 インポートするcsvファイルのA列にIDが入力されています。 そのA列の末尾に、ID(数値型)ではない「<b>32</b><br />」という値が入っています。 Accessのテーブルでは、このIDのフィールドは数値型で管理している為、この1レコードだけ エラーとなり、エラーテーブルが作られ、また、インポート先のテーブルには空のレコードができてしまいます。 この末尾の行については、IDではない「<b>32</b><br />」以外は何もデータが入っていない為、 インポートする必要がありません。 もし可能であれば、csvファイルのA列(Accessテーブルでは数値型のIDというフィールド)が数値ではない場合、 その行のインポートをスキップするような処理がVBAで作成できるとよいのですが、可能でしたら教えてください。

  • エクセルでcsvデータを自動読み込みする方法(至急)

    csv形式のファイル(内容は計測値データ)をエクセルに読み込み、csvファイルの各データが規定値内に納まっているかの確認が容易できる方法を探しています。 このとき条件として、 (1)csvファイル内のデータは10項目程度。 (2)csvデータはランダムに更新される。 (3)エクセルに読み込むときはエクセルシート内の決められたセルにそれぞれデータが格納されること。 (例)csvファイルに"110"と"119"の2種類のデータがあった場合、あらかじめxlsファイルのセルA1に「警察」、セルA2に「消防署」と記入しておき、csvファイルのデータを読み込んだとき、セルB1に"110"、セルB2に"119"と入力される。 (4)csvファイル自体は開かず、必要なときにあらかじめ作成したxlsファイルを立ち上げると、自動でcsvファイルの内容を吸い上げる。 (5)入力されたデータの適否をそれぞれ判定する。 (6)xlsファイルを立ち上げている間にcsvファイルが更新された場合、xlsファイルの更新方法は手動と自動を選択できる。 こんなこと出来るでしょうか? 特に(4)が困っています。csvファイルをエクセルで開いた状態であれば、この内容で出来たのですが・・・。 どなたか良い方法があったら教えて下さい。お願いします。

  • エクセルファイルの1レコード(1行)を1csvファイルへ変換マクロ

    エクセルファイルの1レコード(1行)を1csvファイルへ変換し、エクセルファイルにあるレコード数分だけあるフォルダに自動作成するマクロを教えて下さい。 因みに、csvファイル名は、エクセルデータの『a列.csv』となるようにしたいです。 【例】 本日2007/11/13 ○○.xls A列 B列 C列 111 1 356 13 1 2 ・ ・ ・ ・ ・ ・ 111.CSV "2007/11/13(火)","1","356,"","","" 13.CSV "2007/11/13(火)","1","2,"","","" 変換後のcsvの中身は 1列目に、本日の日付 2列目に、1 3列目に、変換元のエクセルファイルの3列目 4、5、6列目に空白 という形式です。 どなたかお分かりになるかた、ご教授願います。

  • ExcelファイルをCSV 形式で保存するには?

    ExcelファイルをCSV 形式 (Windows、カンマ区切り) (*.csv)にして書類を提出するように言われたのですが、その方法について教えてください。 データの内容は会社の詳細で、1社につき100項目のデータがあり、それが50社あります。その場合、1社目のデータをA列に、2社目のデータをB列にというように入力すればよいのでしょうか? Excel の [名前を付けて保存] ([ファイル] メニュー) を使って、CSV (カンマ区切り) (*.csv)ファイルで保存すると、各項目がカンマで区切られるのでしょうか? 1レコード目と2レコード目はどういった区切りになるのでしょうか? またファイル形式はCSV 形式でと言うことですが、提出するファイル名の拡張子を.txtとしないといけないのですが、それはどうすればいいのでしょうか?

  • CSVファイルをACCESSで読み込んで、編集してEXCELに貼り付けたいのですが

    みなさま、こんにちは。 ACCESSのFORMにボタンを作って、イベントのビルドでCSVファイルを読み込んで、編集して指定したEXCELシートに貼り付けようとVBAを組んでいるのですが、困ってしまいました。 データを一気に読み込んだあと、2次元の配列にして aRecord(r, a)にレコードと項目ごとに値をセットしています。 データを編集後、 ES(b).Cells(posR, posC) = aRecord(r, a) でエクセルのセルに値を入れているのですが、この方法だとEXCELを更新することが できなくて困っています。 ACCESS/EXCEL連携で、ACCESSからEXCELシートを更新できるコマンドがあると聞いたことがあるのですが、具体的にどのようなコマンドを どのように使えばよいのか、ご存知ないでしょうか? もしおわかりになる方がいらっしゃいましたら、是非ご教授下さいますよう よろしくお願いいたします。

  • ExcelにCSV取り込み時、値がおかしくなる

    思うように再現出来ないため曖昧な質問となってしまうのですが、 ExcelからCSVファイルを取りこむ際、値がおかしくなってしまうことがあります。 それほど大きなデータではなく、セミコロン区切りされた10列50行ほどのデータです。 現象というのが、CSVファイルを取り込んだ際特定の列の値全てが、元のCSVファイルの値と見比べて頭3文字消えています。 CSVファイルでは1234567となっているものがExcelに取り込むと4567となっていたりします。 冒頭で言ったようにうまく再現出来ません。 どなたかご存じの方居られましたらよろしくお願いいたします。

  • エクセルをcsvで保存する

    こんにちは、是非教えて下さい。 エクセル2007を使用しています。 このファイルはcsvテキスト形式で提出しなければならないのですが、 エクセルsheet1にA列に値を入力して エクセルsheet2のA列に並び替えます。 この項目には前スペース右詰と指定があります。 エクセルsheet2に並び替える際にセルA列に =REPT(" ",12-LEN(sheet1!A1))&sheet1!A1 を入れました(A2、A3、、、と続きます) csvに保存して確認(メモ帳)したら、 エクセルsheet1で値を入力してない所には(下の図の「 _ 」)スペースが入ってしまいました!! (エクセル)        A 1 123456 2 (未入力) (メモ帳)                   ,______123456,,(現在) ,____________,,(現在)             ↓ ,______123456,,(現在と同じ) ,,,(理想) 上の(理想)のように詰めたいのですが よい数式を教えて下さい。 初心者なので説明をいれて頂けると少しは理解できそうです。 よろしくお願いしますm(__)m

専門家に質問してみよう