• ベストアンサー

2つの表を統合するVBAマクロについて(2)

marsahの回答

  • marsah
  • ベストアンサー率42% (3/7)
回答No.2

こんばんわ。 私はVBAは苦手なので、VBA無しで無理やりやる方法を考えてみました。 かえって面倒かもしれませんし、検証していません。(笑) 1. sheet1 と sheet2 においてフィールドAが共通のレコードを選択  クエリのデザインビューでsheet1とsheet2を、フィールドAで結合し、結合のプロパティは“両方のフィールドが同じ行だけを含める”とします。 選択フィールドは、sheet2.[主キーフィールド名] , sheet2.A , sheet2.B , sheet2.C , sheet2.D , ... とします。 このクエリをqueryXとします。 2. sheet1のフィールドAにあって sheet2のフィールドAに無い値を持つレコードを選択  データベースウィンドウでオブジェクトにクエリを選び、新規作成を押して不一致クエリウィザードを選びます。 最初にqueryXを選び、比較するものにsheet1を選びます。 このクエリをqueryYとします。 3. queryXとqueryYをサブセット化する  sheet1とsheet2に同じ値の主キーが含まれている可能性があるときは、どちらかのクエリに細工します。 例えば、元の主キーフィールドを非表示にして、新たなフィールドに“新主キーフィールド名: [主キーフィールド名]+10000”のようにして主キーの代わりとし、sheet1とsheet2に同じ値の主キーが含まれないようにします。 4. queryXとqueryYを連結する  デザインビューでクエリを作成する->テーブルやクエリを追加せず閉じる->SQLビュー とします。 SELECT [queryX].[主キー用フィールド名] , [queryX].[B] , [queryX].[C] , [queryX].[D] , ... FROM [queryX] UNION ALL SELECT [queryY].[主キー用フィールド名] , [queryY].[B] , [queryY].[C] , [queryY].[D] , ... FROM [queryY] と直接入力し、queryZとします。 5. テーブルを作成する  新規クエリでqueryZの全フィールドを選択し、クエリの種類->テーブル作成を選択し、!を押します。 [主キーフィールド名]は該当するフィールド名に置き換えてください。 , ... の意味は、その他の必要なフィールド全てを、ということです。 無視されたデータは、2.の応用->5.で可能です。 お邪魔しました。

kiroro302
質問者

お礼

marsahさん、ご回答ありがとうございます。この処理はACCESSでの処理ですね。私も以前からデータベースを使用して見たいと思っておりましたので大変参考になります。今回の質問での処理は基本的にExcelでのことを想定しておりましたので、時間をとってACCESSでも挑戦してみようと思います。実は処理するデータが大量なので、データの加工をする際にもデータベースを使用した方がいいのか、社内でも案件が出ているところなのです。データに対する処理の使用が複雑になるたびにデータベースソフトの方がいいのかなぁ等と考えてしまいますが、データが大量・処理が複雑=データベースの方がよい、ということでもなさそうなので、安易に転換してしまっていいものかとも思っております。でも今回のmarsahさんのご回答はデータベースに挑戦してみようかな、という気持ちにさせていただきましたので、お力をお借りすることがあるかもしれません。その際にはどうぞよろしくお願いいたします。

