dポイントプレゼントキャンペーン実施中!

おはようございます。

Excelにあるデータをデータベース(Access、またはMSDE)にインポートする方法を知りたく投稿します。

Excelに以下のようなデータが並んでおり、この並びを変更することはできないそうです。

             |------------------|
              [日付(yy/mm/dd)]
[社員No(文字型)] [当日迄][今月][割合]
・・・

これがその日付分、社員の人数分、縦に並んでいます。
|--|で示されるデータ部分が横に1週間分並んでいます。
更に週のまとまりが縦に6週並んでいます。

その中から1レコードが以下のデータになるよう抜き取ろうと思っています。
[社員No][日付][当日迄][今月]
・条件として、[当日迄]にデータが入っていること。

今はC#からの操作を考えているのですが、
このようなデータを抜き取る場合、配列にも入れられない(型が一通りではないため)、CSVに吐き出すとしてもExcel側でマクロを組むとforループを多用したためか、インポートに時間がかかってしまいます。

このような場合、どういう方法を使うのが一般的(適切)なのでしょうか?

A 回答 (2件)

意味がわかりました。


日付だけでなく[当日迄][今月][割合]も横に並んでいるということですね。

ExcelをAccessのテーブルにリンクして1レコード中の1週間分をユニオンクエリで1列に表示するようにすれば良いのでは。ユニオンで1列の状態にしてテーブルを作成するようにすれば行けるのでは。
    • good
    • 0
この回答へのお礼

回答が遅くなり失礼いたしました。

テストデータで確認してみましたところ、
大体うまくいきました。

これから、実データ用に落とし込んでみます。

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

お礼日時:2005/02/24 06:38

Accessの場合


Excelをテーブルにリンクさせ[当日迄]に該当するフィールドにデータが存在するレコードだけを抽出するテーブル作成クエリを作りそのクエリを元にテーブルを作成すれば出来ます。(Excelの[当日迄]と[日付(yy/mm/dd)]の列が重複する列でなければこれで出来ます)
これが一番簡単な方法です。

[当日迄]と[日付(yy/mm/dd)]の列が重複する列の場合は別の列で[日付(yy/mm/dd)]の列が重複しない列で一度[日付(yy/mm/dd)]が除けるように抽出し再度[当日迄]にデータが存在するレコードだけ抽出するようにすれば良いのではないでしょうか。
またはDAOを使用してExcelのワークシートを参照するリンクテーブルを作成しクエリを使い[当日迄]にデータが存在するレコードを抽出する。

このくらいではないでしょうか。
    • good
    • 0
この回答へのお礼

O_cyanさん、回答ありがとうございます。

Accessを使ってということでしたが、Excelへのテーブルからのリンクもできませんでした。(やり方間違っているかもしれませんが・・・)
Excel上では、[当日迄]と[日付]は違う列なのですが、
       |     |[日付]|   |       |[日付] ・・・
----------------------------------------------
[社員No]|[当日迄]|[今月]|[%]|[当日迄]|[今月]・・・1人目   → 1週間分
----------------------------------------------
[社員No]|[当日迄]|[今月]|[%]|[当日迄]|[今月]・・・2人目

となっているので、テーブルへの直接リンクは無理なような気がいたします。

ありがとうございます。

お礼日時:2005/01/28 15:52

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!