• 締切済み

ACCESS2000について

複数のexcelファイルをリレーションシップで結合しようとしていますが、1つのファイルのデータ内容をキーにしてその他のファイルのデータを結合する方法を教えて下さい。 例)a,b.c.の3つのexcelファイルがあります。 aファイルの1~10までの項目があり、bファイルには1~5まで、cファイルには6~10までデータあったといき、表示させたいのがaファイルをベースにして1~10までに、6~10はbのデータを「0」表示、1~5はcのデータを「0」表記させたいのです。 ※上記の場合通常データ表示されないと思います。 ____a___b___c 1 あ 20 0 2 い 30 0 3 う 50 0 4 え 40 0 5 お 10 0 6 か 0 20 7 き 0 10 8 く 0 30 9 へ 0 40 10 こ 0 50

みんなの回答

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.2

ExcelのシートをAccessのテーブルにリンクしている場合は aファイルにID・a(かな) bファイルにID・b(値) cファイルにID・c(値) とした場合 クエリのSQLビューに SELECT a.ID, a.a, IIf(b![b] Is Null,0,b![b]) AS b, IIf(c![c] Is Null,0,c![c]) AS c FROM (a LEFT JOIN b ON a.ID=b.ID) LEFT JOIN c ON a.ID=c.ID ORDER BY a.ID; で表示できます。

mohi-mohi
質問者

お礼

ありがとうございます。 SQLを勉強してみます。

回答No.1

/*//*//*//*//*//*//*//*//*//*//*//*//*//*//*//*//*//*//*//*//*//*//*//*//*/ まず3エクセルブックを用意し、データを作成します。 カンマ区切りになっていますが、それぞれ、異なるセルに値を反映してください。 /*//*//*//*//*//*//*//*//*//*//*//*//*//*//*//*//*//*//*//*//*//*//*//*//*/ ※C:\エクセル\A.XLS ---------------------- Sheet1のデータ ---------------------- ID,ひらがな 1,あ 2,い 3,う ・・・ 10,こ ※C:\エクセル\B.XLS ---------------------- Sheet1のデータ ---------------------- ID,Bの値 1,20 2,30 3,50 4,40 5,10 ※C:\エクセル\C.XLS ---------------------- Sheet1のデータ ---------------------- ID,Cの値 6,20 7,10 8,30 9,40 10,50 /*//*//*//*//*//*//*//*//*//*//*//*//*//*//*//*//*//*//*//*//*//*//*//*//*/ 以下のSQL文を、SQLビューにて、貼り付けてください。 http://okweb.jp/kotaeru.php3?q=1545973 の#3でSQLビューの出す手順を書いてます。 /*//*//*//*//*//*//*//*//*//*//*//*//*//*//*//*//*//*//*//*//*//*//*//*//*/ SELECT ブックA.ID ,ブックA.ひらがな ,iif(ブックB.Bの値 is null,0,ブックB.Bの値) as B値 ,iif(ブックC.Cの値 is null,0,ブックC.Cの値) as C値 FROM ( [Excel 5.0;Database=C:\エクセル\A.XLS].[Sheet1$] as ブックA LEFT JOIN [Excel 5.0;Database=C:\エクセル\B.XLS].[Sheet1$] as ブックB ON ブックA.ID = ブックB.ID ) LEFT JOIN [Excel 5.0;Database=C:\エクセル\C.XLS].[Sheet1$] as ブックC ON ブックA.ID = ブックC.ID

mohi-mohi
質問者

お礼

回答ありがとうございます。 勉強してみます。