関連するQ&A

  • 2つの表を統合するVBAマクロについて

    2つの表を統合したいのですがどなたかお知恵をお貸しください。 (例) sheet1に古い表、sheet2に新しい表があります。それぞれの表はこんな感じです。 (sheet1)   A    B    C    D sony001 男  東京 Japan sony002 女  埼玉 Japan sony003 女  千葉 U S A sony005 男  大阪 Canada sony007 女  東京 Russia (sheet2)   A    B   C   D sony001 男  東京 Japan sony002 女  埼玉 Japan sony002 女  千葉 U S A sony004 男  大阪 Canada sony005 女  東京 Russia sony006 女  東京 Russia sony007 男  東京 U S A sony007 女  東京 Russia これらの表をsheet3にどのように統合したいかといいますと、下記のようは統合表を作成したいのです。 (sheet3 統合表)   A    B    C   D sony001 男  東京 Japan sony002 女  埼玉 Japan sony002 女  千葉 U S A sony003 女  千葉 U S A sony005 女  東京 Russia sony007 男  東京 U S A sony007 女  東京 Russia 質問の長さが800字を超えてしまいますので、この統合表を作成するための手順を「2つの表を統合するVBAマクロについて(2)」で補足したいと思いますのでどうぞよろしくお願いいたします。

  • EXCLEのマクロ 2つのシートを統合する方法

    下記のことを行いたいのです。 教えていただけないでしょうか。 下記2つのシートをA列をキーにして sheet1のあ、b、c列のデータに sheet2のc、d列を 統合して、sheet1のdれつ e列に統合して5列のデータを作りたい a列とb列のデータは基本同じですが、スペースが入っていたり 違う場合もある。B列はsheet1のデータを採用 sheet2は不要 ・sheet1 a列 b列 C列 123 ああ 123456 456 いい 125456 789 うう 12344556 1234 ええ 12345678 4567 おお 123456456 8945 かか 1234567844 ------------------- ・sheet2 a列 B列 C列 D列 123 ああ 03-5212-0000 東京都○ 456 いい 06-5212-0000 大阪府○ 789 うう 044-5212-0000 神奈川県○ 1234 ええ 045-512-0000 横浜市○ 4567 おお 043-212-0000 埼玉県○ 8945 かか 03-5212-0000 東京都○

  • Excelの複数の表を自動的に統合したい

    Excel初心者です。現在「Sheet1」「Sheet2」それぞれに表を作成しています。 これらのデータを自動的に統合して「Sheet3」に新しい表を作成することは可能でしょうか? 「Sheet1」「Sheet2」の表には日々手動でデータを入力しているので、それに伴って「Sheet3」の表も自動的に更新されていくようにしたいのです。 もし方法がありましたらご教授をお願いいたします。

  • エクセルで複数シートからデータを統合したグラフを作る

    エクセル2000を使用しています。 複数のシートの表からデータを統合したグラフを作りたいのです。 たとえば シート1:A 12 B 5 C 7 シート2:A 10 B 5 C 4 というデータから シート3で2つの表を統合したグラフ(たとえば積層グラフ:A  12と10  B・・・)をつくりたい。 但し、表は1つには統合しません。 また、データはそれぞれで、合計ではありません。 データの範囲の指定の仕方がわかりません。(たぶんここでは?) 

  • 表の統合

    エクセルで表を作るときの簡単な方法を探しています。 今、下のようなデータ1とデータ2があります。(ほんとうはたくさんあるのですが、省略させていただきます) そのデータを統合してtotalというデータを作る場合、どのような方法があるでしょうか。 D1   D2 名前 出身 頻度 名前 出身 頻度 山田 東京 3 山田 東京 2 伊藤 埼玉 1 山田 埼玉 1 梅田 大分 2 伊藤 埼玉 2      total 名前 出身  D1 D2 山田 東京 3 2 伊藤 埼玉 1 2 梅田 大分 2 0 山田 埼玉 0 1

  • Excelで統合の機能を使いたい

    Excelで統合の機能を使ってデータを集計したいのです。 例えば、Aさんの売上表をsheet1に作成します。 売上表は、項目やセル位置に若干の違いはあるものの、 似たような作りの表なので、 Aさんのシートを元にして、シートコピーを行い、 コピーしたシートに、Bさんの売上表、Cさんの売上表を作成しました。 そして、集計するためのシートにて、統合を選択しました。 集計方法を「合計」、 統合元範囲をそれぞれ「Aさんのシートにある表範囲」 「Bさんのシートにある表範囲」「Cさんのシートにある表範囲」を追加し、 統合の基準で「上端行」「左端列」にチェックを入れ、OKを押しました。 しかしその結果、合計行が2つでてしまい、正しく集計が行えませんでした。 どこか、やり方が間違っているのでしょうか? 試しに、シートコピーを行わないで各シートごとに表を1から作成し、 統合を実行したところ、ちゃんと合計行も1つで、正しい集計結果が得られました。 もしかして、統合の時には、表をコピーしてはいけないのでしょうか? 以前にも、1から表を作った場合と、シートコピーをした場合とで、 集計結果に、「項目の並び順の違い」がでたことはあったのですが、 そのときは並び順だけが違い、集計結果はあっていたので、 特に気にしていませんでした。 なぜ、こういう結果になってしまうのか、 どなたか、ご存知の方いらっしゃいましたら、 アドバイスいただけたらと思います。 よろしくお願いします。

  • VBAで表を作りたいのだけれど、、

    Excel2007VBAについての質問です。 結構膨大な量のデーターを検証しないといけないので、 お粗末ながらのマクロorVBAを作りたいのですが、 付け焼刃で参考書開いてもよくわからない感じになっています。 やりたいことを簡単に言うと、 Sheet1とSheet2を準備して、Sheet1のA1に値を入れるとB1に計算値が出るようなシートを作りました。 (1)Sheet1のA1B1をコピーして、Sheet2のA1B1にペーストしました。 (2)Sheet1のA1に別の値を入れB1の値も変化しました。 (3)A1B1をコピーして、Sheet2のA2B2にペーストしました。 というようにどんどんコピペで Sheet2に表を作りたいのですがうまくいきません。 どなたか、お力かしてください。。

  • VBA教えてください。(表の作成)

    いつもお世話になっております。 非常に手間となっている作業があり、VBAにしたら楽だろうと思うのですが、自分では作成できずにいます。複雑な内容になるのですが、教えていただける方、お願い致します。 Sheet1に表があり、Sheet2に必要事項のみを抜き出した表を作成したいです。 Sheet1は、横一行が1製品分の情報で、それが、数百行あります。2行目が項目名です。 V列が製品種類、W列が製品名、AV列に番号があります。番号は数字のときも、カナのときもあります。 Sheet2は、V列(製品種類)、W列(製品名)で分類した表になっていて、AV列(番号)を列記したいです。 一枚に印刷したいため、入り組んだ表になります。 この表は、内容が追加されたりと、流動性があるため、それに対応できるようにもしたいと考えています。 今考えていたのは、 Sheet2の右のスペースに、表にするための情報入力するスペースを作り、 Q(通称、Sheet1の表にはない、特に意味はないです)、R(製品種類)、S(製品名)、T(Sheet2の入力箇所を指定) RとSの内容でsheet1のオートフィルタ、 Sheet1のAV列(番号)をコピーして、sheet2のTで指定したところに貼り付ける。 それを上から順に繰り返す。というものです。 ※1 RとS→Sheet1のAV(番号)をT(入力箇所)に格納ですが、T(入力箇所)に入るRとSは1つとは限らず、2、3種類あるものもあります。 ※2 同じT(入力箇所)のなかで、AV(番号)が重複する場合もあり、その際は、1回のみ入力したいです。  →例えば、R(ノート)&S(A社用)(T(N6)に入力)でAVが7000、R(ノート)&S(A社用)(T(N6)に入力)でAVが7000 この場合は7000、7000ではなく、7000にしたいです。 さらに、これを1日数回行います。 Sheet1の情報は、1日の中で下に追加されていき、削除されることも、順番が入れ替わることもありません。1日分の情報をまとめて1枚にしたいです。あとから同じ番号が出てくることもありません。 また、どこから追加されたのかが分かるようにもしたいのです。分かるようにというのは、太い罫線が入ってもいいですし、書体が変わってもいいですし、色が変わってもいいです。 例えば、1回目作成した際に(イ、エ1、ナ、タ1、タ2)のとき、2回目は(イ、エ1、ナ、タ1、タ2//ナ1、ミ、ヤ)というような感じです。3回目があっても追加です。 前回の内容は残す必要はなく、1日のなかで上書きで大丈夫です。日が変わると、Sheet1も一度空になり、その際にSheet2のデータもクリアにしますが、それは自分で作成できそうです。 どうぞよろしくお願い致します。

  • VBAでの差分比較のマクロの組み方について

    VBA初心者です。 シートCの開始ボタンを押下すると、シートAの表とシートBの表のセル内の数式を取得・比較して、シートCの表に差分箇所に色が付く。 ↑のような形で差分比較をするマクロを組みたいのですが、ネットで調べてもうまく作ることができませんでした。 組み方は色々あるかと思いますが、その一例をお教えいただけると幸いです。 よろしくお願いいたします。 (補足) シートAの表とシートBの表の形式は同一で、例えばそれぞれセルの(1,1)〜(150,50)まであるようなイメージです。

  • Excel VBA で表の参照先を一気に変更させるには?

    複数のsheetに規則正しくデータと表が配置されているとします。で以下のようなデータの縦棒の表があるとします。 *データ* A B 1 4 2 2 3 8 4 5 5 1 『グラフ』 - 『元のデータ』で参照先を見ると… =Sheet1!$A$1:$B$6 追加で 例>+5件のデータが加わったとします。 ※一部のsheetだけではなく、全てのsheetで追加です。 *データ追加* 6 3 7 3 8 1 9 8 10 7 グラフの参照先 =Sheet1!$A$1:$B$11 複数のsheetにまたがると、手作業で追加データを追加していて大変手間が食ってしまい困っています。Excel VBA で表の参照先を一気に変更させる方法ありますでしょうか? アドバイスよろしくお願い致します。