• ベストアンサー

エクセルマクロについての質問

エクセルで以下のことが行いたいのですがVBのマクロを 利用すればよいのでしょうか? とても長い説明です。わかりにくいと思います。 マクロは初心者ですのでよろしくお願いします。 行いたいことは二つのエクセルデータを一つにしたいということです。 abc1.xlsの同じ名前がある行とacb2.xlsの同じ名前がある行の一部の 内容をコピーしてabc1.xlsへ同じ名前がある内容へ追加したいのです。 1.【abc1.xls】と【acb2.xls】という二つのデータがあります。 2. すべての作業は【acb2.xls】のある一部の内容を【abc1.xls、Sheet1】へコピーしたい。 3.【abc1.xls、Sheet1、A列】と【acb2.xls、Sheet1、AB~AP列】にはまったく同じ名前があります。 4.【abc1.xls、Sheet1、A列】とまったく同じ名前がある【acb2.xls、Sheet1、AB~AP列】を参照して  【abc1.xls、Sheet1、M列】に列を1つ追加して【acb2.xls、Sheet1】の【AB~AP】の同じ名前をコピーしたい。   ただし必ずしも同じ名前があるとは限らない。   また、万が一同じ名前がacb2.xlsに二つ存在する場合はabc1.xlsに行を追加し内容をコピーできるようにしたい。   (上書きされないようするため) 5. 上に続き【abc1.xls、A列】とまったく同じ名前がある【acb2.xls、AB~AP列】を参照して  【abc1.xls、Sheet1、M列】に列を2つ追加して【acb2.xls、Sheet1】【AとH列】をコピーして貼り付けたい。 6.【abc1.xls、Sheet1、A列】と【acb2.xls、Sheet2、U列】にはまったく同じ名前があります。 7.【abc1.xls、A列】とまったく同じ名前がある【acb2.xls、Sheet2、U列】を参照して  【abc1.xls、Sheet1、M列】に列を1つ追加して【acb2.xls、Sheet2】の【U】の同じ名前のみコピーしたい。   ただし必ずしも同じ名前があるとは限らない。   また、万が一同じ名前がacb2.xlsに二つ存在する場合はabc1.xlsに行を追加し内容をコピーできるようにしたい。   (上書きされないようするため) 8. 上に続き【abc1.xls、A列】とまったく同じ名前がある【acb2.xls、Sheet2、U列】を参照して  【abc1.xls、Sheet1、M列】に列を2つ追加して【acb2.xls、Sheet2】【OとR列】をコピーして貼り付けたい。 9.【abc1.xls、Sheet1、A列】と【acb2.xls、Sheet3、S列】にはまったく同じ名前があります。 10.【abc1.xls、A列】とまったく同じ名前がある【acb2.xls、Sheet3、S列】を参照して  【abc1.xls、Sheet1、M列】に列を1つ追加して【acb2.xls、Sheet2】の【S】の同じ名前のみコピーしたい。   ただし必ずしも同じ名前があるとは限らない。   また、万が一同じ名前がacb2.xlsに二つ存在する場合はabc1.xlsに行を追加し内容をコピーできるようにしたい。   (上書きされないようするため) 8. 上に続き【abc1.xls、A列】とまったく同じ名前がある【acb2.xls、Sheet2、S列】を参照して  【abc1.xls、Sheet1、M列】に列を2つ追加して【acb2.xls、Sheet3】【OとR列】をコピーして貼り付けたい。 以上よろしくお願いします。

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

  • ベストアンサー
  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.1

Excelだけでやろうとしても「出来るけど面倒」です。 こういう「一致項目を探して、項目(列)を足したり、行を足したりする」のには、Accessの「クエリ」を使用します。 基本的には、以下のようになります。 1.2つの表をCSVで書き出して、それぞれをAccessのテーブルとして読み込む。 2.Accessの「クエリ」のデザイナで、2つの表を結合し、結合規則を「表1の全件データと、表2の中で指定の項目が一致するデータ」にして、クエリを作る。 3.クエリの結果を表3に書き出す。 4.表3をCSVで書き出す。 5.書き出したCSVをエクセルに読み込む。 結合条件が複雑な場合は、上記2~3の工程を、以下のようにします。 1.表1と表2を、条件その1で結合し、クエリの結果を表3に書き出す。 2.表3と表2を、条件その2で結合し、クエリの結果を表4に書き出す。 3.表4と表2を、条件その3で結合し、クエリの結果を表5に書き出す。 4.表4と表2を、条件その4で結合し、クエリの結果を表5に書き出す。 5.以下、全部の条件について繰り返す。 「一致比較の項目が異なるだけで、条件が同じ」と言う場合は、1度使ったクエリを再利用して書き直しすれば良いでしょう。 ともかく、全部をエクセルでやろうとするのは面倒で馬鹿らしいです。

aisu_san3
質問者

お礼

回答ありがとうございます。 アクセスを利用すればできるんですね。チャレンジしてみたいと思います。 また何かありましたらよろしくお願いいたします。

その他の回答 (1)

noname#62235
noname#62235
回答No.2

質問が、このようなことをエクセルのマクロで実現できるか、ということであれば、答えは、出来るでしょう、ということになりますが。 説明がわかりにくいのは仕方ないとして、ここ(OKWave)で意味のある回答を得るにしては、少し欲張りすぎな気がします。 基本的なロジックのところだけ質問して、後は、自分で応用するという形に質問を書きなおされてはどうでしょうか? たとえば、abc1.xlsとacb2.xlsのA列を比較して、同じ場合はacb2.xlsのB列をabc1.xlsのM列の横に追加する、という程度の質問なら、回答も出来ますが・・・?

aisu_san3
質問者

お礼

回答ありがとうございます。 そうですね。他の方法を試してみたいと思います。

関連するQ&A

専門家に質問してみよう