関連するQ&A

  • excel2010でcsv結合について

    ご教授お願い致します。 2つのCSVファイルがあり、それを結合したいと考えています。 2つのファイルの中で1列同じ項目があるので、その列をキーに と考えています。 (ファイル1)A,B,C (ファイル2)a,b,c 上記のようなイメージでA列とa列を結合し A,B,C,b,cと表示したいです。 何か簡易な方法はありませんでしょうか?

  • Access 複数テーブルのレコード自動更新

    Access初心者です。会社で業務の進捗状況を、Access2002を使って管理しています。 フィールド数が増えたので、以下のようにテーブルを分けることになりました。 Aテーブル(メイン)   管理No.(主キー、オートナンバーではない)    カテゴリ    作業内容    : Bテーブル   管理No.(主キー、オートナンバーではない)    チェック項目B-1   チェック項目B-2    : Cテーブル   管理No.(主キー、オートナンバーではない)    チェック項目C-1   チェック項目C-2    : という形式で、AとB・Cはクエリのリレーションシップで、「管理No.」を1対1で関連づけています。 AテーブルのもとのデータはExcelからインポートしますが、 Aテーブルのレコード数は増えますが、クエリには反映されません。 Aのレコードが増えたら、BやCも同時に増やすことはできますか?

  • Accessでこんなことできますか?

    以下のようなテーブルがあったとします。 ファイル名,絶対パスを含むファイル名,スペースで区切られたkeyワードの羅列(メモ型)をそれぞれField_a,Field_b,Field_cとします。 この時に、Field_cをある語句(複数)で検索してマッチするものがあれば、そのレコードの内容を表示させる。更にその絶対パスを含むファイル名(Excel)をクリックすればExcelのデータを表示させたいのですが。

  • Access2000 更新のタイミング?

    Access2000を使用しています。 1対1のリレーションシップを設定したテーブル「A」とテーブル「B」を作りました。 テーブル「A」にキーを入れると、テーブル「B」からそのキーに対応したデータが表示されるクエリを作りたいと思います。 そのキーに1対1のリレーションを設定しなければ、キーを入力した瞬間に対応したデータが表示されるのですが、1対1、又は、インデックス(重複なし)を設定すると表示されません。 しかし、テーブル「A」にはデータが重複しないようにしたいと思っています。 わかりにくい説明で申し訳ありませんが、お分かりになるかたがいらっしゃいましたら、どうすればこれを回避できるか教えてください。よろしくお願いいたします。

  • ACCESS、フィールドが異なるデータのインポート

    例えば ファイル1 フィールド A B C D E データ   1 2 3 4 5 ファイル2 フィールド A C D E データ   6 7 8 9 のように、フィールドの項目数が異なるデータをインポートする場合は どのようにすればいいのでしょうか? アンケートのメールを処理するのですが、応えられていない項目についてはデータが無いもので・・・ ちなみにインポート処理さえ出来るのであれば、エクセルでもかまいません。 すみませんがよろしくお願いします。

  • アクセス(access)のクエリ、リレーションシップについて

    アクセス(access)のクエリ、リレーションシップについて 過去の質問を見ましたが、該当が内容なので質問いたします。 現在アクセスでシステムを作成中です。 種別マスタ・・・種別CD(主キー)、種別名 求職ファイル・・・ここに希望種別1、希望種別2と入力させたい。画面では種別名もそれぞれ表示させます。 しかし、2つのファイルをリレーションシップ設定するところでとどまっています。 1つ目は通常通りできますが、2つ目を設定しようとすると、「既にリレーションシップは設定済み」メッセージが表示されます。  それでも「いいえ」で無理やり設定すると、種別マスタ_1というファイルが表示されます。(この件に関しては過去の質問にあったようですが・・・)  しかし、クエリを作ると、種別名を設定しても、データ自体が1件も表示されなくなりました。(実データはあります)種別2のCDや名称を削除すると、通常通り全てのデータと名称が表示されます。 <解決希望項目> 1)上記のように、1つのファイルに同じ項目を2つリレーションシップで設定する事は可能でしょうか? 2)また、後半のように2つのコードそれぞれの名称を表示させる事は、通常の方法では無理のようですが、どうすればいいのでしょうか? 期日が迫っているのですが、基本的な部分でゆきずまっているもので、どうぞよろしくお願いします。m(__)m

  • 選択クエリで空欄のテーブルがあっても表示したい

    選択クエリで4つのテーブルをひとつにしています。 テーブルA.B.C.Dとすると A.Bまではデータが入力されていて、C.Dには入っていない場合、すべてのデータがデータシートに表示されなくなってしまいます。 データが入っていないテーブルがあっても、A.Bまでのデータは表示されるようにしたいのですが・・・。 リレーションシップのやり方が悪いのか・・・根本的に間違っているのか。なにか良い方法はありませんでしょうか?

  • アクセスで文字列結合し、定型文字を表示させたいのですが、、、

    アクセスのクエリーで文字の結合をしたときに (項目:  ) というのを表示させるようにしたいのですが どうすれば良いのでしょうか? フィールド→ A範囲: [B範囲]&[C項目] この[C項目]に (項目:  )というのを表示させ (項目:C項目)というように表示したいのですが できません、、、。 A範囲というフィールドに    B範囲 +(項目: C項目) どう入力すればできるでしょうか? どなたか教えてください。

  • accessで複合キーの処理が遅い

    あるマスタデータと明細データがありキーとなる列が2つ(2列)あります マスタデータのテーブルのキー列のA列、B列を主キーとして定義し 明細データのテーブルのキー列のA列は重複ありのインデックス B列も重複ありのインデックスとしてそれぞれ設定しています その2つのキーをクエリで結合して更新する更新クエリを作成しているのですが データ量が多くなってくると非常に反応が遅くなります 同じデータ量で 2つのキー列の値をあるひとつの列に結合した値を格納しその結合列で 更新クエリを作成したところ高速に処理が動作しましたので 複合キーだった場合の処理速度が遅いのだと推測しました (※C列にA列 & B列 の結合した値を格納してC列をキーにするという事です) accessで複合キーの更新クエリを作成する場合、高速に動作させるには なにか工夫が必要なのでしょうか? アドバイス下さい 上記のように複数のキーをひとつの列に結合する工夫で早くはなったのですが・・・ 余分なデータを格納する事になるので非常に容量が大きくなってしまう問題があります

  • 表の結合(性能)

    2つのテーブルを(内部)結合させる場合、 INNER JOINによる結合と WHERE句に結合条件を記述する2通りの方法が あると思いますが、どちらが早いのでしょうか? なお、Oracle9i、ルールベースにて構築されています。 テーブルの内容、SQL文は下記のとおりです。 ご教授よろしくお願いします。 ■表 A 項目A-1 ・・・PRIMARY KEY1、INDEX1 項目A-2 ・・・PRIMARY KEY2、INDEX2 項目A-3 ・・・PRIMARY KEY3 項目A-4 ■表 B 項目B-1 ・・・PRIMARY KEY1、INDEX1 項目B-2 ・・・PRIMARY KEY2、INDEX2 項目B-3 ・・・PRIMARY KEY3 項目B-4 ※項目A-1と項目B-1にて結合。  項目A-2が"01"と等しいレコード。 表Aのレコード件数>表Bのレコード件数 【WHERE句にて結合】 SELECT * FROM A,B where A.項目1 = B.項目1 and A.項目2 = '01' 【INNER JOINにて結合】 SELECT * FROM A INNER JOIN A ON A.項目1 = B.項目1 AND A.項目2 = '01'

専門家に質問してみよう