Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(指定なし : 指定なし)
項目を合わせて転記したい。
投稿日時: 19/02/11 06:42:08
投稿者: ど素人

ブックの中に「DATA」と「sheet1」と「sheet2」の3つのシートがあります。
「DATA」A列に商品コード B列に商品名 C列に品番 D列に単価 E列に区分 と項目があります。
Sheet1には A列に商品コード B列に商品名 C列に品番 D列に単価 E列に区分
Sheet2に A列商品名 B列に商品コード C列に単価 D列に品番 E列に区分
というようにデータが入っています。
それをSheet1とSheet2のデータを「DATA」のシートへ既に存在する一番下の行へ項目を合わせて
転記したいのですが方法を教えてください。
実際には項目がもう少し多いので、コピペするには誤操作が発生する危険性が
あるので、VBAで実行したいですが、どなたか教えてください。
マクロはマクロの記録を使った程度のど素人です。
以上よろしくお願いします。

回答
投稿日時: 19/02/11 08:22:23
投稿者: simple

作業をマクロ記録すればマクロになると思いますが、別の方法を示しましょう。
フィルタオプションは使ったことがありますか?
これを使うと、見出し設定に従って、任意の列順序に並び替えることができます。
 
(1)
・作業用のシート(Sheet3としましょう)を使います。
・Sheet3の一行目に見出し項目をセットしておきます。
  その際、DATAシートの見出しとまったく同じ順序にしておきます。(ここがキモ)
 
(2)フィルタオプションを使って、
Sheet2のデータをSheet3に転記すると、
コピー先の見出しに従って、
順序を入れ替えてコピーしてくれます。
 
手順は以下。
フィルタオプションの指定

   ・「抽出先」は、「指定した範囲」オプションを選択
    ・「リスト範囲」 は、Sheet2の表の範囲
    ・「検索条件範囲」は、無指定でOKです。
    ・「抽出範囲」    は、Sheet3の一行目(見出しの範囲)
    ・「重複するレコードは無視する」のチェックは不要
とします。
 
(3)その作業用シートから、DATAシートに単純にコピーすればよいでしょう。
(4)Sheet1は、そのままの順序ですか?単純にコピーすればいでしょう。
 
【補足】
マクロ記録をすれば、コードが得られますが、
ひとつだけ注意点があります。
コピー先のシートをアクティブにした状態で
フィルタオプションの操作を始めて下さい。
 
まずは、マクロ記録をとってみてください。
 
# データソースとか、作業日時の列を設けたらよいと思いますが、それは次のステップで。

投稿日時: 19/02/11 09:21:20
投稿者: ど素人

simpleさんありがとうございました。
大変参考になりました。
この機能は知りませんでした。
活用できるシーンが広がりました。
VBAでFIND関数を使って項目を探して何行目に位置しているか検索して
項目を合わせる方法をイメージしてVBAをかじりかけたのですが、
項目が20個もあるので、すぐにあきらめていました。
この方法なら手軽に出来そうです。
ありがとうございました。